Linux权限管理

来源:互联网 发布:同花顺手机炒股软件wp 编辑:程序博客网 时间:2024/06/05 02:21

一、ACL权限

1. ACL权限简介与开启

    目前Linux中只有拥有者,所属组,其他人,给所有者和所属组分配rwx的权限,其他人没有权限,这时出现了一种情况需要给一个用户提供读和执行和权限,那么应该怎么做呢?

    ACL 是 Access Control List 的缩写,称为访问控制列表,包含了对一个对象或一条记录可进行何种操作的权限定义。

功能描述:dumpe2fs命令查询指定分区详细文件系统信息
语法:dumpe2fs -h /dev/sda3
        -h 仅显示超级块中信息而不显示磁盘块组的详细信息
注意:为文件分配ACL权限需要它所在的分区支持才可以分配
        使用命令后查看default mount options中是否有acl


功能描述:重新挂载根分区同时加入acl权限
语法:mount -o remount,acl /
注意:临时生效


vim /etc/fstab
        该文件定义了存储设备和分区整合到整个系统的方式,mount 命令会读取这个文件,确定设备和分区的挂载选项
        在根分区的defaults默认是开启了acl权限的,如果电脑中的default没有开启acl权限可以在defaults后面添加,acl
注意:修改了配置文件需要重启,加载配置文件

2. 查看与设定ACL权限

功能描述:查看acl权限
语法:getfacl 文件名


功能描述:设定ACL权限
语法:setfacl [-mxbdkR] 文件名
        -m 设定ACL权限
        -x 删除指定ACL权限
        -b 删除所有ACL权限
        -d 设定默认ACL权限
        -k 删除默认ACL权限
        -R 递归设置ACL权限
例子:setfacl -m u:username:rx /project 给username用户赋予rx权限,格式为”u:用户名:权限”
          setfacl -m g:groupname:rwx /project 给groupname组分配acl权限

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

    通过getfacl可以得到acl相关信息,其中存在一个mask字段,mask用于指定最大有效权限,如果给用户赋予了acl权限,是需要和mask的权限相与才能得到真正权限(对拥有者无效)

功能描述:修改最大有效权限
语法:setfacl -m m:rx /project/


功能描述:删除指定用户或指定组的ACL权限
语法:setfacl -x u:用户名/g:组名 文件名


功能描述:删除文件的所有ACL权限
语法:setfacl -b 文件名

4. 默认ACL权限和递归ACL权限

功能描述:递归设置ACL权限(递归是父目录在设定ACL权限时,所有现有的子文件和子目录文件也会拥有相同的ACL权限)
语法:setfacl -m u:用户名:权限 -R 目录


功能描述:如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都继承父目录的ACL权限
语法:setfacl -m d:u:用户名:权限 目录

二、文件特殊权限

1. SetUID

只有可执行的二进制程序才能设定SUID权限
命令的执行者需要拥有程序的执行权限
命令执行者在执行拥有SUID权限的程序时会暂时性获得该程序文件的属主身份
SetUID权限只在该程序执行过程中有效

这里写图片描述

    例如普通用户可以修改自己的密码,但是实际上可以看到/etc/shadow的权限是000,只有root用户可以操作,究其原因是因为/usr/bin/passwd这个命令的所有者的权限为rws即存在SUID权限,所以普通用户在执行时可以通过获得/usr/bin/passwd的所有者即root的身份,从而对/etc/shadow进行操作

功能描述:设定SUID
语法:chmod 4755 文件名
          uchmod u+s 文件名
注意:4代表SUID,2代表SGID,1代表SBIT


功能描述:取消SUID
语法:chmod 755 文件名
         chmod u-s 文件名

2. SetGID

针对文件时:
    只有可执行的二进制程序才能设置SGID权限
    命令执行者要对程序拥有执行权限
    命令执行在执行程序的时候,组身份升级为该程序文件的属组
    SetGID权限同样只在程序执行过程中有效

针对目录时:
    普通用户必须对此目录拥有读和执行权限才能进入目录
    普通用户在此目录中的有效组会变成目录的属组
    若普通用户对此目录具有写权限时,新建的文件的默认属组是这个目录的数组,但拥有者仍然是普通用户

这里写图片描述

    普通用户虽然对locate查找的数据库mlocate.db没有读的权限,但是locate具有SGID的作用,使用时用户的组身份会升级为slocate,从而对mlocate.db具有读的权限

功能描述:设置/取消SGID
语法:chmod 2755/755 [目录/文件名]
          chmod g+s/g-s [目录/文件名]

3. Sticky BIT粘着位

粘着位目前只对目录有效
普通用户对该目录拥有写和执行权限
如果没有粘着位,因为普通用户拥有写权限,所以可以删除此目录下所有文件,包括其他用户创建的文件;一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有写权限也只能删除自己创建的文件


执行权限:root
功能描述:设置/取消粘着位
语法:chmod 1755/755 目录名
          chmod o+t/o-t 目录名

三、文件系统属性chattr权限

功能描述:设置或去除文件系统属性
语法:chattr [+-=] [ia] [文件/目录]
          + 增加权限
          - 删除权限
          = 等于某权限
          i 如果对文件设置,则不允许对文件进行删除,改名也不能添加和修改数据;如果对目录设置,那么只能修改目录下文件的数据,不能建立和删除文件
          a 如果对文件设置a属性,那么只能在文件中增加数据(不能使用vi),不能删除和修改数据;如果对目录设置,那么只允许在目录中建立和修改文件内容,但不允许删除
注意:对root用户也生效!!


功能描述:查看文件系统属性
语法:lsattr [-ad] 文件名
          -a 显示所有文件和目录
          -d 若目标是目录,则仅列出目录本身属性而不是子文件的

四、系统命令sudo权限

    sudo权限能够使得root把本来只能超级用户执行的命令赋予普通用户执行,其操作对象是系统命令

语法:visudo
格式:usernmae(用户名)/%groupname(组名) ALL(被管理主机的地址)=(ALL(可使用身份)) ALL(授权命令,使用绝对路径)
注意:visudo实际修改的是/etc/sudoers文件
          被管理主机地址并不是指来源IP,而是命令执行的位置或者说被管理的计算机,通常本机的IP或ALL
例子:visudo
          dw ALL= /sbin/shutdown -r now 是dw用户可以重启服务器


功能描述:使用root赋予的命令
语法:sudo 命令(绝对路径)
例子:sudo /sbin/shutdown -r now
注意:使用sudo -l 可以查看可用的sudo命令

原创粉丝点击