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

    第一节:权限属性

    ll 命令列出文件/目录长属性(权限、属性)

    [root@centos7 ~]#ll /etc/passwd
    -rw-r--r--. 1 root root 1091 131 12:38 /etc/passwd

      -rw-r--r--:权限
      root root:属性

    1.1 文件属性

    文件属性:所有者 所属组 其他人(不显示)

    (1)chown 设置文件的所有者

    [root@centos7 ~]#chown [指定所有者] [文件]    #格式
    [root@centos7 ~]#ll f1    #查看f1文件的属性信息
    -rw-r--r--. 1 root root 0 2月  27 22:40 f1
    [root@centos7 ~]#chown yang f1    #例:更改f1文件的所有者为yang(yang为本人创建的一个用户)
    [root@centos7 ~]#ll f1
    -rw-r--r--. 1 yang root 0 2月  27 22:40 f1

    (2)chgrp 设置文件的属组信息

    [root@centos7 ~]#chgrp [指定所属组] [文件]    #格式
    [root@centos7 ~]#ll f1
    -rw-r--r--. 1 yang root 0 2月  27 22:40 f1
    [root@centos7 ~]#chgrp yang f1              #例:更改f1文件的所属组为yang
    [root@centos7 ~]#ll f1
    -rw-r--r--. 1 yang yang 0 2月  27 22:40 f1

    (3)也可以使用 chown 命令一起更改文件所有者、所属组

    [root@centos7 ~]#ll f1
    -rw-r--r--. 1 yang yang 0 2月  27 22:40 f1
    [root@centos7 ~]#chown root.root f1
    [root@centos7 ~]#ll f1
    -rw-r--r--. 1 root root 0 2月  27 22:40 f1

    注意:普通用户更改不了文件所有者,但是可以改文件所属组(前提该文件所有者属于自己;该用户在该组内);

    1.2 文件权限

    (1)权限针对于:所有者、所属组和其他人

    #权限(例):
        -rw-r--r--
        #第一个字符 '-' 代表普通文件
        #接下来每三个字符为一组,分别为:所有者权限、所属组权限和其他人权限

    (2)root 账号对于读写权限设置不受影响,没有读写权限也能读写;但是执行权限 root 也要受影响;

    (3)文件删除权限取决于目录权限;对于目录没有执行权限,不能进去,不能看目录里文件所有属性,不能访问文件内容。

    (4)文件访问权限按 所有者>所属组>其他顺序匹配,匹配到则停止匹配;

      换一个文件系统不一定就是这样(Linux 里通用的文件系统是这样的)

    1.3 权限授权

    (1)mode 法(模式法)

    chmod [who] [operate] [authority] [file/dir_name]
        who    #对谁授权?(所有者、所属组、其他人、所有)
        operate   #做什么操作?(+权限、-权限、=赋权)
        authority    #什么权限?(r、w、x)
        file/dir_name  #授权对象

      实例:

    [root@centos7 ~]#ll f1
    -rw-r--r--. 1 root root 0 2月  27 22:40 f1  #查看f1文件的所有者、所属组和其他人权限分别为读写、读、读
    [root@centos7 ~]#chmod u+x,g+w,o= f1     #赋予f1文件,增加所有者的执行权限,增加所属组的写权限,赋予其他人无权限
    [root@centos7 ~]#ll f1
    -rwxrw----. 1 root root 0 2月  27 22:40 f1

    (2)数字法授权:r=4 w=2 x=1

    [root@centos7 ~]#ll f1
    -rwxrw----. 1 root root 0 2月  27 22:40 f1
    [root@centos7 ~]#chmod 644 f1
    [root@centos7 ~]#ll f1
    -rw-r--r--. 1 root root 0 2月  27 22:40 f1
    chmod --reference=参考文件 文件    #将文件的权限设置为和参考文件一样
    
    [root@centos7 ~]#ll f1
    -rw-r--r--. 1 root root 0 2月  27 22:40 f1
    [root@centos7 ~]#ll /etc/shadow
    ----------. 1 root root 655 2月  27 13:58 /etc/shadow
    [root@centos7 ~]#chmod --reference=/etc/shadow f1
    [root@centos7 ~]#ll f1
    ----------. 1 root root 0 2月  27 22:40 f1

    总结:

      对于文件来说:6、4、0 权限用的比较多
      对于目录来说:7、5、0 权限用的比较多

      chmod -R dir/file  #递归附加权限
      chmod -R +x dir/file  #给 dir 目录连同目录下的所有文件附加执行权限
      chmod -R +X dir/file  #X 只给目录和可执行权限的文件(特殊)附加执行权限

    1.4 默认权限

    umask(默认权限) + default(显示权限) = file:666/dir:777  #暂时公式正确
    
    [root@centos7 ~]#umask 125  #本来默认权限应该是 541,但实际是 642
    [root@centos7 ~]#touch f3
    [root@centos7 ~]#ll f3
    -rw-r---w-. 1 root root 0 21 12:05 f3

    umask 的作用取消对应权限(转换为二进制)

    666110110110  #文件权限
    125001010101  #125,默认权限,两者对位运算。0不取消,1 是取消
    真实权限 110100010642
    
    默认权限计算对位相减:比如 umask 125,则:666-125=541,如果结果中有奇数则奇数加1→642(对文件来说的权限计算),对目录说没问题直接减就是结果。
    每个用户可以设至自己的 umask,彻底更改放到家目录的:.bashrc 文件里面
    [root@centos7 ~]#umask    #查看当前umask默认权限
    0022
    [root@centos7 ~]#umask u=rwx,g=r,o=   #直接设置不用算,常配合小括号使用(),小括号开启子进程,结束关闭子进程,用法相当于一次性使用

    1.5 特殊权限

      三种特殊权限:SUID、SGID、Sticky

    [root@centos7 ~]#which passwd
    /bin/passwd
    [root@centos7 ~]#ll /bin/passwd
    -rwsr-xr-x. 1 root root 27832 610 2014 /bin/passwd  #查看/etc/passwd文件发现有suid权限,该处小 s 有 x 权限,如果为大 S 则没 x 权限
    [root@centos7 ~]#chmod u-x /usr/bin/passwd
    [root@centos7 ~]#ll /usr/bin/passwd
    -rwSr-xr-x. 1 root root 27832 610 2014 /usr/bin/passwd

      指定 SUID 后,当用户执行该程序(有 SUID 权限),该用户继承该程序所有者的权限

      普通用户,可以使用 passwd 更改自己的口令,更改完口令,即必然修改 /etc/shadow 文件(用户密码相关文件),而该文件的权限如下:没有任何权限

    [root@centos7 ~]#ll /etc/shadow
    ----------. 1 root root 751 2月  27 23:17 /etc/shadow

      但是,/etc/passwd 文件拥有 suid 权限,普通用户执行该程序时继承该程序的所有者权限,即 suid 权限。

      数字法赋权:在原有权限前加特殊权限(4XXX,2XXX,1XXX)

      SUID 权限,继承二进制程序所有者的权限(适合二进制的可执行的程序上)

      SGID 权限,继承该程序所有组的权限

      Sticky 权限,作用于文件夹,此目录的文件只能被所有者删除

      chattr 工具:对特定的文件加以保护,避免 root 用户更改和删除

    chattr +i  #不能删除,改名,更改
    chattr +a #只能追加内容
    chattr +A #锁定读时间
    lsattr #显示特定属性

    1.6 访问控制列表

      ACL:Access Control List,实现灵活的权限管理,除了文件的所有者,所属组和其他人,可以对更多的用户设置权限。

      CentOS7 默认创建的 xfs 和 ext4 文件系统具有 ACL 功能

      CentOS7 之前的版本,默认手工创建的 ext4 文件系统无 ACL 功能,需手动增加:

    tune2fs -o acl /dev/sdb1
    mount -o acl /dev/sdb1 /mnt/test

      ACL 生效顺序:所有者,自定义用户,所属组,自定义组,其他人

    [root@centos7 ~]#chmod 666 f1
    [root@centos7 ~]#setfacl -m u:yang:r f1  #针对yang用户设置r读权限,一旦设置 acl 权限则相当于第四者
    [root@centos7 ~]#ll f1
    -rw-rw-rw-+ 1 root root 0 2月  27 22:40 f1
    [root@centos7 ~]#getfacl f1    #查看acl权限
    # file: f1
    # owner: root
    # group: root
    user::rw-
    user:yang:r--
    group::rw-
    mask::rw-
    other::rw-

      除了 user 和 other,对特定的用户和组统一设一个最大权限→可以更改 mask 权限(限高权限),组权限已经不是原来的组权限,group=mask 权限(限高权限)

    [root@centos7 ~]#setfacl -m mask::r f1
    [root@centos7 ~]#getfacl f1
    # file: f1
    # owner: root
    # group: root
    user::rw-
    user:yang:r--
    group::rw-            #effective:r--
    mask::r--
    other::rw-

      此时 chmod g=rw f1 更改组权限,其实更改 mask 权限

    [root@centos7 ~]#chmod g=rw f1
    [root@centos7 ~]#getfacl f1
    # file: f1
    # owner: root
    # group: root
    user::rw-
    user:yang:r--
    group::rw-
    mask::rw-
    other::rw-
    setfacl -b f1  #清空 f1 文件的所有 acl 权限
    
    备份和恢复 ACL   cp -p + mv 都可以复制 ACL 属性,但是 tar 备份工具不会保留目录和文件的ACL 信息   getfacl -R /tmp/dir1 > acl.txt  #把目录下文件的所有 ACL 放到文件里   setfacl -R -b /tmp/dir1   #清空   setfacl -R -set-file=acl.txt /tmp/dir1  #还原备份的 ACL 权限   setfacl -restore acl.txt   getfacl -R /tmp/dir1
  • 相关阅读:
    为什么电影里的黑客都不屑用鼠标? (转)
    专注做好一件事(转) focus---这个世界上最成功的人,他们在某一领域获得成功之后,可通过经营杠杆进入任何他们想要涉足的领域。而这都得依赖于他们曾极致的专注在做好一件事情上。
    世间万物都是遵循某种类似的规律,谁先把握了这些规律,谁就最早成为了强者。
    走的时候不要太急,有时间要停下来想一想当初为什么而走,这样,才会走的更稳,走的更明白。
    Android笔记: Android版本号
    Android笔记:真机调试无法输出Log 信息的问题
    阿里云服务器试用
    Android笔记:利用InputStream和BufferedReader 进行字节流 字符流处理
    Android笔记:java 中的数组
    Android笔记:C memory copy
  • 原文地址:https://www.cnblogs.com/zyybky/p/12375255.html
Copyright © 2011-2022 走看看