Linux第八章 权限管理

第八章 权限管理

ACL权限

ACL权限简介与开启

  • ACL简介

当所有者, 所属组, 其他人这些身份不够分配权限时, 会用到ACL权限.

ACL权限不考虑身份, 直接给它权限即可.

  • 开启ACL
    dumpe2fs -h /dev/sda3 : 查看分区ACL权限是否开启
    mount -o remount,acl / : 临时开启, 让根分区支持acl权限
vi /etc/fstab
{
	/	defaults,acl	:	在根分区的defaults后手动加上acl, 开启acl权限
}
该文件是系统开机自动挂载文件.

添加完后重新挂载文件系统或重启系统, 使修改生效.
`mount -o remount /`

默认情况下, 分区ACL权限是开启的, 所以无需关心开启acl.

查看与设定ACL权限

  • 查看
    getfacl 文件名 : 查看文件的acl权限
  • 设定
    setfacl 参数 文件名 : 设定文件的acl权限
    参数 :
    -m : 设定ACL权限

格式 : u:用户名:权限
setfacl -m u:centos:rx /tmp/test : 给用户
setfacl -m g:centos:rwx /tmp/test : 给用户组

最大有效权限与删除ACL权限

  • 最大有效权限
    setfacl -m m:rx 文件名 : 修改文件的mask权限

mask : 指定最大有效权限
设定acl权限, 需要和mask权限相与才能得到用户的真正权限.

  • 删除ACL权限
    setfacl -x u:用户名 文件名 : 删除指定用户或组的acl权限
    setacl -b 文件名 : 删除文件的所有acl权限

默认ACL权限和递归ACL权限

  • 递归acl权限
    setfacl -m u:用户名:权限 -R 目录

递归是父目录设定的权限, 子目录和子文件也会拥有.

  • 默认acl权限
    setfacl -m d:u:用户名:权限 目录

它的作用是父目录设定的acl权限, 新建的子目录和子文件都会有.

而现有的子文件和子目录不会有, 必须通过递归来实现.

递归和默认可以同时使用.

文件特殊权限

setuid

  • 规则

只有可执行的二进制程序才能设定suid权限.

命令执行者要对该程序拥有执行( x )权限.

命令执行者在执行该程序时获得该程序文件属主的身份( 普通用户执行程序, 程序的属主为另一个用户, 则第一个用户获得第二个用户的身份 ).

setuid权限只在该程序执行过程中有效, 也就是说身份改变只在程序执行过程中有效.

  • 举例
[root@localhost ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd

rws : s是passwd命令拥有setuid权限.
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 1264 Jan  6 20:18 /etc/shadow

密码管理的文件都在/etc/shadow中, 该文件的权限是000, 但是passwd的所有者是root, root对任何文件都拥有绝对权限, 所以普通用户修改密码是通过passwd命令的setuid权限来生效的.

  • 添加suid权限
    chmod 4755 abc : 对abc文件添加suid权限

特殊权限一般不赋予7, 因为特殊权限针对的对象不同, 作用也不同, 赋予7则会导致某个特殊权限无法生效.

4 : suid
2 : sgid
1 : sbit
755 : 普通权限

前提是文件必须是可执行程序, 且文件的执行者拥有执行的权限.

  • 删除suid权限
    chmod 755 abc : 删除abc文件的suid权限
  • 危险的suid

系统的命令给了它suid权限是很危险的.

建议对系统默认具有suid权限的文件做一个列表, 定时检查有没有这个之外的文件被设置suid权限.

setgid

  • sgid针对文件

与suid相似, 只是换用户身份变成了换组身份, 组的有效身份也是在执行过程中有效.

[root@localhost ~]# whereis locate
locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz
[root@localhost ~]# ll /usr/bin/locate
-rwx--s--x. 1 root slocate 40520 Apr 11  2018 /usr/bin/locate

--s : sgid权限
[root@localhost ~]# ll /var/lib/mlocate/mlocate.db 
-rw-r-----. 1 root slocate 3823860 Jan  7 10:21 /var/lib/mlocate/mlocate.db
  • 针对目录

普通用户必须对此目录拥有r和x权限, 才能进入此目录.

普通用户在此目录中的有效组会变成此目录的属组.

若普通用户对此目录拥有w权限时, 新建的文件的默认属组时这个目录的属组.

sticky bit

粘着sticky 位bit

  • 规则

只针对目录.

普通用户要对该目录拥有w和x权限.

除了root, 有了粘着位, 其他普通用户只能删除自己在该目录下创建的文件, 不能删除其他用户创建的文件; 相反, 有了粘着位, 且用户有w权限时, 是可以删除该目录下的任何文件的.

  • 设置和取消
    chmod 1755 目录chmod o+t 目录 : 设置
    chmod 755 目录 : 取消

文件系统属性chattr权限

change attribute

  • 格式 :
    chattr [+-=][参数] 文件或目录
    +-= : 增加删除等于权限
  • 参数 :

-i : 如果对文件设置 i 属性, 则不允许对文件进行删除、改名, 也不能添加和修改数据; 如果对目录, 则只能修改目录下的文件的数据, 不能创建和删除文件.

对root也有效, root也可以将 i 属性删除, i 属性只是为了防止用户误操作.

-a : 如果对文件设置a属性, 则只能在文件中添加数据, 不能删除和修改数据; 如果对目录, 则只允许在目录中建立和修改文件, 不允许删除.

  • 查看文件系统属性
    lsattr 参数 文件
  • 参数 :

-a : 显示所有内容.

-d : 列出目录本身属性.

系统命令sudo权限

  • 简介

sudo的操作对象是系统命令.

root 将一部分只能超级用户执行的命令赋予普通用户执行.

  • 使用
    visudo

通过命令修改信息, 该命令实际修改的是/etc/sudoers文件.

visudo
{
	root    ALL=(ALL)       ALL
	用户名	被管理主机的地址=( 可使用的身份 )	授权命令( 绝对路径 )
				1. ALL或IP地址指本机地址
				2. (ALL)指把用户当成root对待, 可不写, 不写则为root
				3. ALL指所有命令, 这里应写具体命令
				
	%wheel  ALL=(ALL)       ALL
	%组名
}
  • 授权
visudo
{
	centos	ALL=/sbin/shutdown -r now
}
授权centos用户root身份, 以及执行shutdown -r now命令的权限.
  • 普通用户执行
su - centos	:	切换用户
sudo -l		:	查看可用的sudo命令, 执行时输入centos用户的密码
sudo /sbin/shutdown -r now	:	执行

执行时命令前加sudo, 且命令为绝对路径.
  • 注意

给普通用户授权命令时, 尽量不要赋予他像vim等工具的命令的权限 ( 如果赋予, 则普通用户变成root身份来执行vim, 这样他是可以修改任何文件的, 是很危险的. )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值