【笔记】Linux文件权限和属性

前言

Linux权限学习笔记

查看权限

查看指定目录下的所有文件的权限

1
ls -l <dir>
1
字段1字段2字段3字段4 所属主 所属组 文件大小 上次修改时间 文件名

字段1:文件类型

-:普通文件
d:目录
l:符号链接
b:块设备

字段2:所属者的读写执行权限
字段3:所属组的读写执行权限
字段4:非所属者和所属组的读写执行权限

查看当前目录下的所有文件的权限

1
ls -l

查看指定文件权限

1
ls -l <file>

查看指定目录权限

1
ls -ld <dir>

修改文件权限

修改指定权限位

-r:递归操作
<file>:文件路径
<attribution>:归属关系

u:所属主
g:所属组
o:其他

<authority_type> :权限符号

+:提权
-:降权
=:权限赋值

<authority_value>:权限值

r:读权限(值为4
w:写权限(值为2
x:执行权限(值为1

1
chmod <attribution><authority_type><authority_value> <file>

粘滞位

  • 粘滞位针对目录赋权,目录中创建的文件只有建立者可以删除
1
chmod o+t <dir>
1
chmod o-t <dir>

通过权限值修改所有权限位

  • 三位数
    • 第一位表示所属主的权限值
    • 第二位表示所属组的权限值
    • 第三位表示其他的权限值

<authority_value>:权限值

7:可读(4)可写(2)可执行(1)
6:可读(4)可写(2)不可执行(0)
5:可读(4)不可写(0)可执行(1)
4:可读(4)不可写(0)不可执行(0)
3:不可读(0)可写(2)可执行(1)
2:不可读(0)可写(2)不可执行(0)
1:不可读(0)不可写(0)可执行(1)
0:不可读(0)不可写(0)不可执行(0)

1
chmod <authority_value><authority_value><authority_value> <file>
  • 四位数
    • 第一位表示特殊权限值
    • 第二位表示所属主的权限值
    • 第三位表示所属组的权限值
    • 第四位表示其他的权限值

<special_authority_value>:特殊权限值

1:粘滞位
2:SGID
4:SUID

1
chmod <special_authority_value><authority_value><authority_value> <file>

修改文件归属

修改文件所属主

<user>:用户名

1
chown <user> <file>

修改文件所属组

<group>:组名

1
chgrp <group> <file>

suid和sgid

suid

  • suit针对可执行文件赋权,谁执行这个文件,这个文件的所属者就是谁
1
2
3
chmod u+s <file>

chmod u-s <file>

sgid

  • sgit针对目录赋权,在该目录中创建的文件所属组继承父目录的所属组
1
2
3
chmod g+s <dir>

chmod g-s <dir>

修改文件属性

查看所有可以修改的文件属性

  • 从帮助文件中查看所有可以修改的文件属性
1
man chattr

修改文件属性

  • 添加只读属性
1
chattr +i <file>
  • 通过修改passwdshadow的文件属性,添加只读属性,从而实现不允许创建用户
1
chattr +i /etc/passwd /etc/shadow

权限掩码

  • 新建文件的默认文件权限 = 文件默认最高权限(666) - 当前用户的权限掩码
  • 新建文件的默认目录权限 = 目录默认最高权限(777) - 当前用户的权限掩码

查看权限掩码

1
umask

002:普通用户的缺省值
022:root用户的缺省值

修改权限掩码

/etc/bashrc
1
2
3
4
5
6
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ];
then
umask 002
else
umask 022
fi

完成

参考文献

哔哩哔哩——千锋教育网络安全学院