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

前言

Linux权限学习笔记

查看权限

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

<dir>:指定目录,如果不指定,查看的是当前目录

1
ls -l <dir>

查看指定文件的权限

<file>:指定文件

1
ls -l <file>

查看目录权限

1
ls -ld <dir>

权限解读

1
字段1字段2字段3字段4 所属者 所属组 文件大小 上次修改时间 文件名

字段1:文件类型

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

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

修改文件权限

<file>:文件路径
<attribution>:归属关系

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

<authority_type> :权限符号

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

<authority_value>:权限值

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

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

用数字表示权限值

<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> <file>

特殊权限的数字表示法

粘滞位
1
chmod 1777 <file>
suid
1
chmod 4777 <file>
sgid
1
chmod 2777 <file>

修改目录权限

-r:递归操作

1
chmod -r <authority_value> <file>

修改文件所属者

<user>:用户名

1
chowm <user> <file>

修改文件所属组

<group>:组名

1
chgrp <group> <file>

粘滞位

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

chmod o-t <dir>

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

修改文件属性

i:文件不可修改属性

1
chattr +i <file>

不允许创建用户

  • 修改passwdshadow文件属性,添加不可修改属性,从而实现不允许创建用户
1
chattr +i /etc/passwd /etc/shadow

默认权限

  • 默认文件权限 = 文件默认最高权限(666) - 当前用户的umask值
  • 默认目录权限 = 目录默认最高权限(777) - 当前用户的umask值
    • 普通用户的默认umask值:0002
    • root用户的默认umask值:0022
    • 企业中推荐的默认umask值:0027

查看umask值

1
umask

修改umask值

/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

完成

参考文献

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