2023-05-14 08:04:28 阅读( 3400)
今天一直在弄Samba服务的配置,深深的感受到权限控制的困难,文件权限的机制是Linux系统中的一大特色,除了我们现在所熟知的读(r)、写(w)、执行(x)权限外,还有三个比较特殊的权限,分别为:setuid、setgid和stickbit(粘滞位)。
今天一直在做Samba服务的配置,深感权限控制的难度。文件许可机制是Linux系统的一大特色。除了我们现在熟悉的read (R)、write (W)和execute (X)权限之外,还有三种特殊的权限。
它们是setuid、setgid和stick bit。
1、setuid与setgid讲解
以/etc/passwd和/usr/bin/passwd为例,看看它在系统中的使用位置:
[plain] view plaincopy
[root@Salve1 school]# ll /etc/passwd /usr/bin/passwd
-rw-r--r-- 1 root root 2005 Apr 23 01:25 /etc/passwd
-rwsr-xr-x 1 root root 23420 Aug 11 2010 /usr/bin/passwd
[root@Salve1 school]#
通过分析,/etc/passwd的权限是-rw-r-r-即文件的所有者拥有读写权限,而用户组成员和其他成员只有查看权限。我们知道,在系统中,我们必须更改用户的密码。
root用户和普通用户都可以使用/usr/bin/passwd someuser命令修改这个文件/etc/passwd,root用户对/etc/passwd有写权限。
没有错;普通用户呢?此处使用setuid。setuid的作用是“让执行命令的用户以命令所有者的权限执行”,即普通用户在执行passwd时会拥有root权限。
因此您可以修改文件/etc/passwd。它的logo是:S,会出现在X的地方,比如:-RWSR-XR-X . setgid的意思和它一样,就是让执行文件的用户在文件所属组的权限下执行。
2、stick bit(粘滞位)
看看它在系统中用的地方,以/tmp为例:
[plain] view plaincopy
[root@Salve1 /]# ll -d /tmp
drwxrwxrwt 13 root root 4096 Apr 23 02:06 /tmp
[root@Salve1 /]#
我们知道/tmp是系统的临时文件目录,所有用户拥有该目录下的所有权限,也就是说可以在该目录下随意创建、修改、删除文件。如果用户A在这个目录中创建了一个文件,用户B会删除它。
我们不能允许这样的情况。为了实现这一目标,出现了棒形钻头的概念。这是目录。如果该目录设置了stick位,
那么这个目录中的文件除了文件的创建者和可以删除和修改/tmp目录中东西的root用户之外,其他用户是不能碰的。这就是粘位的作用。
3、如何设置上述特殊权限
Chmod USA xxx # Set setuid permissions
chmod g s xxx #设置setgid权限
Chmod o txxxx #为目录设置棒位权限。
chmod 4775 xxx #设置setuid权限
chmod 2775 xxx #设置setgid权限
Chmod 1775 xxx #为目录设置棒位权限。
4.注意:有时候你设置了S或者T的权限,会发现变成了S或者T,这是因为你没有在那个位置给它X(可执行)的权限,所以这个设置不会生效。可以先给它X的权限,再给它S或者t的权限。
猜你喜欢
Guessyoulike