文件中除了普通的读、写、执行权限外,还有一些特殊的权限,我们可以使用 chmod和chown命令来设置。 他们分别是SUID, SGID, Stricky Bit, ACL's, SUDO and SELinux 等,管理员可以使用这些命令管理文件/文件夹。
1)什么是SUID?
2) 如何设置SUID?
3) 什么地方使用SUID?
什么是SUID,Linux中如何设置?
SUID (Set owner User ID up on execution) 是给予文件的一个特殊类型的文件权限。在 Linux/Unix中,当一个程序运行的时候, 程序将从登录用户处继承权限。SUID被定义为给予一个用户临时的(程序/文件)所有者的权限来运行一个程序/文件。简而言之用户在执行程序/文件/命令的时候,将获取文件所有者的权限以及所有者的UID和GID。
上面的解释比较难理解,下面举例详细说明之。
通过以下例子来学习SUID:
例1: passwd 命令
当要改变账户的密码的时候,我们使用passwd命令,此命令的所有者为root。在我们改变密码的时候, passwd命令将编辑一些配置文件, 如/etc/passwd, /etc/shadow,这些文档只能通过root账户拥有权限打开或者浏览。所以如果我们试着去除SUID并给予passwd全部权限,它无法打开其他文件,如/etc/shadow更新密码。在我们执行 passwd命令的时候,我们将会遇到权限拒绝的错误或者一些其他的错误。所以passwd命令设置SUID将root用户权限给予普通用户 ,使得后者可以更新/etc/shadow和其他文件。
例2: ping 命令
类似的如果我们执行 ping命令,当我们执行这个命令的时候,它会打开socket文件和端口发送和接受IP包。普通用户无此权限。所以这个命令设置SUID位,当普通用户在执行这个命令的时候,被授予所有者(Root)权限。当这个命令执行的时候,它将 Root用户的权限授予普通用户来打开socket文件和端口。
例3: crontab 和 at 命令
当我们使用crontab或者at命令计划一些工作的时候,我们需要编辑一些位于/etc/目录和crotab相关的配置文件,这些文件普通用户是没有修改权限的。所以crontab/at命令被设置SUID,可以写入数据。
文件如何设置SUID?
有两中方式设置SUID
1) Symbolic way(s, Stands for Set) 符号方式
2) Numerical/octal way(4) 数字方式
使用 chmod 命令设置文件 SUID : file1.txt
Symbolic way: 符号方式:
chmod u+s file1.txt
将所有者的执行权限位被设置成s。
Numerical way:数字方式
chmod 4750 file1.txt
在 4750中, 4 说明 SUID 位被设置, 7 为所有者读写执行权限, 5 为所有组的读执行权限,其他无任何权限。
如何检查一个文件是否设置了SUID位?
使用 ls –l 命令检查是否所有者执行权限被s或者S所取代。
比如: file1.txt 列出设置SUID前后的属性
设置 SUID前:
ls -l
total 8 -rwxr--r-- 1 xyz xyzgroup 148 Dec 22 03:46 file1.txt
设置SUID后:
ls -l
total 8
-rwsr--r-- 1 xyz xyzgroup 148 Dec 22 03:46 file1.txt
和SUID有关的一些问答:
A) SUID在哪来使用 ?
1) 需要root账户来执行一个写命令/程序/脚本。
2) 不想给特定用户以认证但是想作为使用者来执行一些程序。
3) 不想使用SUDO命令但是想给予一个文件/脚本执行权。
B) 我在文件权限看到 “S” 大写的 “s”,这是什么?
给文件/文件夹设置 SUID后,如果在文件的权限部分看到 ‘S’ ,说明这个用户对这个文件/目录没有执行权。
如下:
chmod u+s file1.txt
ls -l -rwSrwxr-x 1 surendra surendra 0 Dec 27 11:24 file1.txt
如果你想将S转变成s,像下面一样增加这个文件的执行权。
chmod u+x file1.txt ls -l -rwsrwxr-x 1 surendra surendra 0 Dec 5 11:24 file1.txt
你将会看到小写的 's' 已经出现在执行属性的位置上了。
SUID 带执行权限:
SUID 不带执行权:
C) 如何在Linux/Unix中寻找设置了SUID的文件 .
find / -perm +4000
上面的find命令将会查找带有SUID位(4000)的文件。
D) 可以为文件夹设置SUID吗?
可以,如果有需要。(Linux将所有的东西都当文件对待)。
E) SUID 的数字值?
4.
原文地址:http://www.linuxnix.com/2011/12/suid-set-suid-linuxunix.html