Ubuntu下用户权限管理指南
Ubuntu作为多用户Linux系统,权限管理围绕用户账户、用户组、文件/目录权限及sudo权限展开,以下是具体操作方法:
用户账户是权限的基础载体,通过命令可完成创建、删除、修改等操作:
adduser命令(交互式,自动创建主目录并设置密码),例如创建用户test:sudo adduser test
系统会提示输入密码、全名等信息,按需填写即可。deluser命令,-r参数可同时删除主目录:sudo deluser test # 仅删除用户
sudo deluser --remove-home test # 删除用户及主目录
usermod命令,常见操作包括修改用户名(-l)、主目录(-d):sudo usermod -l newname oldname # 修改用户名
sudo usermod -d /new/home -m test # 修改主目录(-m保留原目录内容)
用户组用于批量管理用户权限,Ubuntu默认为用户创建同名组(如test用户的组为test):
groupadd命令,-g参数可指定GID(组ID):sudo groupadd developers # 创建组
sudo groupadd -g 1010 admins # 指定GID创建组
groupdel命令(组内无用户时可删除):sudo groupdel developers
usermod(-aG表示追加到组,避免覆盖原有组)或gpasswd命令:sudo usermod -aG developers test # 将test用户加入developers组
sudo gpasswd -a test developers # 效果同上
sudo gpasswd -d test developers # 将test用户从developers组移除
文件/目录的权限分为所有者(Owner)、所属组(Group)、其他用户(Others),通过chmod、chown、chgrp命令调整:
ls -l命令,输出示例:-rw-r--r-- 1 test developers 1024 Oct 17 10:00 file.txt
其中-rw-r--r--表示:所有者有读写权限(rw-),所属组有读权限(r--),其他用户有读权限(r--)。chmod命令,格式为[ugoa][+-=][rwx](u=所有者,g=所属组,o=其他用户,a=所有;+=添加,-=移除,==设置):chmod u+x file.txt # 给所有者添加执行权限
chmod g-w file.txt # 移除所属组的写权限
chmod o=r file.txt # 设置其他用户为只读
chmod 755 file.txt # 数字模式:所有者7(rwx),所属组5(r-x),其他用户5(r-x)
chown(修改所有者,可同时修改所属组)或chgrp(仅修改所属组)命令:sudo chown test:developers file.txt # 将file.txt所有者设为test,所属组设为developers
sudo chgrp developers file.txt # 仅将file.txt所属组设为developers
sudo允许普通用户以root权限执行命令,需通过以下方式配置:
sudo组的成员拥有sudo权限,使用usermod或adduser命令:sudo usermod -aG sudo test # 将test用户加入sudo组
sudo adduser test sudo # 效果同上(交互式确认)
用户需重新登录或重启会话后,新组权限生效。visudo命令(安全编辑,避免语法错误),为特定用户或组添加规则:sudo visudo
示例规则:test ALL=(ALL:ALL) ALL # 允许test用户在所有主机上以任意用户/组身份执行所有命令
%sudo ALL=(ALL:ALL) ALL # 允许sudo组所有用户执行所有命令(默认已存在)
若需限制权限,可将ALL替换为具体命令,例如:test ALL=/usr/bin/apt,/usr/bin/systemctl # 仅允许test用户执行apt和systemctl命令
sudo tune2fs -o acl /dev/sdXn # 启用分区ACL(Xn为分区名,如sda1)
sudo mount -o remount,acl / # 重新挂载根分区以应用ACL
使用setfacl设置权限,getfacl查看权限:setfacl -m u:test:rwx file.txt # 给test用户添加file.txt的读写执行权限
setfacl -m g:developers:r-x file.txt # 给developers组添加file.txt的读执行权限
getfacl file.txt # 查看file.txt的ACL权限
aa-status查看状态,aa-enforce/aa-disable管理策略;SELinux需手动安装配置。/etc/sudoers文件及/etc/sudoers.d/目录下的自定义规则。acl选项。