创建/test目录,在此目录中任何用户都可以创建文件或目录,但只有用户自身和root用户可以删除用户所创建的文件或目录。
在此目录中任何用户都可以创建文件或目录,只要将目录的权限设为777即可。只有用户自身和root用户可以删除用户所创建的文件或目录,这个要求通过普通的权限设置是无法完成的,这里就必须要用到粘滞位。
粘滞位主要是为公共目录(例如权限为777的)设置,权限字符为“t”,粘滞位的权限数字为1,作用是用户不能删除该目录中其他用户的文件
[root@localhost ~]#chmod 1777 test #前面的1就表示要设置粘滞位
[root@localhost ~]#ll
drwxrwxrwt 2 root root 4096 7月 20 21:07 test
设置用户natasha对目录/home/cnrts(自己创建)有完全控制权限,在目录中创建的文件自动继承组的权限,设置manager组用户对目录有读写执行权限,其他人没有权限(root除外)。
这道题目需要在第二组设置set位。
[root@server27 ~]# mkdir /home/cnrts
[root@server27 home]# chown :manager /home/cnrts
[root@server27 home]# chmod 2770 /home/cnrts
[root@server27 home]# ll
drwxrws---. 2 root manager 4096 7月 22 05:33 cnrts
含义SUID:当设置了SUID 位的文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。
SGID:与上面的内容类似。用于设置目录. 一个目录被标上setgid位,此目录下创建的文件继承该目录的属性.文件运行时运行者将具有所属组的特权
sticky-bit:该位可以理解为防删除位.设置sticky bit位后,就算用户对目录具有写权限,但也只能添加文件而不能删除其他用户创建的文件。sticky 位要求操作系统既是在可执行程序退出后,仍要在内存中保留该程序的映象。这样做是为了节省大型程序的启动时间。但是会占用系统资源
设置操作这些标志与操作文件权限的命令是一样的, 都是 chmod.set位的4对应第一组中的set位,2对应第二组中的set位,1对应最后一组中的粘滞位有两种方法来操作,
1) chmod u+s temp -- 为temp文件加上setuid标志. (setuid 只对文件有效,U=用户)
chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 只对目录有效,g=组名)
chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效)
2) 采用八进制方式. 这一组八进制数字三位的意义如下,
abc
a - setuid位, 如果该位为1, 则表示设置setuid
b - setgid位, 如果该位为1, 则表示设置setgid
c - sticky位, 如果该位为1, 则表示设置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)
[root@localhost ~]# ll -d /test/
drwxr-xr-x 2 root root 4096 Aug 14 22:50 /test/
[root@localhost ~]# chmod u+s /test/
[root@localhost ~]# ll -d /test/
drwsr-xr-x 2 root root 4096 Aug 14 22:50 /test/
[root@localhost ~]# chmod g+s /test/
[root@localhost ~]# ll -d /test/
drwsr-sr-x 2 root root 4096 Aug 14 22:50 /test/
[root@localhost ~]# chmod o+t /test/
[root@localhost ~]# ll -d /test/
drwsr-sr-t 2 root root 4096 Aug 14 22:50 /test/
1. 有只读权限的用户不能用 cd 进入该目录;还必须有执行权限才能进入。
2. 有执行权限的用户只有在知道文件名并拥有该文件的读权限的情况下才可以访问目录下的文件。
3. 必须有读和执行权限才可以使用 ls 列出目录清单,或使用 cd 进入目录。
4. 如用户有目录的写权限,则可以创建、删除或修改目录下的任何文件或子目录,既是该文件或子目录属于其他用户。