在 Ubuntu 等 Linux 系统中,用户和权限管理对于系统的安全和稳定运行至关重要。本指南将深入介绍如何创建新用户、分配用户组,以及如何通过编辑 /etc/sudoers
文件来配置用户的 sudo
权限,包括免密码执行 sudo
命令的设置。
useradd
命令创建用户useradd
是一个底层命令,提供了更多的选项来定制用户的属性。以下是使用 useradd
命令创建用户的示例:
bashsudo useradd -m -s /bin/bash zhangsan
-m
:创建用户的主目录,路径为 /home/zhangsan
。-s /bin/bash
:指定用户的默认登录 shell 为 /bin/bash
。执行此命令后,需要为新用户设置密码:
bashsudo passwd zhangsan
系统会提示输入并确认新密码。完成后,用户 zhangsan
就可以使用设置的密码登录系统。
adduser
命令创建用户(推荐)adduser
是一个高层次的脚本,基于 useradd
,但更易用且交互式更友好。它会自动完成许多初始化工作。
bashsudo adduser lisi
系统会提示输入密码和用户的其他信息,如全名、房间号、电话等(这些信息可以留空)。adduser
会自动创建主目录、拷贝默认的配置文件等。
可以使用以下命令查看系统中已存在的用户组:
bashcat /etc/group
如果需要创建新的用户组,例如 developers
,可以使用:
bashsudo groupadd developers
将用户添加到特定的组,可以使用 usermod
或 gpasswd
命令。
使用 usermod
:
bashsudo usermod -aG groupname username
例如,将用户 zhangsan
添加到 sudo
组:
bashsudo usermod -aG sudo zhangsan
使用 gpasswd
:
bashsudo gpasswd -a username groupname
例如:
bashsudo gpasswd -a zhangsan developers
要查看用户所属的组,可以使用:
bashgroups username
例如:
bashgroups zhangsan
/etc/sudoers
文件决定了哪些用户或用户组可以使用 sudo
命令,以及如何使用。
/etc/sudoers
文件重要提示:不要直接使用文本编辑器(如 vi
、nano
)编辑 /etc/sudoers
文件。应该使用 visudo
命令进行编辑,它会在保存前检查语法错误,防止配置错误导致系统无法使用 sudo
。
bashsudo visudo
默认情况下,visudo
会使用 nano
或 vi
编辑器打开 /etc/sudoers
文件。
/etc/sudoers
文件的基本结构文件中包含了用户和组的权限配置,格式如下:
plaintext# 用户权限配置 username host_list=(user_list) command_list # 用户组权限配置(组名前加 %) %groupname host_list=(user_list) command_list
username
或 %groupname
:指定用户或用户组。host_list
:主机列表,通常为 ALL
。user_list
:以哪些用户身份执行命令,通常为 ALL
。command_list
:允许执行的命令列表,ALL
表示所有命令。sudo
权限示例:让用户 zhangsan
可以使用 sudo
执行任何命令。
在 /etc/sudoers
文件中添加:
plaintextzhangsan ALL=(ALL:ALL) ALL
sudo
权限示例:让 developers
组的所有成员都可以使用 sudo
执行任何命令。
添加:
plaintext%developers ALL=(ALL:ALL) ALL
sudo
默认情况下,使用 sudo
需要输入用户的密码。可以配置免密码执行 sudo
命令。
示例:让 sudo
组的用户免密码执行 sudo
。
在 /etc/sudoers
中找到以下行(通常被注释):
plaintext# %sudo ALL=(ALL:ALL) NOPASSWD: ALL
去掉注释(删除行首的 #
):
plaintext%sudo ALL=(ALL:ALL) NOPASSWD: ALL
注意:免密码 sudo
存在安全风险,仅应在受信任的环境中使用。
可以指定用户仅对特定命令免密码执行。
示例:让用户 zhangsan
免密码执行 apt-get
和 service
命令。
在 /etc/sudoers
中添加:
plaintextzhangsan ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /usr/sbin/service
sudo
命令示例:让用户 lisi
只能使用 sudo
执行 /usr/bin/apt-get
。
plaintextlisi ALL=(ALL) /usr/bin/apt-get
这样,lisi
使用 sudo
只能运行 apt-get
,尝试运行其他命令会被拒绝。
用户的主组是用户登录时默认所属的组。可以使用 usermod
命令修改。
bashsudo usermod -g newgroup username
示例:将用户 zhangsan
的主组改为 developers
:
bashsudo usermod -g developers zhangsan
如果需要将用户从某个组中移除,可以使用:
bashsudo gpasswd -d username groupname
示例:将用户 zhangsan
从 sudo
组中移除:
bashsudo gpasswd -d zhangsan sudo
完成所有配置后,建议使用新用户登录系统,测试权限是否按预期工作。
su - username
切换到用户。sudo
权限的命令。sudo
权限时,务必谨慎。最小权限原则(Least Privilege Principle)应始终遵守。visudo
编辑 /etc/sudoers
文件:避免语法错误导致系统无法使用 sudo
。本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!