温馨提示×

Ubuntu下如何管理用户权限

小樊
41
2025-10-17 23:04:09
栏目: 智能运维

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),通过chmodchownchgrp命令调整:

  • 查看权限:使用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权限管理

sudo允许普通用户以root权限执行命令,需通过以下方式配置:

  • 将用户加入sudo组:Ubuntu默认sudo组的成员拥有sudo权限,使用usermodadduser命令:
    sudo usermod -aG sudo test  # 将test用户加入sudo组
    sudo adduser test sudo      # 效果同上(交互式确认)
    
    用户需重新登录或重启会话后,新组权限生效。
  • 手动编辑sudoers文件:使用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命令
    

五、高级权限控制(可选)

  • ACL(访问控制列表):为文件/目录设置更细粒度的权限(如给特定用户单独授权),需先启用ACL:
    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权限
    
  • AppArmor/SELinux:增强系统安全,默认启用AppArmor(Ubuntu),可通过aa-status查看状态,aa-enforce/aa-disable管理策略;SELinux需手动安装配置。

注意事项

  • 修改权限时需谨慎,尤其是root权限操作,避免误操作导致系统故障。
  • sudo权限应授予可信用户,定期检查/etc/sudoers文件及/etc/sudoers.d/目录下的自定义规则。
  • ACL权限需文件系统支持(如ext4、XFS),默认启用;若未启用,需在挂载时添加acl选项。

0