Linux文件系统上的特殊权限
- 任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有执行权限
- 决定命令有哪些操作取决于用户的权限大小,我们知道在Linux系统中常用的权限有三种 r,w,x 我们可以对user ,group,other这三种可以设定权限。
- 我们除了r,w,x这三种权限也有三种特殊的文件权限分别是SUID,SGID,STICKY (粘滞位)
SUID
- suid 只能对二进制可执行程序有效,在目录设置没有意义
- 在常用命令中有一个修改用户密码的命令passwd 它就是一个有suid权限的命令
[root@centos7 ~]# ll `which passwd` -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
- 我们知道修改用户密码需要改/etc/shadow ,但是普通用户是无法查看和修改、etc/shadow文件的 ,但是用passwd却可以间接修改,这是因为passwd文件上在所有者上有个S的权限
- 当二进制程序有S权限时,用户使用这个二进制程序的时候会继承所有者的权限。
- 当然如果把所有者上的执行权限去掉,那么S权限则显示错误,所以s权限时基于执行权限的
- 由于这只能对二进制程序文件有效我们也可以在vim上加s,这样其它用户都可以编辑任何文件都是用所有者编辑的,危害很大要慎用。
如何添加权限
- 普通加法 chmod u+s /file
- 删除权限 chmod u-s /file
- 数字加权 chmod 4777 /file
- 删除权限 chmod 777 /file
SGIU
- 作用在二进制程序上,执行sgid权限的程序时,此用户将继承此程序的所属组权限
- 作用在目录上:在此目录新的文件的所属组,将自动继承目录的所属组
- 默认情况下,用户创建文件时,其属组为此用户所属的 主 组一旦某目录被设定了SGID ,则对此 目录有写权限的用户在此
目录中创建的文件所属的组为此目录的属组 通常用于创建一个协作目录
操作如何让其它用户创建的文件都变成目录的所属组
- 我们在/app目录上操作,把/app 上的权限变成770 所有者和所属组有完全操作权限,其它人不能任何操作并且把所属组变成g1
[root@centos6 ~]# chmod 770 /app/
[root@centos6 ~]# ll -d /app/
drwxrwx---. 2 root g1 4096 Nov 18 06:32 /app/- 在吧两个用户加入到g1组里,guo和wang这两个用户加入进去
[root@centos6 ~]# groupmems -g g1 -l
wang guo- 现在是没有在权限上加入sgid权限的,用两个用户分别新建文件看一下
[guo@centos6 /app]$ ll
total 0
-rw-rw-r--. 1 wang wang 0 Nov 18 06:55 1.txt
-rw-rw--r--. 1 guo qwe 0 Nov 18 07:02 2.txt- 我们要让wang和guo创建的文件能让他们都能看对方的和修改,现在wang和guo都只能看不能修改。因为other权限没有写权限,最好的方法是让wang 和guo都属于一个组然后在修改所属组的权限,当然我们也可以在other上加上读写权限。如果创建一个文件就要改一下所属组很麻烦,我们只要在/app 目录上加入sgid 那/app 目录下其它用户创建的文件都会自动变成/app 目录的所属组。
[root@centos6 ~]# chmod g+s /app/
[root@centos6 ~]# ll -d /app/
drwxrws---. 2 root g1 4096 Nov 18 07:02 /app/- 我们在创建一下文件看一下
[wang@centos6 app]$ touch 1.1.txt
[wang@centos6 app]$ ll
total 0
-rw-rw-r--. 1 wang g1 0 Nov 18 07:27 1.1.txt
-rw-rw-r--. 1 wang wang 0 Nov 18 06:55 1.txt
-rw-rw--r--. 1 guo g1 0 Nov 18 07:27 2.2.txt
-rw-rw--r--. 1 guo qwe 0 Nov 18 07:02 2.txt- 这样/app 下创建的文件就会继承/app 目录的所组,我们也把wang和guo用户加入了g1 组.
如何添加权限
- 加chmod g+s /file
- 删除chmod g-s /file
- 加chmod 2777 /file
STICKY (粘滞位)
- 只能作用在目录
- 具有sticky权限的目录,普通用户只能自已删除自已的文件
- /tmp 目录就是
[root@centos6 ~]# ll -d /tmp/
drwxrwxrwt.36 root root 4096 Nov 18 06:31 /tmp/
如何添加权限
- 加chmod o+t /file
- 删除chmod o-t /file
- 加chmod 1777 /file