• Linux基础3(文件权限)


    文件权限

    1、普通权限

    (登陆用户对文件或目录的读写执行的权限)
    普通权限对管理员用户无效

    文件和目录 都有4中类型的用户
    u 所有者 : 文件、目录的创建者
    g 所属组 : 文件、目录属于的用户组
    o 其他用户: 用户既不是文件、目录的创建者,也没有在文件、目录所属的用户组里
    a 所有用户:以上3类用户的总称


    4 2 1 0
    r w x -
    文件或目录权限的类型 读、写、执行 无权限

    查看文件/目录的权限

    ll 文件名
    ll 目录/文件名
    ll -d 目录名

    权限列表 链接个数 所有者 所属组 大小 日期 时间 文件名/目录

    权限列表(由10个字符组成)
    第一列字符 表示文件类型

    1 - 文本文件
    2 d 目录
    3 l 链接文件
    4 s 套接字文件
    5 b 块文件
    6 p 管道文件
    7 c 字符文件

    剩下的9列字符 每3列为一组 分3组
    第一组 表示 所有者权限
    第二组 表示 所属组权限
    第三组 表示 其他用户权限

    每组权限里的

    第一列 r 权限显示位
    第二列 w 权限显示位
    第三列 x 权限显示位

    * 若显示位置是字符 - 表示没有此权限
    权限 文件上 目录上
    r读 看文件的内容 浏览目录下的文件列表
    cat head tail more less ls

    w写 编辑文件内容 创建或删除文件或目录
    vim touch rm mkdir rmdir
    cp mv

    x执行 可以运行文件 可以进入目录
    ./文件名 cd
    /testdir/a.sh


    * 要想让用户对目录有写权限 要同时开放x权限
    * 一旦用户对目录拥有了w权限 ,就对这个目录下的子文件拥有的完全权限


    设置权限命令的语法格式 - chmod

    chmod -R 权限列表 文件名/目录名

    权限列表

    用数字表示
    754
    ugo
    字母表示
    用户类型 赋值符号 权限列表
    u = r w x -
    g +
    o -
    a
    
    = 设置指定的权限
    + 在原有权限的基础上增加权限
    - 在原有权限的基础上去掉权限

    实例

    chmod 700 文件名
    chmod 754 目录名
    chmod u-x 文件名/目录名/文件名
    chmod u=rx,g=r,o=r 目录名/文件名
    chmod a=r 目录名/文件名
    chmod -R 700 /teadir 

    mkdir -m 700 目录名 //创建目录时指定目录的权限,
    //若不指定权限系统设置的默认权限

    查看创建文件时的默认权限

    umask -S
    umask
    普通用户 特权用户
    文件 644 644
    目录 775 755

    2、特殊权限

    SUID 、 SGID 、 Set stikcy
    字母 数字
    SUID s 4
    SGID s 2
    Set sticky t 1

    SUID 权限位只能设置在二进制文件上(通常就是系统命令)
    当用户运行设置了suid权限位的文件时,会拥有文件所有者的权限
    suid权限只在执行过程中有效。
    用户要对文件本身有执行权限,才能使用文件的suid权限。

    u x
    用字母s表示,占用文件所有者的执行位显示
    当s小写时,文件的所有者对文件有执行权限
    当s大写时,文件的所有者对文件没有执行权限
    对应的数字权限是数字 4

    chmod u+s /usr/sbin/useradd
    chmod u-s /usr/sbin/useradd

    SGID 既可以设置在文件上,又可以设置在目录上,通常设置在目录上。
    设置上文件上,当用户执行文件时,拥有文件所属组的权限
    设置在目录上,在目录下创建的子文件、子目录继承父目录的所属组。

    用字母s表示,占用文件、或目录的所属组的执行权限位显示
    当s小写时,文件的所属组用户对目录有执行权限
    当s大写时,文件的所属组用户对目录没有执行权限
    对应的数字权限 是 数字2

    chmod g+s /usr/sbin/useradd
    chmod g-s /usr/sbin/useradd

    Set stikcy 粘滞位(防删除位)
    只能设置在目录上。
    当给目录设置t权限位,目录下的文件只能被文件的所有者删除、
    不能被其他用户移动 、改名、编辑 (但可以拷贝)
    此权限对管理员用户无效。

    用字母t表示,占用目录其他用户执行权限位显示
    当t小写时, 其他用户对目录有执行权限
    当t大写时, 其他用户对目录没有执行权限
    对应的数字权限 是 数字1
    suid sgid set-sticky
    4 2 1
    s s t
    u-x g-x o-x

    1755 rwxr-xr-t

    7777 rwsrwsrwt

    mkdir -m 000 /dir10
    useradd u10
    useradd u12
    useradd u3
    useradd u2

    让系统用户u2对 /dir10 目录有完全权限。
    只让系统用户u2对 /dir10 目录有完全权限。
    只让系统用户u2、u3 对 /dir10 目录有完全权限。

    3、文件访问控制列表

    - facl
    dumpe2fs /dev/sda2 | grep --color acl

    getfacl 目录名/文件名

    getfacl /dir10


    在不改变本身权限的情况下,单独设置某个用户或用户组 对 某个文件或目录的访问权限。

    setfacl 选项 [参数]:用户类型:权限列表 文件名/目录名

    选项
    -m 设置facl权限
    -x 删除facl权限(一次删除一个)
    -b 删除目录或文件的所有acl权限
    -k 删除目录的默认acl权限
    -R 递归设置
    setfacl -R -m u:u100:rwx /dir10

    参数
    m 设置acl_mask 码的权限

    acl权限mask码 : 控制acl用户的权限
    默认acl_mask 值是rwx
    授权用户的acl的最终权限是 授权权限与acl_mask码逻辑运算后的权

    setfacl -m m:r /dir10

    d 设置目录的默认acl权限
    setfacl -m d:u:u1:rwx /dir6


    用户类型 u 设置某个用户的访问权限
    g 设置某个用户组的访问权限

    权限列表 r w x

    mkdir -m 755 /dir6

    让系统用户u2 对 /dir6目录下的所有文件有rwx权限


    4、文件的隐藏权限

    查看文件的隐藏属性
    lsattr 文件名

    设置
    chattr +-=a|i|A 文件名

    i 文件的内容不能被编辑 (管理员也不可以)
    a 只能以追加的方式给文件添加新内容
    A 不更新文件访问时间

    练习

    一、基本权限和归属

    1,长格式显示/etc/passwd和/boot,分别说出他们相应的权限
    2,用字符权限形式将Desktop(包括里面的文件)权限更改成770
    3,用数字权限形式将Desktop(包括里面的文件)权限更改成755
    4,编写test.sh脚本,里面内容是 echo Hello World。设置允许执行该脚本
    5,查看umask值,代表什么意思
    6,创建一个/opt/studir目录,权限为755。将/opt/studir目录所有者改成student,所属组为users
    7,在将/opt/studir目录包括目录下的所有文件和子目录所有者改成stu01
    8,删除实验中创建的账户与组

    二、附加权限控制

    1,长格式显示/tmp和/usr/bin/passwd,查看其权限
    2,创建普通账户tom,查找mkdir命令在什么地方,将其拷贝到/bin下改名为smkdir,给其设置suid权限
    3,tom登陆使用mkdir创建/tmp/test1目录,查看其权限
    4,tom登陆使用smkdir创建/tmp/test2目录,查看其权限
    5,删除smkdir命令
    6,查找cp命令在什么地方,将其拷贝到/bin下改名为gcp,给其设置sgid权限
    7,用tom账户登录,使用cp命令创建/tmp/file1文件。使用gcp命令创建/tmp/file2文件,查看这2个文件权限部分区别。
    8,删除gcp命令,tom账户
    9,创建user01,user02账户,group01组。/software目录,用user01在该目录下创建test01,user02在该目录下创建test02,查看其权限
    10,更改software目录所有者为root,所属组为group01,允许所有人对此目录有读、写、执行权限,并且在该目录下创建文件和目录都自动继承software的属组
    11,删除user01,user02账户,group01组,以及/software目录
    12,查看当前磁盘分区情况,查看根分区是否支持acl
    13,查看/root的acl权限,创建账户jack,jack是否可以进入/root?为什么
    14,使用acl权限设置jack能够进入/root
    15,创建/data目录,设置在/data目录下新建的文件和目录,jack都有读、写、执行权限
    16,清除/data的acl权限
    17,删除/data目录与jack账户Linux基础3(用户/组管理,rpm,yum,源码安装软件)
    公众号请关注:侠之大者
  • 相关阅读:
    【概念】指针
    【c++】随机数
    组装一台计算机
    模拟打印机
    实现手机的某些功能
    作业
    static 静态内部类
    java中编译报错 ClassCastException 是什么原因,如何处理
    作业1 2
    作业2
  • 原文地址:https://www.cnblogs.com/kamil/p/5411515.html
Copyright © 2020-2023  润新知