-rw-r--r-- 1 root kangym 0 Dec 16 08:56 myfile
- |
rw-r--r-- |
1 |
root |
kangym |
0 |
Dec 16 08:56 |
myfile |
文件类型 d 目录 l 符号文件 s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 - 普通文件 |
权限 文件属主的权限+文件属主缺省组权限+系统中其他用户权限 r 读权限(4) w 写权限(2) x 执行权限(1) |
文件硬链接数目 |
文件属主 |
文件属主所在缺省组 |
文件大小(不是K字节) |
文件更新时间 |
文件名 |
改变文件权限
suid/guid
chown/chgrp
umask
符号链接
/*-------------------------------------- 改变文件权限命令 --------------------------------------*/
符
号模式
chmod [who] operator [permission] filename
<!--EndFragment-->
operator [+ 增加权限][- 取消权限][= 设定权限]
permission [r 读权限][w 写权限][x 执行权限][s 文件属主和组Set-ID][t 粘贴位*][l 给文件加锁,其他用户无法访问]
在列文件或目录时,有时会遇到“t”位。“t”代表了粘贴位。如果在一个目录上出现“t”位,这就意味着该目录中的文件只有其属主才可以删除,即使某个同组用户有和属主同等权限。不过有的系统在这一规则上并不十分严格。
下边是使用chmod的例子,我们假定myfile文件最初具有这样的权限rwxrwxrwx
chmod a-x myfile —> rw-rw-rw- 收回所有用户的执行权限
chmod og-w myfile —> rw-r--r-- 收回同组用户和其他用户的权限
chmod g+w myfile —> rw-rw-r-- 赋予同组用户写权限
chmod u+x myfile —> rwxrw-r-- 赋予文件属主执行权限
绝
对模式
chmod [mode] file
其中mode是一个八进制数。
0400 文件属主可读 0200 文件属主可写 0100 文件属主可执行
0040 同组用户可读 0020同组用户可写 0010同组用户可执行
0004 其他用户可读 0002 其他用户可写 0001 其他用户可执行
目录的读权限意味着可以列出其中的内容,写权限意味着可以在该目录下创建文件,执行权限意味着可以搜索和访问该目录。
如果把同组用户或其他用户针对某一目录的权限设置为--x,那么它将无法列出该目录中的文件。如果该目录中有一个可执行的脚本程序,只要用户知道它的路径和文件名,仍然可以执行它。用户不能够进入该目录并不妨碍它的执行。
目录的权限将会覆盖此目录下文件的权限。
/*-------------------------------------- 改变文件权限命令 --------------------------------------*/
/*-------------------------------------- suid/guid --------------------------------------*/
suid意味着如果某个用户对属于自己的shell脚本设置了这种权限,那么其他用户在执行这一脚本的时也会具有其属主的相应权限。于是,如果跟用户的某一个脚本设置了这样的权限,那么其他登录的普通用户在执行它的期间也同样具有根用户的权限。同样的原则也适用于guid,执行相应脚本的用户将具有该文件所属用户组中用户的权限。
有相当一些UNIX命令也设置了suid和guid,可以进入/bin或/sbin目录执行一下命令:
ls -l | grep '^...s' 查找suid文件
ls -l | grep '^...s..s' 查找suid和guid文件
如果希望设置suid,那么就将相应的权限位之前的那一位设置为4,如果希望设置guid,那么就将相应的权限位之前的那一位设置为2,如果希望两者都置位,则设置为4+2。
例子:
chmod 4755 —> rwsr-xr-x 文件被设置了suid,文件属主具有rwx权限,所在其他用户具有rx
chmod 6711 —> rws--s--s 文件被设置了suid和guid,文件属主具有rwx权限,所在其他用户具有x
chmod 4764 —> rwsrw-r-- 文件被设置了suid,文件属主具有rwx权限,同组具有rw,其他具有r
/*-------------------------------------- suid/guid --------------------------------------*/
/*-------------------------------------- chown和chgrp --------------------------------------*/
chown -R -h owner file
-R 表示对所有子目录下的文件也进行同样的操作
-h 表示在改变符号链接文件的属主时不影响该链接所指向的目标文件
举例:
ls -l
-rw-r--r-- 1 root kangym 0 Dec 16 08:56 myfile
chown kangym myfile
-rw-r--r-- 1 kangym kangym 0 Dec 16 08:56 myfile
文件myfile的所有权现在由root交给kangym
chgrp admin myfile
-rw-r--r-- 1 kangym admin 0 Dec 16 08:56 myfile
用户kangym把文件myfile的所属组由kangym变更为admin
想知道自己所属于哪些用户组,可以使用group或id来查询。
为了找出其他用户所属哪些组,使用命令:group <username>
/*-------------------------------------- chown和chgrp --------------------------------------*/
/*-------------------------------------- umask --------------------------------------*/
当最初登录到系统中时,umask命令确定了用户创建文件的缺省模式。这一命令实际上和chown相反。你的系统管理员必须要为你设置一个合理的umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。
一般来说,umask命令是在/etc/profile文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。
如果希望永久性的设置自己的umask值,那么就把它放在自己的$HOME目录下的.profile或.bash_profile文件中。
计算umask:只要记住umask是从权限中“拿走”相应的权限位即可。
/*-------------------------------------- umask --------------------------------------*/
/*-------------------------------------- 符号链接 --------------------------------------*/
软链接和硬链接,软链接其实是一个指向文件的指针。
ln [-s] source_path target_path
其中的路劲可以是目录或文件
/*-------------------------------------- 符号链接 --------------------------------------*/
who [u 文件属主][g 同组用户][o 其他用户][a 所有用户] 号模式
<!--EndFragment-->