Linux权限管理:从用户切换到文件权限
在Linux系统中,权限管理是确保系统安全和资源合理分配的核心机制。它通过用户和用户组的管理、文件权限的设置以及特殊权限的使用,实现了对系统资源的精细控制。
一、用户切换:su
和 sudo
1. 用户切换命令 su
su
(switch user)命令用于切换用户身份。默认情况下,su
切换到超级用户(root),但也可以切换到其他用户。
-
切换到超级用户:
su - # 切换到 root 用户,并加载 root 的完整环境
-
切换到普通用户:
su username # 切换到指定用户
2. 提权命令 sudo
sudo
允许普通用户以超级用户或其他用户的身份执行命令。它比直接使用 su
更安全,因为不需要知道目标用户的密码。
-
以超级用户权限运行命令:
sudo command
-
以指定用户身份运行命令:
sudo -u username command
二、文件权限管理
1. 权限类型
Linux文件权限分为三类:所有者(User)、所属组(Group)和其他用户(Other)。每类权限包括:
-
读权限(r):允许查看文件内容或目录列表。
-
写权限(w):允许修改文件内容或在目录中创建/删除文件。
-
执行权限(x):允许运行文件或进入目录。
2. 查看文件权限
使用 ls -l
命令查看文件权限:
-rw-r--r-- 1 user group 1234 Dec 22 12:00 example.txt
-
第一个字符表示文件类型(
-
表示普通文件,d
表示目录)。 -
接下来的 9 个字符分为三组,分别表示所有者、所属组和其他用户的权限。
3. 修改文件权限
使用 chmod
命令修改文件权限。
-
符号模式:
chmod u+x file # 为所有者添加执行权限 chmod g-w,o-w file # 删除所属组和其他用户的写权限
-
数字模式:
chmod 644 file # 所有者可读写,所属组和其他用户可读 chmod 755 file # 所有者可读写执行,所属组和其他用户可读执行
4. 修改文件所有者和所属组
使用 chown
和 chgrp
命令修改文件的所有者和所属组。
-
修改所有者:
chown newuser file
-
修改所属组:
chgrp newgroup file
-
同时修改所有者和所属组:
chown newuser:newgroup file
三、特殊权限
1. Setuid 和 Setgid
-
Setuid(SUID):允许用户以文件所有者的权限运行文件。
chmod u+s file # 设置 SUID chmod 4755 file # 数字模式设置 SUID
-
Setgid(SGID):允许用户以文件所属组的权限运行文件。
chmod g+s file # 设置 SGID chmod 2755 file # 数字模式设置 SGID
2. 粘滞位(Sticky Bit)
粘滞位用于公共目录,防止用户删除其他用户的文件。
chmod o+t directory # 设置粘滞位
chmod 1777 directory # 数字模式设置粘滞位
四、默认权限与 umask
-
默认权限:文件和目录在创建时的默认权限由
umask
控制。 -
查看当前
umask
:umask
-
设置
umask
:umask 0022 # 设置默认权限为 644
五、用户和用户组管理
1. 创建和删除用户
-
创建用户:
useradd username
-
删除用户:
userdel username
2. 创建和删除用户组
-
创建用户组:
groupadd groupname
-
删除用户组:
groupdel groupname
3. 管理用户组成员
-
将用户添加到用户组:
usermod -aG groupname username
-
从用户组中移除用户:
gpasswd -d username groupname
六、访问控制列表(ACL)
ACL 提供了更灵活的权限管理,允许为特定用户或组设置独立的权限。
-
设置 ACL:
setfacl -m u:username:rwx file
-
查看 ACL:
getfacl file
通过以上内容,你可以全面了解Linux权限管理的核心概念和操作方法。无论是用户切换、文件权限调整,还是特殊权限的使用,Linux都提供了强大的工具来确保系统的安全性和灵活性。