Linux文件特殊权限 – skyWalker

对Linux文件的一般权限,即rwx已经有些了解了,用数字表示分别为4,2,1。在学习Hadoop的LinuxTaskController时遇到了一些特殊权限的设置,虽然之前已经了解这些特殊权限,大体上指的是临时获得文件所有者或者用户组的权限,这样如果该文件为可执行文件,则可以对文件所有者或者用户组的资源进行一些操作。

比如,使用命令ls-al 查看/etc/passwd文件,可以发现该文件的所有者为root且只有root用才可以对该文件进行写操作,那为什么其他用户可以通过/usr/bin/passwd命令将自己的密码写入/etc/passwd文件中呢?对/usr/bin/passwd执行ls –al命令的结果如下:

[gpadmin@pgmdw~]$ ls -al /usr/bin/passwd

-rwsr-xr-x 1 root root 27936 Aug 3 2010/usr/bin/passwd

可以发现除了root用户外的其他用户对该文件拥有执行(x)权限,并且设置了s权限,这样其他用户就执行该文件时,就获得了root用户的权限,所以就可以对/etc/passwd进行写入操作了。下面就更进一步地学习一下这些特殊权限以及如何设置特殊权限。

s或者S用于设置SUID和SGID,使文件获得文件拥有者和用户组的权限。SUID仅对二进制文件有效,不能用在shell脚本上,且对目录是无效的。

t或者T设置粘贴位(Sticky),只对目录有效,对文件无效。在设置了t/T的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时,只有文件拥有者与root才有权力删除

SUID、SGID、Sticky用数字表示分别为4、2、1,用字母表示时会占用x位置,这也导致了有大小写之分。具体来讲就是如果文件没有设置x权限,则特殊权限为大写字母:S或者T,若设置了x权限则特殊权限为小写字母:s或者t。

接下来通过一些具体的例子,演示特殊权限的含义以及如何设置。第一个例子是大小写的区别。

[gpadmin@pgmdw ~]$ ls -al test

-rw-rw-rw- 1 gpadmin gpadmin 0 Mar 14 11:08 test

[gpadmin@pgmdw ~]$ chmod a+s test

[gpadmin@pgmdw ~]$ ls -al test

-rwSrwSrw- 1 gpadmin gpadmin 0 Mar 14 11:08 test

[gpadmin@pgmdw ~]$ chmod a+x test

[gpadmin@pgmdw ~]$ ls -al test

-rwsrwsrwx 1 gpadmin gpadmin 0 Mar 14 11:08 test

由上面的代码示例可以验证文件不具有执行权限(x)时,s为大写字母(S),当赋予文件执行权限时,s变为小写字母。如果用数字修改权限该如何进行呢?假设test文件还是不具有执行权限,即:

[gpadmin@pgmdw ~]$ ls -al test

-rw-rw-rw- 1 gpadmin gpadmin 0 Mar 14 11:08 test

现在给文件添加SUID,即特殊权限为4,其余不变,应该为4666:

[gpadmin@pgmdw ~]$ chmod 4666 test

[gpadmin@pgmdw ~]$ ls -al test

-rwSrw-rw- 1 gpadmin gpadmin 0 Mar 14 11:08 test

再添加SGID,特殊权限此时为6,应该为6666:

[gpadmin@pgmdw ~]$ chmod 6666 test

[gpadmin@pgmdw ~]$ ls -al test

-rwSrwSrw- 1 gpadmin gpadmin 0 Mar 14 11:08 test

再为文件赋予执行权限x,应该为6776:

[gpadmin@pgmdw ~]$ chmod 6777 test

[gpadmin@pgmdw ~]$ ls -al test

-rwsrwsrwx 1 gpadmin gpadmin 0 Mar 14 11:08 test

再次的大写字母变为小写字母了。

第二例子是如何验证数字表示的权限与字母表示的权限是一致的。假如用数字表示的权限为6050,那对应的字母表示是什么呢?第一数字个表示的是特殊权限6 = 4 + 2,即同时设置了SUID和SGID,第二个数字表示的所有者权限为0,字母表示为—,因为没有设置x权限,特殊权限表示为大写字母S,在第三个数字为5 =4 + 1,设置了用户组权限为读(r)和执行(x),特殊权限表示为小写字母s,第四个数字为0,字母表示为—。综合起来即为—Sr-s—,用实际例子验证一下:

[gpadmin@pgmdw ~]$ ls -al test

—Sr-s— 1 gpadmin gpadmin 0 Mar 14 11:08 test

通过上面的学习,现在已经可以进行一些特殊权限的设置,读懂文件特殊权限的含义,至于何时设置特殊权限则要根据结合实际情况决定。

不敢面对自己的不完美,总是担心自己的失败,

Linux文件特殊权限 – skyWalker

相关文章:

你感兴趣的文章:

标签云: