• Linux:Linu文件权限管理、文件权限修改chmod、修改属主属组chown、特殊权限SUID、SGID、Sticky、umask




    文件权限


    1、权限修改 chmod

    chmod命令(change modify)

    使用该命令:所有用户者

    语法:

    chmod [ugoa...] [[+-=][rwx]...] [,...]

    • u (user)表示该文件的拥有者,g (group)表示与该文件的拥有者属于同一个群体者,o (other)表示其他以外的人,a (all)表示这三者皆是。
    • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
    • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
    • 最后参数为需要修改权限的对象

    其他参数说明:

    • -c : 若该文件权限确实已经更改,才显示其更改动作
    • -f : 若该文件权限无法被更改也不要显示错误讯息
    • -v : 显示权限变更的详细资料
    • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
    • –help : 显示辅助说明
    • –version : 显示版本

    示例:

    -r–r--r-- file.txt

    chmod u+w file.txt
    // 给file1.txt的属主添加w写权限   -rw-r--r-- file.txt
    
    chmod go+w,u-w file.txt 
    // 给file.txt的属主删除w写权限,属组和其他用户添加w写权限 -r--rw-rw- file.txt
    

    -r–r--rw- file1.txt

    -r–r--rw- file2.txt

    chmod ug+w,o-w file1.txt file2.txt
    // 给file1.txt和file2.txt的属主和属组添加w写权限,给其他用户删除w写权限
    // -rw-rw-r-- file1.txt
    // -rw-rw-r-- file2.txt
    

    -rw-rw-rw- file.txt

    chmod a+x,a-w file.txt
    // 给file.txt的属主,属组,其他用户都增加执行权限,删除写权限 -r-xr-xr-x file.txt
    

    chmod 777
    # 将文件的属主,属组,陌生的权限全部改成可读可写可执行
    

    2、修改属主属组 chown

    chown命令(change own)

    使用该命令:root

    语法:

    chown [-cfhvR] [--help] [--version] user[:group] file...

    参数:

    • user : 新的文件拥有者的使用者 ID
    • group : 新的文件拥有者的使用者组(group)
    • -c : 显示更改的部分的信息
    • -f : 忽略错误信息
    • -h :修复符号链接
    • -v : 显示详细的处理信息
    • -R : 处理指定目录以及其子目录下的所有文件
    • –help : 显示辅助说明
    • –version : 显示版本

    示例:

    将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :

    chown runoob:runoobgroup file1.txt
    

    将目前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:

    chown -R runoob:runoobgroup *
    

    将文件 file1.txt 的拥有者设为 runoob:

    chown runoob file1.txt
    

    3、修改属组 chgrp

    chmod 命令可修改属主和属组,chgrp 命令只能修改属组

    [root@localhost test]# ll
    ---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
    [root@localhost test]# chgrp -v bin log2012.log
    

    “log2012.log” 的所属组已更改为 bin

    [root@localhost test]# ll
    ---xrw-r-- 1 root bin  302108 11-13 06:03 log2012.log
    

    4、特殊权限SUID、SGID、Sticky

    SUID(set user ID):如果设置了suid,那么其他用户执行该文件时,会以属主的身份执行

    SGID(set group ID):如果设置了sgid,那么其他用户执行该文件时,会以属组的身份执行

    Sticky:如果设置了sticky,那么其他用户执行该文件时,会议陌生用户身份执行


    设置特殊权限

    设置SUID:执行权限以s表示

    chmod u+s file.txt
    // 此时file.txt就设置了SUID权限  -rwsrwxrwx file.txt
    

    设置SGID:执行权限以s表示

    chmod g+s file.txt
    // 此时file.txt就设置了SUID权限  -rwxrwsrwx file.txt
    

    设置Sticky:执行权限以t表示

    chmod o+s file.txt
    // 此时file.txt就设置了SUID权限  -rwxrwxrwt file.txt
    

    特殊权限数字表示

    在这里插入图片描述


    5、umask

    umask命令指定在建立文件时预设的权限掩码。将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。

    通俗的讲,就是创建新文件时,生成的默认权限。特权位不参与减法运算,特权位设置什么特权就是什么。后3位由最高权限减去权限掩码得到默认权限。

    最高权限为7777

    第一个7:特权位,有SUID、SGID、Sticky

    第二个7:拥有者权限,rwx

    第三个7:所在群组权限,rwx

    第四个7:默认用户权限,rwx

    示例1:

    设置权限掩码

    umask 0002
    

    创建一个目录

    mkdir test
    

    查询权限

    ls -l
    drwxrwxr-x ... test/
    

    示例2:

    设置权限掩码

    umask 5002
    

    创建一个目录

    mkdir test
    

    查询权限

    ls -l
    drwsrwxr-t ... test/
    

    案例:用户创建 分组 设置权限

    管理用户和用户组相关命令

    情景模拟:

    假设某一个开发团队,有user和admin这两个用户,这两个用户创建的文件全部存放在/var/data目录下。设这个目录的属组为public。如果设置这个目录,使得user和admin创建的文件可以相互访问和修改,并且不允许其他用户的访问,且user不能删除admin用户创建的文件,admin不能删除user用户创建的文件?写出详细的步骤和并操作验证截图。

    1. root用户下,创建两个用户 user 和 admin

      useradd user
      useradd admin
      // 查看用户是否查看成功
      cat /etc/passwd
      
      // 补充:删除用户
      userdel user
      userdel admin
      // 补充:添加用户
      useradd -g public admin // 在有public组的情况下,可以在创建用户时指定所属组
      
    2. root用户下,创建 public 组群

      groupadd public
      
      // 补充:删除组
      groupdel public
      
    3. root用户下,将两个用户归到public组中

      usermod -g public user
      usermod -g public admin
      
    4. root用户下,查看用户与用户组的情况

      groups user admin
      // 展示结果
      user : public
      admin : public
      

      此时,已成功将两个用户归为一组

    5. root用户下,创建 / data目录

      mkdir /data
      
    6. root用户下,查看data目录的权限情况

      cd /
      ls -l
      

      在这里插入图片描述

    7. root用户下,将该目录的属组改为public

      chgrp public data
      
    8. root用户下,如果设置这个目录,使得user和admin创建的文件可以相互访问和修改,并且不允许其他用户的访问

      chmod g+w,o-rx data
      

      在这里插入图片描述

    9. user不能删除admin用户创建的文件,admin不能删除user用户创建的文件

      user用户创建一个user目录,设置权限;admin用户创建admin目录,设置权限

      // user 用户下
      mkdir user
      chmod o-rx user
      
      // admin 用户下
      mkdir admin
      chmod o-rx admin
      

      在这里插入图片描述

    10. 在user目录下创建了a.txt,在admin目录下创建了b.txt。验证,user用户不能删除admin用户的文件,admin用户不能删除user用户的文件

      在这里插入图片描述

  • 相关阅读:
    基本算法2
    基本算法
    读书笔记 《跟老齐学python》
    python杂记 20200207 离线安装 正则
    傻傻分不清之 Cookie、Session、Token、JWT 转载:https://juejin.im/post/5e055d9ef265da33997a42cc
    并发相关 杂记
    原根
    POJ2749 Building roads
    luogu P4735 最大异或和
    SP913 QTREE2
  • 原文地址:https://www.cnblogs.com/turbo30/p/13688191.html
Copyright © 2020-2023  润新知