Linux文件权限管理:从基础到高级
在Linux系统中,文件权限的管理是保证系统安全和数据保护的重要环节。本文详细解读Linux文件权限的基本概念、特殊权限以及高级权限管理技巧,帮助您从入门到精通Linux文件权限管理。
1.1 文件的基本权限:r w x (UGO)
在Linux中,文件权限分为三种:读(r)、写(w)和执行(x),分别对应用户(User,简称U)、用户组(Group,简称G)和其他用户(Others,简称O)。这些权限确保了不同用户对文件和目录的不同访问级别。
1.1.2 查看权限
使用ll
命令可以查看文件的权限,例如:
-rw-r--r--. 1 root root 2053 9月19 2017 /etc/passwd
其中,-rw-r--r--
表示文件所有者(root)具有读(r)和写(w)权限,而用户组(root)和其他用户只有读(r)权限。
1.1.3 权限说明
对于文件:
- r:读权限,可以使用
cat
命令查看文件内容。 - w:写权限,可以使用
vim
或echo
命令修改文件内容。 - x:执行权限,可以运行命令或者脚本。
对于目录:
- r:读权限,可以使用
ls
命令查看目录内容。 - w:写权限,可以在目录中创建、删除或移动文件。
- x:执行权限,可以进入目录,即使用
cd
命令。
1.1.4 文件拥有者
UGO指的是所有者(User)、用户组(Group)和其他用户(Other)。文件的所有者可以授权其用户组内的其他用户访问文件。
1.1.5 常见几种文件权限组成
- rwx — —:文件所有者具有完全权限。
- rwx r-- r–:文件所有者具有完全权限,用户组有读权限。
- rw- rw- r-x:文件所有者和用户组有读写权限,其他用户有读和执行权限。
1.1.6 更改文件的属主和属组
使用chown
和chgrp
命令可以更改文件的属主和属组。例如:
chown user:group filename # 改变文件的属主和属组
chown user filename # 只改变文件的属主
chgrp group filename # 只改变文件的属组
1.1.7 修改权限
使用chmod
命令可以修改文件或目录的权限。例如:
chmod u+x,g=-,o-r filename # 给所有者添加执行权限,组权限设置为无,其他用户移除读权限
1.1.8 使用八进制(0-7)数字表示权限法
权限可以用八进制数字表示,其中r
=4,w
=2,x
=1。例如,chmod 755 filename
表示给所有者完全权限,用户组和其他用户有读和执行权限。
1.2 文件的特殊权限:suid sgid sticky 和文件扩展权限 ACL
1.2.1 文件的特殊权限:suid sgid sticky
- SUID(Set UID):只能设置在二进制可执行程序上,运行时权限变更成程序所有者的权限。
- SGID(Set GID):可以设置在二进制可执行程序和目录上,新创建的文件继承上级目录的组。
- Stickybit:只作用于目录,防止非所有者删除目录中的文件。
1.2.1 文件扩展权限 ACL
ACL(Access Control List)提供了更细粒度的权限控制。使用setfacl
和getfacl
命令可以管理ACL。
setfacl -m u:user1:rwx filename # 给用户user1设置rwx权限
getfacl filename # 查看文件的ACL
1.3 实战:创建一个让 root 都无法删除的文件
在Linux中,可以使用chattr
命令设置文件的不可变属性,使文件无法被删除。
chattr +i filename # 设置文件为不可变
rm -rf filename # 尝试删除文件,会失败
chattr -i filename # 移除不可变属性
通过这些步骤,您可以掌握Linux文件权限的基本概念和高级管理技巧,确保系统和数据的安全。