一. 基本含义和作用

1. SUID:当设置了SUID 位的文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。

2. SGID:与上面的内容类似。用于设置目录. 一个目录被标上setgid位,此目录下创建的文件继承该目录的属性.文件运行时运行者将具有所属组的特权

3. sticky-bit:该位可以理解为防删除位. 设置sticky bit位后,就算用户对目录具有写权限,但也只能添加文件而不能删除其他用户创建的文件。sticky 位要求操作系统既是在可执行程序退出后,仍要在内存中保留该程序的映象。这样做是为了节省大型程序的启动时间。但是会占用系统资源

4. chattr:锁定一个文件为不可修改或者不可删除
chattr + i  hong.txt:锁定,这在ext2和ext3文件中有效,在reiserfs文件系统中无效,
chattr -i hong.txt:解锁
chattr +a hong.txt   只能在文件中追加东西,不能删,就是只能用echo "hello" >> hong.txt, 不能在vim中进行追加,并且不能用chmod更改权限。
lsattr查看属性
 
实例:linux系统优化
把/etc/passwd,/etc/shadow,etc/group,/etc/gshadow,/etc/inittab锁定并且改名 

二. 设置

操作这些标志与操作文件权限的命令是一样的, 都是 chmod.  set位的4对应SUID中的set位,2对应SGID的set位,1对应最后一组中的粘滞位,比如4770,2770,1770.或者如下

chmod u+s temp -- 为temp文件加上setuid标志. (setuid 只对文件有效,U=用户)
chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 只对目录有效,g=组名)
chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效)

设置后, 可以用 ls -l 来查看. 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
如:

rwsrw-r-- 表示有setuid标志 (rwxrw-r--:rwsrw-r--)
rwxrwsrw- 表示有setgid标志 (rwxrwxrw-:rwxrwsrw-)
rwxrw-rwt 表示有sticky标志 (rwxrw-rwx:rwxrw-rwt)

三. 案例

1. 创建/test目录,在此目录中任何用户都可以创建文件或目录,但只有用户自身和root用户可以删除用户所创建的文件或目录。

分析:

在此目录中任何用户都可以创建文件或目录,只要将目录的权限设为777即可。只有用户自身和root用户可以删除用户所创建的文件或目录,这个要求通过普通的权限设置是无法完成的,这里必须要用到粘滞位。
粘滞位主要是为公共目录(例如权限为777的)设置,权限字符为“t”,粘滞位的权限数字为1,作用是用户不能删除该目录中其他用户的文件
chmod  /test (貌似755也可以,下次测试下)

或者chmod o+t /test
如果目录设置了粘滞位,那么这个目录只有属主和root才能删除,作用就是把一个文件夹的权限都打开,作为共享文件。每个人都能管理自己的东西,别人无权干涉
 

2. 创建共享目录 /home/admins: 属组为adminuser,有读,写,可执行权限,其他用户没有任何权限,在/home/admins目录中创建的文件,会自动继承adminuser组。
mkdir /home/admins/
groupadd adminuser
chown .adminuser /home/admins/
chmod /home/admins/ 或者 chmod g+w,o= /home/admins/ (o= 表示不给o任何权限,用空表示, 在g+w,后面不能有空格,要紧跟着o= )
chmod /home/admins

四. 权限对日常操作的影响

1. 有只读权限的用户不能用 cd 进入该目录;还必须有执行权限才能进入。

2. 有执行权限的用户只有在知道文件名并拥有该文件的读权限的情况下才可以访问目录下的文件。

3. 必须有读和执行权限才可以使用 ls 列出目录清单,或使用 cd 进入目录。

4. 如用户有目录的写权限,则可以创建、删除或修改目录下的任何文件或子目录,既是该文件或子目录属于其他用户。

 
05-04 12:09