在 Linux 系统中,用户和权限管理是系统安全的重要组成部分。通过合理配置用户和权限,可以确保系统的安全性和资源的合理分配。以下是一些与用户和权限管理相关的常用命令和概念。
1. 用户管理
1.1 添加用户
使用 useradd 命令可以添加新用户:
sudo useradd username
1.2 设置用户密码
使用 passwd 命令可以为用户设置密码:
sudo passwd username
1.3 修改用户属性
使用 usermod 命令可以修改用户的属性:
sudo usermod -l new_username old_username # 修改用户名
sudo usermod -d /new/home/directory username # 修改用户的家目录
sudo usermod -aG groupname username # 将用户添加到附加组
1.4 删除用户
使用 userdel 命令可以删除用户:
sudo userdel username # 删除用户,保留家目录
sudo userdel -r username # 删除用户及其家目录
2. 组管理
2.1 添加组
使用 groupadd 命令可以添加新组:
sudo groupadd groupname
2.2 修改组属性
使用 groupmod 命令可以修改组的属性:
sudo groupmod -n new_groupname old_groupname # 修改组名
2.3 删除组
使用 groupdel 命令可以删除组:
sudo groupdel groupname
3. 权限管理
3.1 查看权限
使用 ls -l 命令可以查看文件或目录的权限:
ls -l file.txt
3.2 修改权限
使用 chmod 命令可以修改文件或目录的权限:
chmod 755 file.txt # 设置权限为 rwxr-xr-x
chmod u+x file.txt # 给所有者添加执行权限
3.3 修改所有者和组
使用 chown 和 chgrp 命令可以修改文件或目录的所有者和组:
chown user:group file.txt # 修改所有者和组
chgrp groupname file.txt # 修改组
4. 特殊权限
4.1 SUID(Set User ID)
当文件被执行时,进程的所有者变为文件的所有者:
chmod u+s file
4.2 SGID(Set Group ID)
当文件被执行时,进程的组变为文件的组;当应用于目录时,新创建的文件将继承目录的组:
chmod g+s file
4.3 Sticky Bit
只有文件的所有者或 root 用户才能删除或重命名文件:
chmod +t directory
5. 默认权限
新创建的文件和目录的默认权限由 umask 值决定。umask 是一个掩码,用于屏蔽权限位。
查看当前 umask 值:
umask
设置 umask 值:
umask 022 # 新文件的权限为 644,新目录的权限为 755
6. ACL(访问控制列表)
ACL 提供了更细粒度的权限控制,允许为特定用户或组设置权限。
6.1 查看 ACL
getfacl file.txt
6.2 设置 ACL
setfacl -m u:username:rwx file.txt # 为用户设置权限
setfacl -m g:groupname:rwx file.txt # 为组设置权限
setfacl -x u:username file.txt # 移除用户的 ACL 条目
7. 用户切换
7.1 切换用户
使用 su 命令可以切换用户:
su username # 切换到指定用户
su - username # 切换到指定用户并加载其环境变量
7.2 以其他用户身份执行命令
使用 sudo 命令可以以其他用户(通常是 root)身份执行命令:
sudo command # 以 root 身份执行命令
sudo -u username command # 以指定用户身份执行命令
8. 用户和组配置文件
8.1/etc/passwd
存储用户信息:
username:x:UID:GID:comment:home_directory:shell
8.2/etc/shadow
存储用户密码信息:
username:encrypted_password:last_change:min_age:max_age:warn:inactive:expire:reserved
8.3/etc/group
存储组信息:
groupname:x:GID:user_list