4、权限管理

基本权限:UGO

权限概念

由超管决定某个计算机用户,能否访问某个文件。(图片文件,视频文件,普通文件)只有当权力冲突时,权限才会起作用

权限的三类对象:UGO

  • u:所属主(文件或目录的创建者,也就是主人)
  • g:所属组(文件或目录主人的用户组组员)
  • o:其他人(除了上面两种以外的其他用户)
  • a:所有用户,也就是u+g+o,上面三类对象的简写

权限的三种类型

  • 可读:r = 4
  • 可写:w = 2
  • 可执行:x = 1

注意:数字表示可以用数字代替字母,例如:给某个用户r和w权限,可以写成4+2,也就是6

三种权限对与文件和目录的含义

权限类型 对文件的含义 对目录的含义
r(读) 可以读取文件内容 可以看到目录所包含的文件
w(写) 可以更改文件内容 可以增删改目录中的文件
x(执行) 可以作为程序执行 可以进入目录,但是不能看到和修改目录中的文件

查看文件权限详情

使用ls -l 命令,或者 ll命令,后者是前者的简写

以file.txt文件为例:

权限详情如下:

权限表达式

可以使用+、-、=来设置权限对象的权限类型,其中权限类型可以用字母也可以用数字

  • +:新增权限

    例如:给属主添加r和w权限,也就是读写权限

    • 字母表达式:u+r+w

    • 数字表达示:u+6

    注意:假设添加已有的权限类型,不会有任何变化,也不会报错

  • -:删除权限

    例如:给属组去掉 x 权限,也就是执行权限

    • 字母表达式:g-x
    • 数字表达式:g-1

    注意:假设删除本来就没有的权限类型,不会有任何变化,也不会报错

  • =:强制赋值权限

    例如:给属主强制赋值r权限,也就是不管属主有无什么权限,强制属主只有r权限

    • 字母表达式:u=r
    • 数字表达式:u=4

设置多个权限对象

使用逗号隔开即可,如果一次性设置三个权限对象的权限类型,可以把权限对象省略,但是要注意顺序是:属主、属组、其他人

例如:u=7,g=7,o=4 等价于:774

chmod:设置文件或目录的权限

词组change mode的缩写,其功能是改变文件或目录权限的命令。默认只有文件的所有者和管理员可以设置文件权限,普通用户只能管理自己文件的权限属性。

设置权限时可以使用数字法,亦可使用字母表达式,对于目录文件,建议加入-R参数进行递归操作,这意味着不仅对于目录本身,而且也对目录内的子文件/目录进行新权限的设定。

语法格式:chmod 参数 权限表达式 文件名

常用参数

参数 描述
-c 改变权限成功后再输出成功信息
-f 改变权限失败后不显示错误信息
-R 递归处理所有子文件
-v 显示执行过程详细信息
--help 显示帮助信息
--no-preserve-root 不特殊对待根目录
--preserve-root 禁止对根目录进行递归操作
--reference 使用指定参考文件的权限
--version 显示版本信息

使用示例

  • 设置文件file.txt的权限为774,并显示执行过程

    [root@lyy tmp]# chmod -v 774 file.txt
    mode of "file.txt" changed from 0644 (rw-r--r--) to 0775 (rwxrwxr-x)
    
  • 设置目录:dir2可以被所有人进入且查看内部文件,并显示执行过程

    [root@lyy tmp]# chmod -v a=r+x dir2
    mode of "dir2" changed from 0755 (rwxr-xr-x) to 0555 (r-xr-xr-x)
    

chown:更改文件或目录的所属主和组

chown命令来自英文词组change owner的缩写,其功能是改变文件或目录的用户和用户组信息。管理员可以改变一切文件的所属信息,而普通用户只能改变自己文件的所属信息。

语法格式:chown 参数 所属主.所属组 文件名

语法格式:chown 参数 所属主:所属组 文件名

上面中都可以

常用参数

参数 描述
-c 显示所属变更信息
-f 若该文件拥有者无法被更改也不显示错误
-h 仅对链接文件(而非真正指向的文件)进行更改
-P 不遍历任何符号链接
-R 递归处理所有子文件
-v 显示执行过程详细信息
--help 显示帮助信息
--no-preserve-root 不特殊对待根目录
--preserve-root 不允许在根目录上执行递归操作
--version 显示版本信息

使用示例

  • 改变文件file.txt的所属主为liu

    [root@lyy tmp]# chown liu file.txt
    
  • 改变文件file.txt的所属组为liu( " . "也可以用 " : " 代替)

    [root@lyy tmp]# chown .liu file.txt
    
    [root@lyy tmp]# chown :liu file.txt
    
  • 同时改变文件file.txt的所属主为root,所属组为root

    [root@lyy tmp]# chown root.root file.txt
    
    [root@lyy tmp]# chown root:root file.txt
    
  • 改变目录:dir1及目录下子文件的属主和组都为liu

    [root@lyy tmp]# chown liu.liu dir1
    
    [root@lyy tmp]# chown -R liu:liu dir1
    

chgrp:更文件或目录的所属组

词组”change group“的缩写,其功能是用于更改文件所属用户组。Linux系统中常用chown命令更改文件所属用户及用户组身份信息,如仅需要修改文件所属用户组身份信息,则可以使用chgrp命令更快地完成。

语法格式:chgrp [参数] 文件/目录名

常用参数

参数 描述
-c 显示调试信息
-f 不显示错误信息
-h 对符号链接文件做修改
-L 遍历每个符号链接
-P 不遍历每个符号链接
-R 递归处理所有子文件
-v 显示执行过程详细信息
--help 显示帮助信息
--vesion 显示版本信息

使用示例

  • 改变目录dir1的所属组为liu

    [root@lyy tmp]# chgrp liu dir1
    
  • 改变目录dir1及目录下所以子文件的所属组为:liu

    [root@lyy tmp]# chgrp -R liu dir1
    

进阶权限:ACL

ACL简介

ACL(access control list),访问控制列表,通过给指定的用户或组制定ACL策略规则来控制用户对文件或目录的访问

ACL和UGO的区别

  • UGO可设置的权限对象中,属主和属组都只能有一个,无法设置多个用户或用户组对于相同文件或目录的不同权限,其余用户都属于其他里面

    假设想要设置用户对于file.txt文件的访问,用户1的权限只能是 r 权限,用户2的权限只能是 w 权限,用户3的权限只能是 x 权限,使用UGO显然无法完成预期的效果

  • ACL可以设置多个用户或用户组对同一个文件或目录的不同访问权限,属于是UGO的进阶版

    假设设置用户对于file.txt文件的访问权限,可以这样设置:用户1设置r权限,用户2设置rw权限,用户3设置x权限,用户4设置rwx权限,用户5什么权限都没有等等

    用户组也是同理

权限的优先级

  1. 如果文件的属于者访问文件,那么将使用属主权限进行访问限制
  2. 如果访问的用户设置了acl权限,那么使用acl对该用户设置的权限,对该用户进行访问限制
  3. 如果访问的用户在属主的用户组内,那么将使用属组权限进行访问限制
  4. 如果访问的用户在设置了acl权限的用户组内,那么使用acl对该用户组设置的权限,对该用户进行访问限制
  5. 除去上面情况外的用户来访问,则使用其他人权限进行访问限制

不管是文件还是组,只要使用acl设置后都以acl设置的权限为最高级(针对ugo)

设置acl策略规则

假设有用户:user1;用户组grp1;

  • 给用户user1设置acl规则为:rw

    u:user1:rw
    
  • 给用户组grp1设置acl规则为:rwx

    g:grp1:rwx
    
  • 给文件拥有人设置acl规则为:rwx

    U::rwx
    
  • 文件文件属主所在的用户组设置acl规则为:rw

    g::rw
    
  • 给文件其他人设置acl规则:r

    o::r
    

getfacl:显示文件或目录的acl策略规则

getfacl命令来自英文词组get file access control list的缩写,其功能是显示文件或目录的ACL策略。

语法格式:getfacl 参数 文件或目录名

常用参数

参数 描述
-a 显示文件的ACL策略
-c 不显示注释标题
-d 显示目录的ACL策略
-e 显示所有的有效权限
-h 显示帮助信息
-L 找到符号链接对应的文件
-n 显示用户ID和组群ID
-P 不找符号链接对应的文件
-R 递归处理所有子文件
-t 设置表格输出格式
-v 显示版本信息

使用示例

  • 显示文件file的acl策略

    [root@lyy tmp]# getfacl file
    # file: file
    # owner: root
    # group: root
    user::rw-
    user:liu:rw-
    group::r--
    group:group01:r--
    mask::rw-
    other::r--
    
  • 不显示注释

    [root@lyy tmp]# getfacl -c file
    user::rw-
    user:liu:rw-
    group::r--
    group:group01:r--
    mask::rw-
    other::r--
    
  • 以表格的形式显示

    [root@lyy tmp]# getfacl -t file
    # file: file
    USER   root      rw-     
    user   liu       rw-     
    GROUP  root      r--     
    group  group01   r--     
    mask             rw-     
    other            r--
    

setfacl:设置文件或目录的acl策略规则

词组set file access control list的缩写,其功能是设置文件ACL策略规则。FACL即文件访问控制列表策略

通过该技术可以更加精准地控制权限的分配,例如仅允许某个用户访问指定目录,或仅有某个用户才具有写入权限。把权限约束在一个极小的范围内,系统也就更加安全了。

语法格式:setfacl 参数 给对象设置的acl规则 文件或目录名

常用参数

参数 描述
-b 删除指定文件或目录所配置的所有acl规则
-d 应用到默认访问控制列表
-k 移除默认访问控制列表
-L 跟踪符号链接文件
-m 更改或添加指定对象的ACL策略规则
-P 找到符号链接对应的文件
-R 递归处理所有子文件
-x 删除指定对象的所有ACL规则
--help 显示帮助信息
--vesion 显示版本信息

使用示例

  • 对用户liu设置acl规则,允许对文件file进行读写。对用户user01设置acl规则,允许对文件读

    // 为用户liu设置acl
    [root@lyy tmp]# setfacl -m u:liu:rw file
    [root@lyy tmp]# getfacl file	// getfacl:查看文件或目录的acl策略规则
    # file: file					// 文件名
    # owner: root					// 属主
    # group: root					// 属组
    user::rw-						// 属主的权限
    user:liu:rw-					// 单独为用户liu设置的权限
    group::r--						// 属组的权限
    mask::rw-						// acl掩码
    other::r--						// 其他人权限
    
    // 为用户user01设置acl
    [root@lyy tmp]# setfacl -m u:user01:r file
    [root@lyy tmp]# getfacl file
    # file: file
    # owner: root
    # group: root
    user::rw-
    user:liu:rw-					// 单独为用户liu设置的权限
    user:user01:r--					// 单独为用户user01设置的权限
    group::r--
    mask::rw-
    other::r--
    
    
  • 删除用户liu在file文件的所有权限

    [root@lyy tmp]# setfacl -x liu file
    
    // 该文件已经没有用户liu的acl权限了,liu再访问该文件的权限就是其他人权限了
    [root@lyy tmp]# getfacl file
    # file: file
    # owner: root
    # group: root
    user::rw-
    user:user01:r--
    group::r--
    mask::r--
    other::r--
    
  • 删除文件file配置的所有acl规则

    [root@lyy tmp]# setfacl -b file
    
    // file文件配置的所有acl规则都被删除了
    [root@lyy tmp]# getfacl file
    # file: file
    # owner: root
    # group: root
    user::rw-
    group::r--
    other::r--
    
  • 为目录dir配置用户liu的acl规则为:rwx,配置用户组group01的acl规则为:rx。(注意:-R必须在-m前面,否则会报错)

    // 为目录dir配置用户liu的acl规则为:rwx
    [root@lyy tmp]# setfacl -Rm g:group01:rx dir
    
    // 为目录dir配置用户组group01的acl规则为:rx
    [root@lyy tmp]# setfacl -Rm u:liu:rwx dir
    
    // 使用getfacl查看是否配置成功
    [root@lyy tmp]# getfacl dir
    # file: dir
    # owner: root
    # group: root
    user::rwx
    user:liu:rwx			// 为用户liu配置的acl规则
    group::r-x
    group:group01:r-x		// 为用户组group01配置的acl规则
    mask::rwx
    other::r-x
    
  • 对其他用户(o)设置acl规则,可以对文件file进行读

    [root@lyy tmp]# setfacl -m o::r file
    

ls -l与getfacl

ls -l命令(简写为ll)并不正确的显示拥有acl策略规则的文件或目录

  • 使用ls -l命令查看一个拥有acl策略的文件file01:
-rw-rw-r--+ 1 root root 0 4月  25 06:11 file01
  • 使用ls -l命令查看一个没有acl策略的文件file02
-rw-r--r--. 1 root root 0 4月  25 07:32 file02

通过上面对比可以看出:selinux标识处,显示+的表示该文件或目录拥有acl策略,如果是一个 " . " 则表示该文件没有acl策略

所以当我们使用ls -l命令查看文件权限时,发现selinux标识处是 + ,那么就需要使用getfacl命令来查看该文件

特殊权限

特殊权限概述

linux文件的三种特殊权限分别是:suid权限、sgid权限、sticky权限;

  • suid权限作用于文件属主
  • sgid权限作用于属组上
  • sticky权限作用于other其他上

suid权限

作用:让普通用户临时拥有该文件的属主的执行权限

注意:suid权限只能应用在二进制可执行文件(命令)上,而且suid权限只能设置在属主位置上。

增加、移除suid权限

  • suid权限使用s表示,增加权限u+s,移除权限u-s;

  • suid权限也可以使用数字形式表示,0表示去除suid权限,4表示添加suid权限,而且是在原权限的数字表达形式开头加0或4

    如:0755移除suid权限,4755添加suid权限。

使用示例:

例如,普通用户无法使用cat命令查看/root里面的文件,因为权限不够

想要普通用户也可以使用cat命令查看/root里面的文件,这需要切换到超级管理员给/usr/bin/cat文件添加suid,让普通用户使用cat命令时的权限跟root一样

最后记得将移除suid权限

过程如下

// 普通用户无法使用cat命令查看root里面的文件,权限不够
[liu@lyy ~]$ cat /root/rootdir/file
cat: /root/rootdir/file: 权限不够

// 切换到root超级管理员的账号
[liu@lyy ~]$ su - root
密码:
上一次登录:四 4月 25 17:35:55 CST 2024从 192.168.10.1pts/1 上
    
// 给cat文件添加suid权限。下面命令等价于:chmod 4755 /user/bin/cat
[root@lyy ~]# chmod u+s /usr/bin/cat

// 查看文件权限,发现属主位置上的执行权限变为:s。表示suid权限添加成功
[root@lyy ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54080 8月  20 2019 /usr/bin/cat
    
// 切换到普通用户:liu
[root@lyy ~]# su - liu
上一次登录:四 4月 25 19:43:31 CST 2024pts/1 上
    
// 再使用cat命令,发现可以查看/root中的文件了
[liu@lyy ~]$ cat /root/rootdir/file
宋嘉龙大傻逼

// 实验完成,切换到超级管理员的账号,移除suid权限
[liu@lyy ~]$ su - root
密码:
上一次登录:四 4月 25 17:35:55 CST 2024从 192.168.10.1pts/1 上

// 移除suid权限。下面命令等价于:chmod 0755 /user/bin/cat
[root@lyy ~]# chmod u-s /usr/bin/cat

// 使用ll命令查看,确认移除完成
[root@lyy ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54080 8月  20 2019 /usr/bin/cat

注:以// 开头的是注释,并不是命令或运行结果

总结

  • 给cat文件添加suid权限。下面两个命令等价

    [root@lyy ~]# chmod 4755 /user/bin/cat
    [root@lyy ~]# chmod u+s /usr/bin/cat
    
  • 移除cat文件的suid权限。下面两个命令等价

    [root@lyy ~]# chmod 0755 /user/bin/cat
    [root@lyy ~]# chmod u-s /usr/bin/cat
    

sgid权限

作用:sgid权限一般应用在目录上,当一个目录拥有sgid权限时,任何用户在该目录下创建的文件的属组都会继承该目录的属组。

注意:sgid只能作用在属组位置上

增加、移除sgid权限

  • sgid权限也使用s表示,增加权限g+s,移除权限g-s;
  • sgid权限也可以使用数字形式表示,0表示去除sgid权限,2表示添加sgid权限,而且是在原权限的数字表达形式开头加0或2,如:0755移除sgid权限,2755添加sgid权限。

使用示例

// 当前登录的用户身份:root
// 查看目录dir1的详细可知,他的属组是用户组:liu
[root@lyy rootdir]# ll -d dir1
drwxr-xr-x. 2 root liu 6 4月  26 07:41 dir1

// 为目录dir1添加sgid权限。等价于命令:chmod 2755 dir1
[root@lyy rootdir]# chmod g+s dir1

// 查看目录dir1的详细信息,发现属组位置的执行权限变为:s,说明成功添加了sgid权限
[root@lyy rootdir]# ll -d dir1
drwxr-sr-x. 2 root liu 6 4月  26 07:41 dir1

// 使用root身份在目录dir1下面创建文件file
[root@lyy rootdir]# touch dir1/file

// 查看文件file的详细信息,发现文件还是属于用户组liu
[root@lyy rootdir]# ll dir1/file
-rw-r--r--. 1 root liu 0 4月  26 07:44 dir1/file

// 移除目录dir1的sgid权限。等价于命令:chmod 0755 dir1
[root@lyy rootdir]# chmod g-s dir1

// 再用root身份在目录dir1下创建一个文件file02
[root@lyy rootdir]# touch dir1/file02

// 查看文件file02的详情,发现他的属组又是root组的了
-rw-r--r--. 1 root root 0 4月  26 07:46 dir1/file02

// 下面是两个文件对比,一个在目录有sgid权限时添加的,一个是在目录没有sgid权限时添加的
[root@lyy rootdir]# ll dir1
总用量 0
-rw-r--r--. 1 root liu  0 4月  26 07:44 file
-rw-r--r--. 1 root root 0 4月  26 07:46 file02

总结:

  • 添加目录dir1的sgid权限。下面两个命令等价

    [root@lyy rootdir]# chmod 2755 dir1
    [root@lyy rootdir]# chmod g+s dir1
    
  • 移除目录dir1的sgid权限。下面两个命令等价

    [root@lyy rootdir]# chmod 0755 dir1
    [root@lyy rootdir]# chmod g-s dir1
    

sticky权限

作用:sticky权限一般针对目录来设置,作用是只允该目录下的文件的创建者删除自己的创建的文件,不允许其他人删除文件。(root用户除外,因为root用户是超级管理员)

注意:sticky权限只能设置在other位置上。

添加、移除sticky权限

  • sticky权限使用t表示,增加权限o+t,移除权限o-t;
  • sticky权限也可以使用数字形式表示,0表示去除权限,1表示添加权限,而且是在原权限的数字表达形式开头加0或1,如下:如:0755移除sticky权限,1755添加sticky权限。

使用示例

// 登录普通用户:user01,并创建目录:user01_dir
[user01@localhost tmp]$ mkdir user01_dir

// 在目录下创建文件:file
[user01@localhost tmp]$ touch user01_dir/file

// 将目录user01_dir及下面的子文件的权限都设置成可读可写可执行
[user01@localhost tmp]$ chmod -R 777 user01_dir

// 给目录user01_dir添加sticky权限。等价于命令:chmod 1777 user01_dir
[user01@localhost tmp]$ chmod o+t user01_dir

// 查看目录user01_dir的详细信息,发现其他人的执行权限变为:t,说明sticky权限设置成功
[user01@localhost tmp]$ ll -d user01_dir
drwxrwxrwt. 2 user01 user01 18 4月  26 00:19 user01_dir

// 切换另一个普通用户:user02
[user01@localhost tmp]$ su - user02
密码:

// 对用户user01创建的文件进行读写,发现都么有任何问题
[user02@localhost tmp]$ vim user01_dir/file
[user02@localhost tmp]$ cat user01_dir/file
111
222
333

// 但是无法删除文件,因为该文件所在的目录有sticky权限,除了属主和root以为都不能删
[user02@localhost tmp]$ rm user01_dir/file
rm: 无法删除"user01_dir/file": 不允许的操作

// 切换到用户user01,并删除文件,删除成功
[user01@localhost ~]$ rm /tmp/user01_dir/file    

// 使用root超管的身份,移除user01_dir目录的sticky权限。等价于命令:chmod 0777 user01_dir
[root@localhost ~]# chmod o-t /tmp/user01_dir

// 查看是否移除成功
[root@localhost ~]# ll -d /tmp/user01_dir
drwxrwxrwx. 2 user01 user01 18 4月  26 00:25 /tmp/user01_dir

总结

  • 为目录:user01_dir添加sticky权限。下面两个命令等价

    [user01@localhost tmp]$ chmod 1777 user01_dir
    [user01@localhost tmp]$ chmod o+t user01_dir
    
  • 移除目录:user01_dir的sticky权限。下面两个命令等价

    [root@localhost ~]# chmod 0777 user01_dir
    [root@localhost ~]# chmod o-t /tmp/user01_dir
    

特殊权限的大写与小写

使用 ll 命令后,可以通过特殊权限的大小写来分辨是否开启了对象的执行权限:

  • 当特殊权限为大写时,该对象没有执行权限
  • 当特殊权限为小写是,该对象有执行权限

如下:

  • 这是一个什么权限也没有的文件file

    [root@localhost rootdir]# ll /root/rootdir/file
    ----------. 1 root root 0 4月  26 01:18 /root/rootdir/file
    
  • 为他加上全部特殊权限后,特殊权限显示大写,因为他的三个权限对象都没有执行权限

    [root@localhost rootdir]# chmod u+s file
    [root@localhost rootdir]# chmod g+s file
    [root@localhost rootdir]# chmod o+t file
    
    [root@localhost rootdir]# ll /root/rootdir/file
    ---S--S--T. 1 root root 0 4月  26 01:18 /root/rootdir/file
    
  • 为三个权限对象加上执行权限后,特殊权限的位置就显示小写了

    [root@localhost rootdir]# chmod u+x file
    [root@localhost rootdir]# chmod g+x file
    [root@localhost rootdir]# chmod o+x file
    
    [root@localhost rootdir]# ll /root/rootdir/file
    ---s--s--t. 1 root root 0 4月  26 01:18 /root/rootdir/file
    

隐藏权限

chattr:更改文件的隐藏权限

词组change attribute的缩写,其功能是更改文件隐藏权限

常用的ls命令仅能查看文件的一般权限、特殊权限、SELinux安全上下文与是否有FACL(文件访问控制列表)等情况,但却无法查看到文件的隐藏权限

语法格式:chattr 参数 权限 文件名

常用参数

参数 描述
-R 递归处理所有子文件
-v 设置文件或目录版本
-V 显示执行过程详细信息
+ 开启文件或目录的指定隐藏属性
关闭文件或目录的指定隐藏属性
= 设置文件或目录的指定隐藏属性

常用权限

参数 描述
i 无法对文件进行任何修改(包括移动、重命名、删除等)
a 仅允许补充内容,无法覆盖/删除内容
S 文件内容在变更后立即同步到硬盘
s 彻底从硬盘中删除,不可恢复
A 不再修改这个文件或目录的最后访问时间
b 不再修改文件或目录的存取时间
D 检查压缩文件中的错误
d 使用dump命令备份时忽略本文件/目录
c 默认将文件或目录进行压缩
u 当删除某文件后依然保留其在硬盘中的数据
t 让文件系统支持尾部合并
x 可以直接访问压缩文件中的内容

使用示例

  • 给文件file添加隐藏权限:i,无法对file文件进行任何修改

    [root@localhost rootdir]# chattr +i file
    
  • 移除文件file的隐藏权限:i

    [root@localhost rootdir]# chattr -i file
    
  • 为目录:dir1及其他的子文件都添加隐藏权限:i,并显示执行过程

    [root@localhost rootdir]# chattr -R -V +i dir1
    chattr 1.42.9 (28-Dec-2013)
    dir1的标志被设为 ----i-----------
    
  • 移除目录:dir1及其他的子文件的隐藏权限:i,并显示执行过程

    [root@localhost rootdir]# chattr -R -V -i dir1
    chattr 1.42.9 (28-Dec-2013)
    dir1的标志被设为 ----------------
    

lsattr:查看文件的隐藏权限

词组list attribute的缩写,其功能是显示文件的隐藏属性。

隐藏属性也叫隐藏权限,顾名思义就是用chattr命令添加在文件上的隐藏权限属性。这些属性信息用常规的ls命令无法查看,需要使用lsattr命令查看。

语法格式:lsattr 参数 文件名

常用参数

参数 描述
-a 显示目录中的所有文件
-d 仅显示目录名称
-D 显示属性的名称及默认值
-E 显示从用户设备数据库中获得的当前值
-F 设置用户定义的格式
-l 显示设备的逻辑名称
-R 递归处理所有子文件
-V 显示版本信息

使用示例

  • 查看指定文件:file的隐藏属性

    [root@localhost rootdir]# lsattr file
    ----i-d--------- file
    
  • 查看指定目录dir1的隐藏属性

    [root@localhost rootdir]# lsattr -d dir1
    ---------------- dir1
    
  • 查看指定目录dir1中全部文件的隐藏属性

    [root@localhost rootdir]# lsattr -R dir1
    ---------------- dir1/file01
    ---------------- dir1/file02
    ---------------- dir1/file03
    

掩码

掩码的作用

Linux系统对于普通文件的默认权限是0666,目录的默认权限是0777

但是为什么我们创建的文件或目录不是这个权限呢,如下

[root@localhost rootdir]# touch file
[root@localhost rootdir]# mkdir dir
[root@localhost rootdir]# ll
总用量 0
drwxr-xr-x. 2 root root 6 4月  26 16:40 dir
-rw-r--r--. 1 root root 0 4月  26 16:39 file

出现上述原因是因为文件和目录的权限都经过掩码过滤了

使用umask命令查看掩码的值

[root@localhost rootdir]# umask
0022

经过掩码过滤(也就是按位相减),就得到我们现在看到的文件和目录的权限:0644和0755

umaks:设置/查看掩码

词组“user file-creation mode mask”的缩写,其功能是用于管理权限掩码。umask中文常被译为文件掩码,权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可获得建立文件时预设的权限

语法格式:umask [参数] [权限掩码]

常用参数

参数 描述
-p 输出的掩码可以直接作为指令执行
-S 使用文字来表示权限掩码

使用示例

  • 查看当前系统的掩码

    [root@localhost rootdir]# umask
    0022
    
  • 设置掩码为0111

    [root@localhost rootdir]# umask 0111
    
  • 使用文字表示权限掩码

    [root@localhost rootdir]# umask -S
    u=rwx,g=rx,o=rx
    
posted @ 2024-06-28 11:09  7七柒  阅读(84)  评论(0)    收藏  举报