在Ubuntu系统中,用户权限管理主要围绕用户账户、组、文件/目录权限、sudo权限及**高级安全模块(SELinux/AppArmor)**展开,以下是具体操作指南:
adduser命令(交互式设置密码及信息),例如:sudo adduser username
deluser命令(--remove-home选项可同时删除主目录),例如:sudo deluser --remove-home username
usermod命令,例如修改用户名(-l)、主目录(-d,需配合-m迁移数据):sudo usermod -l newname oldname # 修改用户名
sudo usermod -d /home/newdir -m newname # 修改主目录
getent group命令列出所有组及成员。groupadd(添加)、groupdel(删除),例如:sudo groupadd groupname # 添加组
sudo groupdel groupname # 删除组
usermod(添加到组,-aG表示追加)、gpasswd(从组中移除),例如:sudo usermod -aG groupname username # 将用户添加到组
sudo gpasswd -d username groupname # 将用户从组中移除
ls -l命令查看文件/目录的权限、所有者和组,例如:ls -l /path/to/file
输出示例:-rw-r--r-- 1 owner group 0 Jan 1 10:00 file(所有者有读写权限,组和其他用户有读权限)。chmod命令,支持数字模式(如755表示所有者有读写执行权限,组和其他用户有读执行权限)或符号模式(如u+x给所有者添加执行权限):chmod 755 filename # 数字模式
chmod u+x filename # 符号模式
chown(修改所有者及组)、chgrp(修改组),例如:sudo chown username:groupname filename # 修改所有者和组
sudo chgrp groupname filename # 仅修改组
sudo组的用户可使用sudo命令,使用usermod命令添加:sudo usermod -aG sudo username
visudo命令(安全编辑,避免语法错误)自定义权限,例如允许用户无密码执行特定命令:sudo visudo
添加以下内容(username ALL=(ALL) NOPASSWD: /usr/bin/apt):username ALL=(ALL) NOPASSWD: /usr/bin/apt
sudo apt-get install selinux-basics selinux-policy-default
sudo systemctl enable selinux
sudo systemctl start selinux
使用semanage(管理SELinux用户/角色)、restorecon(恢复文件上下文)等命令配置,例如:sudo semanage login -a -s user_r username # 分配角色
sudo restorecon -Rv /home/username # 恢复目录上下文
sudo aa-status
编辑配置文件(如/etc/apparmor.d/usr.sbin.apache2)后重载:sudo systemctl reload apparmor
sudo tune2fs -o acl /dev/sdXn # 启用ACL(Xn为分区)
sudo mount -o remount,acl /mountpoint # 重新挂载
使用setfacl(设置权限)、getfacl(查看权限),例如:setfacl -m u:username:rwx /path/to/file # 给用户添加读写执行权限
getfacl /path/to/file # 查看ACL
Polkit用于控制系统级操作的权限(如关机、挂载磁盘),通过创建.pkla文件自定义规则:
sudo nano /etc/polkit-1/localauthority/50-local.d/custom.rules
添加以下内容(允许用户username无需密码挂载磁盘):
[Allow mounting for username]
Identity=unix-user:username
Action=org.freedesktop.udisks2.filesystem-mount
ResultAny=yes
ResultInactive=yes
ResultActive=yes
以上方法覆盖了Ubuntu系统中用户权限管理的常见场景,可根据实际需求选择合适的方式。操作前建议备份重要数据,避免误操作导致系统问题。