linux下的权限问题
转自:http://www.lslnet.com/linux/dosc1/03/linux-123273.htm
linux下的权限问题
在linux中的权限,是linux中一个比较有趣的问题,你可以使用ll或者ls -l就可以看到。一下是我电脑上的东东。
# ll
total 69840
-rw-r--r-- 1 root sys 19 Jan 1 1970 bootconf
drwxr-xr-x 5 root sys 3072 Jan 8 1970 build
drwxrwxrwx 5 root sys 1024 Jan 3 1970 dlkm
drwxrwxrwx 5 root sys 1024 Jan 3 1970 dlkm.vmunix.prev
-rw-r--r-- 1 root sys 2244 Mar 17 02:22 ioconfig
-r--r--r-- 1 root sys 82 Jan 1 1970 kernrel
drwxr-xr-x 2 root sys 1024 Mar 17 02:27 krs
drwxr-xr-x 2 root root 1024 Mar 17 02:22 krs_lkg
drwxr-xr-x 2 root root 1024 Mar 17 02:27 krs_tmp
drwxr-xr-x 2 root root 65536 Jan 1 1970 lost+found
-rw------- 1 root root 12 Mar 17 02:22 rootconf
-rw-r--r-- 1 root sys 1145 Jan 3 1970 system
drwxr-xr-x 2 root sys 1024 Jan 1 1970 system.d
-rw-r--r-- 1 root sys 992 Jan 3 1970 system.prev
-rwxr-xr-x 1 root sys 14319984 Jan 3 1970 vmunix
-rwxr-xr-x 1 root sys 21061664 Jan 3 1970 vmunix.prev
1、umask值:它定义了用户新建文件以及文件夹的所具有的权限。
这同windows里面的权限继承有点相似。
umask的配置/etc/profile
umask的值的算法:这可能是很多linux爱好者比较迷惑的地方。我在这里就贡献一个我的自己总结的一个算法,有不正确的请大家一起来探讨一下。
umask的值+chmod文件的值=666
umask的值+chmod文件夹的值=777
比如你新建了一个文件,myfile,你的umask的值是022那么这个文件具有的权限是多少乃?是644。哈哈,请注意,凡是具有可执行权限的内容都要使用第二个公式。
2、权限位和修改
rwx rwx rwx
所有者 所有者所在的组 其他用户
如果用数字表示,r=4,w=2,x=1。r是读的意思,w是写的意思,x是执行。
你可以使用命令来修改权限。一般情况下,这个命令只能有root来执行。请注意。
chmod [参数] [模式] <文件或者目录>; /符号标记模式
[参数] -c 只有在文件的权限确认改变才进行详细说明
-f 不输出权限不能改变的文件的错误
-v 详细说明权限的变化
-r 改变目录及其子目录的文件的权限(比较有用)
[模式] [ugoa] [+-=] [rwxXs]
u:文件的所有者
g:所有者所在的组
o:其他的组
a:其他的用户
+:增加
-:去掉
=:指定文件的权限
r:是读的意思
w:是写的意思
x:是执行
X:只有目标文件对某些用户是可执行的火灾该目标文件是目录是才追加X属性。
t:T位,拒绝删除的权限位
s:设置SUID,SGID,指拥有这样的权限的可执行程序当某一用户执行的时候拥有属主或者属主所在的组的权限。
当然,你也可以使用数字来表示权限,用数值请注意了
XYZ,四个位
x代表文件的类型,你只有通过mc才能看到。
y代表SUID,SGID,T位,其中SUID=4,SGID=2,T位=1
Z代表权限位r=4,w=2,x=1
比如现在我要修改一个文件的权限,让它的权限为属主拥有所有权限,属主所在的组拥有读和写的权限,其他用户拥有读的权限,并防止其他用户删除我的文件。那么执行
#chmod 1764 myfile
用字符表示就是
#chmod u+rwx,g+rw,o+r,a+T myfile
3、修改属主和属主所在的组
使用chown来修改
比如你要将myfile的属主修改为nicry的,那么请使用
#chown nicry myfile
如果你要将文件的属主所在的组改为sohubbs组,请使用
#chown .sohubbs myfile
和在一块就是
#chown nicry.sohubbs myfile
注意,该命令为root专用。