Linux中特殊权限和提权详解

sgid :  针对二进制的可执行文件,如果该文件有sgid的权限,那么当其他任何人来执行该文件时,则临时拥有文件拥有组的权限
针对目录: 如果一个目录有sgid权限,则在该目录下创建的的子目录可以继承该目录的权限,但是还是得根据umask值来继承,其他用户在该目录下创建子目录的拥有人是该用户,文件不会继承父目录的权限,只有目录才可以
chmod g+s 或者 chmod 2775

sticky:粘滞位
给文件设置无意义,针对目录,子目录不会父继承t的权限,若父目录有t权限,其他人都不能删除该目录下的文件和目录,只有root用户和父目录的拥有人才能进行删除操作(拥有人能删除父目录下的文件和目录)
chmod o+t 或者 chmod  1744 

acl(access control list : 访问控制列表)
ll -d 3/
drwxrwxr-t+ 4 wang cloud 24 Apr 23 02:03 3/  : 显示部分acl权限信息
其中cloud组的rwx权限显示的是mask的信息

getfacl 3/
# file: 3/        :    目录名字
# owner: wang      : 拥有人
# group: cloud      : 拥有组
# flags: --t          : 特殊权限
user::rwx            :  用户的权限
user:user1:rw-    : user1用户的权限
group::r-x          :  组的权限
mask::rwx          : 掩码(最大的权限),若上面的权限超过mask,则会有#effective(有效的权限):r--
other::r-x           : 其他人的权限
setfacl -m u::rwx  4/  :  设置user的acl
setfacl -m u:user1:rwx 4/  :  设置user1的acl
setfacl -m g::rwx  4/ : 设置group的acl
setfacl -m g:it:rwx 4/  : 设置it组的acl
setfacl -m o::rwx 4/  :  设置其他人的acl
setfacl -m d:u:user1:rwx 4/  : 设置默认权限,该权限可以继承下去,创建子目录会继承父目录的acl权限

设置mask值
    mask最大权限:会影响到用户和组的acl,以及组的权限,不会影响拥有人和其他人的权限,每次变更acl权限,mask值会重新计算
    setfacl -m m::rw- /data  设置mask值
setfacl -n -x  g:it /data/    加-n保持mask值不变

setfacl -b 3/  :  清空目录的所有acl权限
setfacl -x u:user1 : 删除用户user1的acl权限
setfacl -x g:it      :  删除组it的acl权限
setfacl -x m::     : 删除mask的权限
setfacl -x d:u:use1  4/  :  删除user1的默认权限
setfacl -k 3/  :  删除所有的默认权限

sudo提权
语法规则:
     user   MACHINE =     (RunAs)         NOPASSWD: COMMANDS(例如:/usr/bin/mkdir)
    用户名 被管理主机=(可使用的身份)  授权命令(绝对路径)
root    ALL=(ALL)       ALL
wang    ALL=(ALL)       ALL
natasha ALL=(wang)      ALL   :   natasha可以wang身份创建文件,其拥有人和拥有组都是wang      sudo  -u  wang  mkdir /tmp/file1
root指定创建用户的拥有人和拥有组(注意: 该目录下必须有权限):  sudo -u  wang  touch /tmp/file1
   
sudo语法:sudo [选项] 命令
常用选项:
-V 显示版本编号
-l 显示出自己(执行 sudo 的使用者)的权限
-k 将会强迫使用者在下一次执行 sudo 时问密码(默认5min中以内再次执行sudo不需要密码)
-b 将要执行的指令放在后台执行
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)

sudo是linux下常用的允许普通用户使用超级用户权限的工具,可以减少root用户的登陆和管理时间,同样也提高了安全性。
sudo的配置文件是/etc/sudoers和/etc/sudoers.d/*,/etc/sudoers编辑配置文件最好用visudo,保存时会检测语法,而vim直接编辑不会检测语法。

sudoers文件支持使用别名对同类对象进行分组:组名必须使用全大写字母,使用逗号将同类对象命令隔开。
Host_Alias:主机别名
User_Alias:用户别名
Runas_Alias:在哪些主机以谁的身份运行的别名
Cmnd_Alias:命令别名

举例:
User_Alias USER = user1, user2
Cmnd_Alias COMMAND = /usr/sbin/useradd
USER  ALL=(root)  NOPASSWD: COMMAND


总结:
默认权限 umask  控制创建出来的文件去除什么权限
特殊权限
suid   二进制可执行文件
sgid   二进制可执行文件和目录
sticky  只有root用户和拥有人可以删除
acl权限  对拥有人,拥有组,其他人的细分,更细致的访问控制
sudo    给用户赋权,设置一个用户以另一个用户的身份运行命令

你可能感兴趣的:(运维,Linux系统,linux,运维)