设置特殊权限)
SUID
作用:临时赋予用户二进制文档的拥有者的权限(主要用于让普通用户可以使用某些特殊命令)
语法:
chmod u+s file(增加s权限)
chmod u-s file(减去s权限)
使用限制与环境:
1、仅对于二进制文件有效;
2、执行者必须对文件拥有x权限,否则,由于无执行权限,SUID此时无效,此时权限位显示S;
3、权限只是在执行过程中拥有。
======================================================================== [[email protected] ~]# su nagios #切换到nagios普通用户下 [[email protected] root]$ ls ls: cannot open directory .: Permission denied #普通用户不可以访问root家目录 #增加上s权限 [[email protected] ~]# chmod u+s /bin/ls [[email protected] ~]# su nagios [[email protected] root]$ ls -l /bin/ls -rwsr-xr-x. 1 root root 112664 Nov 22 2013 /bin/ls [[email protected] root]$ ls anaconda-ks.cfg dir4 install.log.syslog newdir test11 test33 crontab.sh install.log mbr.bin newfile test22 #如果没有执行权限 [[email protected] ~]# chmod u-x /bin/ls [[email protected] ~]# ls -l /bin/ls -rwSr-xr-x. 1 root root 112664 Nov 22 2013 /bin/ls #可看到S出现了 #扩展命令file [[email protected] root]$ file /bin/ls /bin/ls: setuid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped #file命令能看到文件类型,出来的结果和我们前几节说的type命令不一样 #type命令是专门用来看命令类型的。 ========================================================================
PS:例如passwd命令,路径/usr/bin/passwd,权限为"-rwsr-xr-x"。passwd命令会修改"/etc/shadow",而/etc/shadow对于普通用户的权限是不可读、不可写、不可执行。
PS:SUID只可用于二进制文件,不可用于shell script文件。
SGID
- 对于文件
作用:临时赋予用户二进制文档的属组权限(和suid类似)
语法
chmod g+s file(增加s权限)
chmod g-s file(减去s权限)
使用限制与环境:
1、仅对于二进制文件有效;
2、执行者必须对文件拥有x权限(否则无法执行,SGID此时无效,权限位显示S);
3、权限只是在执行过程中拥有。
PS:例如locate命令,路径/usr/bin/locate,权限为"rwx--s--x"。此时普通用户暂时获得了root用户的权限去执行(locate命令会读取"/var/lib/mlocate/mlocate.db")
- 对于目录
作用:临时将用户的effective
group修改成该目录的的群组
语法
chmod g+s dir(增加s权限)
chmod g-s dir(减去s权限)
使用限制与环境:
1、使用者必须对该目录拥有x权限(否则无法进入,SUID此时无效,权限位显示S);
2、若用户对此目录拥有w权限,由于effective group被修改成该目录的group,所以用户在此目录下创建文件,属主为用户本身,属组为该目录的用户组。
SBIT
作用:限制目录下不同用户之间对于其他用户文档或目录的编辑权限。
语法
chmod o+t dir(增加t权限)
chmod o-t dir(减去t权限)
使用限制与环境
1、只能针对目录;
2、必须有x和w权限(否则无法进入和编辑,此时sbit无效,权限位显示T);
3、用户自身创建的文档和目录,只有自己和root可以编辑(重命名、修改内容、复制、删除等)