zoukankan      html  css  js  c++  java
  • linux权限管理

    ############linux 权限管理 ###################
    #修改所有者和所属组
    chgrp -R groupname file/dir
    chown -R user:group file/dir
    dhown -R user file/dir
    chown -R :group file/dir

    #文件权限
    r #读
    w #写
    x #执行
    s #针对可执行文件或目录,使文件在执行阶段,临时拥有文件所有者的权限(会占用x的位置,例如:rws)
    t #针对目录,任何用户都可以在此目录中创建文件,但只能删除自己的文件(会占用x的位置,例如:rws)

    #s权限:当s位位于拥有者的x位,此种权限通常称为 SetUID,简称 SUID 特殊权限
    用户要对该文件拥有 x(执行)权限。
    用户在执行该文件时,会以文件所有者的身份执行。
    SetUID 权限只在文件执行过程中有效,一旦执行完毕,身份的切换也随之消失。

    例子:passwd命令,/usr/bin/passwd
    普通用户可以修改自己的密码,但是/etc/shadow文件时没有权限访问的,更别说修改了
    因为passwd有s权限,运行的时候时root的灵魂附体,就可以修改/etc/shadow文件,成功修改密码

    当 s 权限位于所属组的 x 权限位时,就被称为 SetGID,简称 SGID 特殊权限
    [root@lgh2 ~]# ll /usr/bin/ | grep -w locate
    -rwx--s--x 1 root slocate 40520 Apr 10 2018 locate
    SGID 只针对可执行文件有效,换句话说,只有可执行文件才可以被赋予 SGID 权限,普通文件赋予 SGID 没有意义。
    用户需要对此可执行文件有 x 权限;
    用户在执行具有 SGID 权限的可执行文件时,用户的群组身份会变为文件所属群组;
    SGID 权限赋予用户改变组身份的效果,只在可执行文件运行过程中有效;

    以locate 命令为例,可以看到,/usr/bin/locate 文件被赋予了 SGID 的特殊权限,这就意味着,当普通用户使用
    locate 命令时,该用户的所属组会直接变为 locate 命令的所属组,也就是 slocate

    #t权限
    Sticky BIT,简称 SBIT 特殊权限,可意为粘着位、粘滞位、防删除位等
    SBIT 权限仅对目录有效,一旦目录设定了SBIT权限,则用户在此目录下创建的文件或目录,就只有自己和root才有权利修改或删除该文件。
    drwxrwxrwt. 4 root root 4096 Apr 19 06:17 /tmp

    #修改文件权限
    chmod -R file/dir
    chmod u/g/o/a +-= r/w/x/s/t file/dir #多个设定用逗号隔开
    chmod 777 file/dir
    chmod 7777 file/dir #rwsrwsrwt 最前一位用来设定s和t权限


    #新建文件和文件夹的默认权限
    umask #默认0022(root用户) 0002(非root) 四位八进制
    文件(或目录)的初始权限 = 文件(或目录)的最大默认权限 - umask权限
    文件的最大默认权限:666
    文件夹的最大默认权限:777

    umask 002 #临时修改umask值
    vim /etc/profile #可以永久修改

    #ACL权限管理
    #1、使用df -h查看磁盘
    #2、dumpe2fs -h /dev/.. 查看磁盘的具体信息,是否有acl
    mount -o remount,acl / #临时新增acl权限
    vim /etc/fstab #永久修改
    UUID=490ed737-f8cf-46a6-ac4b-b7735b79fc63 / ext4 defaults,acl 1 1

    #setfacl
    -m #设置ACL权限
    -x #删除指定ACL权限
    -b #删除所有ACL权限
    -k #删除默认ACL权限
    -d #设定默认ACL权限 (只对文件夹生效)
    -R #递归设定ACL权限
    给用户设定ACL 权限: setfacl -m u:用户名:权限 指定文件名
    给用户组设定ACL 权限:setfacl -m g:组名:权限 指定文件名
    设定mask的ACL 权限: setfacl -m m:权限 指定文件名 (mask默认为rwx)
    删除指定ACL权限: setfacl -x u:用户名 文件名
    删除指定用户组的ACL权限:setfacl -x g:组名 文件名
    删除文件的所有 ACL 权限:setfacl -b 文件名
    递归设置ACL权限: setfacl -m u:用户名:权限 -R 文件名
    设定默认的ACL权限,子目录会继承:setfacl -m d:u:用户名:权限 文件名

    #查看权限
    getfacl dir
    [pt@lgh2 project]$ getfacl /project/
    getfacl: Removing leading '/' from absolute path names
    # file: project/
    # owner: root
    # group: qq
    user::rwx
    user:pt:r-x
    group::rwx
    mask::rwx
    other::---

    #chattr
    chattr [+-=] [属性] 文件或目录名
    + 表示给文件或目录添加属性,- 表示移除文件或目录拥有的某些属性,= 表示给文件或目录设定一些属性
    i :
    如果对文件设置 i 属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;
    如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件;
    a :
    如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据;
    如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件;
    u :
    设置此属性的文件或目录,在删除时,其内容会被保存,以保证后期能够恢复,常用来防止意外删除文件或目录
    s :
    和 u 相反,删除文件或目录时,会被彻底删除(直接从硬盘上删除,然后用 0 填充所占用的区域),不可恢复。


    #lsattr
    lsattr [选项] 文件或目录名
    -a:后面不带文件或目录名,表示显示所有文件和目录(包括隐藏文件和目录)
    -d:如果目标是目录,只会列出目录本身的隐藏属性,而不会列出所含文件或子目录的隐藏属性信息;
    -R:和 -d 恰好相反,作用于目录时,会连同子目录的隐藏信息数据也一并显示出来。

    #sudo
    sudo 命令默认只有 root 用户可以运行,该命令的基本格式为
    sudo [-b] [-u 新使用者账号] 要执行的命令
    -b :将后续的命令放到背景中让系统自行运行,不对当前的 shell 环境产生影响。
    -u :后面可以接欲切换的用户名,若无此项则代表切换身份为 root 。
    -l:此选项的用法为 sudo -l,用于显示当前用户可以用 sudo 执行那些命令。

    #sudo执行过程
    当用户运行 sudo 命令时,系统会先通过 /etc/sudoers 文件,验证该用户是否有运行 sudo 的权限;
    确定用户具有使用 sudo 命令的权限后,还要让用户输入自己的密码进行确认。出于对系统安全性的考虑,
    如果用户在默认时间内(默认是 5 分钟)不使用 sudo 命令,此后使用时需要再次输入密码;
    密码输入成功后,才会执行 sudo 命令后接的命令

    #配置/etc/sudoers 文件
    修改 /etc/sudoers,不建议直接使用 vim,而是使用 visudo。因为修改 /etc/sudoers 文件需遵循一定的语法规则,
    使用 visudo 的好处就在于,当修改完毕 /etc/sudoers 文件,离开修改页面时,系统会自行检验 /etc/sudoers 文件的语法

    修改参考模板
    root ALL=(ALL) ALL
    #用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
    %wheel ALL=(ALL) ALL
    #%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)

    用户名和用户组:可以使用 sudo 这个命令的用户或者用户组
    被管理主机的地址:用户可以管理指定 IP 地址的服务器。这里如果写 ALL,则代表用户可以管理任何主机;如果写固定 IP,
    则代表用户可以管理指定的服务器。如果我们在这里写本机的 IP 地址,不代表只允许本机的用户使用指定命令,
    而是代表指定的用户可以从任何 IP 地址来管理当前服务器。
    可使用的身份:就是把来源用户切换成什么身份使用,(ALL)代表可以切换成任意身份。这个字段可以省略。
    授权命令:表示 root 把什么命令命令授权给用户,使用绝对路径写。默认值是 ALL,表示可以执行任何命令。个授权命令,之间用逗号分隔

  • 相关阅读:
    第7章例7-12
    第7章例7-11
    第7章例7-9
    第7章例7-8
    第7章例7-7
    第7章例7-6
    第7章例7-5
    第7章例7-4
    第7章例7-3
    第7章例7-2
  • 原文地址:https://www.cnblogs.com/zsql/p/11098065.html
Copyright © 2011-2022 走看看