Linux系统上的特殊权限linux
特殊权限:SUID, SGID, STICKYcentos
▇SUID:ide
默认状况下:用户发起的进程,进程的属主是其发起者;所以,其以发起者的身份在运行; oop
例如:以hadoop的身份登录linux操做系统。运行ls命令。那么ls的进程的属主是hadoop。可是ls的程序文件的属主和属组依然是root。hadoop能够执行是由于程序文件 /bin/ls 的其余用户具备执行权限。hadoop应用的是other的权限。因此文件的属主属组和进程的属主不是一会事。一旦程序文件被某个用户执行后。运行为进程后,进程的属主是发起该进程的用户。可是SUID不一样。ui
SUID的功用:用户运行某程序时,若是此程序拥有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件本身的属主;url
示例:spa
默认状况:操作系统
添加SUID后:设计
管理文件的SUID权限:
3d
chmod u+|-s FILE...
典型的SUID 用处:passwd 为了能让root意外的用户能够修改密码,并把密码保到/etc/shadow当中。passwd这个程序是通过精心设计的,普通用户使用时不能添加参数,只有root用户才能够。
展现位置:属主的执行权限位
若是属主本来有执行权限,显示为小写s;
不然,显示为大写S;
注意:给文件赋予SUID权限是很是危险的操做,好比:若是给/bin/cat赋予SUID权限,那么普通用户发起cat命令时,cat进程的属主为root。那么你懂的。cat "危险代码" > "某关键文件" 。因此passwd后不能带参数。有不少***会利用passwd的SUID权限来搞破坏。
■SGID:
功用:当目录属组有写权限,且有SGID权限时,那么全部属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组;
管理文件的SGID权限:
chmod g+|-s FILE...
示例:
添加两个用户
~]#useradd fedora
~]#useradd centos
添加组:
~]#groupadd mygrp
为这两个用户添加附加组mygrp
~]#usermod -a -G mygrp fedora
~]#usermod -a -G mygrp centos
若是/var/tmp/test 没有SGID的权限那么fedora在/var/tmp/test下建立的文件只能fedora本身能够修改,其余用户可读。
若是/var/tmp/test 有SGID的权限那么fedora在/var/tmp/test下建立的文件同属于mygrp组的cengtos也能够修改,其余用户可读。
SGID功用:当目录属组有写权限,且有SGID权限时,那么全部属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组;
展现位置:属组的执行权限位
若是属组本来有执行权限,显示为小写s;
不然,显示为大写S;
■Sticky:
Sticky功用:对于属组或全局可写的目录,组内的全部用户或系统上的全部用户在此目录中都能建立新文件或删除全部的已有文件; 若是为此类目录设置Sticky权限,则每一个用户能建立新文件,且只能删除本身的文件;
管理文件的Sticky权限:
chmod o+|-t FILE...
展现位置:其它用户的执行权限位
若是其它用户本来有执行权限,显示为小写t;
不然,显示为大写T;
系统上的/tmp和/var/tmp目录默认均有sticky权限;
小话题:
管理特殊权限的另外一方式:
suid sgid sticy 八进制权限
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字;
例如:chmod 1777
■facl:file access control lists 文件访问控制列表。
facl是文件的额外赋权机制:在原来的u,g,o以外,另外一层让普通用户能控制赋权给另外(不是other用户)的用户或组的赋权机制;
getfacl命令:
getfacl FILE...
user:USERNAME:MODE
group:GROUPNAME:MODE
setfacl命令:
赋权给用户:
setfacl -m u:USERNAME:MODE FILE...
赋权级组:
setfacl -m g:GROUPNAME:MODE FILE...
撤销赋权:
setfacl -x u:USERNAME FILE...
setfacl -x g:GROUPNAME FILE...
示例:
默认状况:
附加权限后: