2024-10-30
Linux运维
00

目录

在 Ubuntu 中创建用户并配置权限的详细指南
一、创建新用户
1. 使用 useradd 命令创建用户
2. 使用 adduser 命令创建用户(推荐)
二、用户组管理
1. 查看系统中的用户组
2. 创建新的用户组
3. 将用户添加到组
三、配置 /etc/sudoers 文件
1. 安全地编辑 /etc/sudoers 文件
2. /etc/sudoers 文件的基本结构
3. 为用户配置 sudo 权限
4. 为用户组配置 sudo 权限
5. 配置免密码使用 sudo
6. 为特定命令配置免密码
7. 限制用户只能执行特定的 sudo 命令
四、用户的主组和附加组
1. 修改用户的主组
2. 删除用户的附加组
五、验证配置
六、总结与最佳实践

在 Ubuntu 中创建用户并配置权限的详细指南

在 Ubuntu 等 Linux 系统中,用户和权限管理对于系统的安全和稳定运行至关重要。本指南将深入介绍如何创建新用户、分配用户组,以及如何通过编辑 /etc/sudoers 文件来配置用户的 sudo 权限,包括免密码执行 sudo 命令的设置。


一、创建新用户

1. 使用 useradd 命令创建用户

useradd 是一个底层命令,提供了更多的选项来定制用户的属性。以下是使用 useradd 命令创建用户的示例:

bash
sudo useradd -m -s /bin/bash zhangsan
  • -m:创建用户的主目录,路径为 /home/zhangsan
  • -s /bin/bash:指定用户的默认登录 shell 为 /bin/bash

执行此命令后,需要为新用户设置密码:

bash
sudo passwd zhangsan

系统会提示输入并确认新密码。完成后,用户 zhangsan 就可以使用设置的密码登录系统。

2. 使用 adduser 命令创建用户(推荐)

adduser 是一个高层次的脚本,基于 useradd,但更易用且交互式更友好。它会自动完成许多初始化工作。

bash
sudo adduser lisi

系统会提示输入密码和用户的其他信息,如全名、房间号、电话等(这些信息可以留空)。adduser 会自动创建主目录、拷贝默认的配置文件等。


二、用户组管理

1. 查看系统中的用户组

可以使用以下命令查看系统中已存在的用户组:

bash
cat /etc/group
2. 创建新的用户组

如果需要创建新的用户组,例如 developers,可以使用:

bash
sudo groupadd developers
3. 将用户添加到组

将用户添加到特定的组,可以使用 usermodgpasswd 命令。

  • 使用 usermod

    bash
    sudo usermod -aG groupname username

    例如,将用户 zhangsan 添加到 sudo 组:

    bash
    sudo usermod -aG sudo zhangsan
  • 使用 gpasswd

    bash
    sudo gpasswd -a username groupname

    例如:

    bash
    sudo gpasswd -a zhangsan developers
4. 查看用户所属的组

要查看用户所属的组,可以使用:

bash
groups username

例如:

bash
groups zhangsan

三、配置 /etc/sudoers 文件

/etc/sudoers 文件决定了哪些用户或用户组可以使用 sudo 命令,以及如何使用。

1. 安全地编辑 /etc/sudoers 文件

重要提示:不要直接使用文本编辑器(如 vinano)编辑 /etc/sudoers 文件。应该使用 visudo 命令进行编辑,它会在保存前检查语法错误,防止配置错误导致系统无法使用 sudo

bash
sudo visudo

默认情况下,visudo 会使用 nanovi 编辑器打开 /etc/sudoers 文件。

2. /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 表示所有命令。
3. 为用户配置 sudo 权限

示例:让用户 zhangsan 可以使用 sudo 执行任何命令。

/etc/sudoers 文件中添加:

plaintext
zhangsan ALL=(ALL:ALL) ALL
4. 为用户组配置 sudo 权限

示例:让 developers 组的所有成员都可以使用 sudo 执行任何命令。

添加:

plaintext
%developers ALL=(ALL:ALL) ALL
5. 配置免密码使用 sudo

默认情况下,使用 sudo 需要输入用户的密码。可以配置免密码执行 sudo 命令。

示例:让 sudo 组的用户免密码执行 sudo

/etc/sudoers 中找到以下行(通常被注释):

plaintext
# %sudo ALL=(ALL:ALL) NOPASSWD: ALL

去掉注释(删除行首的 #):

plaintext
%sudo ALL=(ALL:ALL) NOPASSWD: ALL

注意:免密码 sudo 存在安全风险,仅应在受信任的环境中使用。

6. 为特定命令配置免密码

可以指定用户仅对特定命令免密码执行。

示例:让用户 zhangsan 免密码执行 apt-getservice 命令。

/etc/sudoers 中添加:

plaintext
zhangsan ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /usr/sbin/service
7. 限制用户只能执行特定的 sudo 命令

示例:让用户 lisi 只能使用 sudo 执行 /usr/bin/apt-get

plaintext
lisi ALL=(ALL) /usr/bin/apt-get

这样,lisi 使用 sudo 只能运行 apt-get,尝试运行其他命令会被拒绝。


四、用户的主组和附加组

1. 修改用户的主组

用户的主组是用户登录时默认所属的组。可以使用 usermod 命令修改。

bash
sudo usermod -g newgroup username

示例:将用户 zhangsan 的主组改为 developers

bash
sudo usermod -g developers zhangsan
2. 删除用户的附加组

如果需要将用户从某个组中移除,可以使用:

bash
sudo gpasswd -d username groupname

示例:将用户 zhangsansudo 组中移除:

bash
sudo gpasswd -d zhangsan sudo

五、验证配置

完成所有配置后,建议使用新用户登录系统,测试权限是否按预期工作。

  • 使用 su - username 切换到用户。
  • 测试执行需要 sudo 权限的命令。
  • 检查是否需要输入密码,是否有权限被拒绝的情况。

六、总结与最佳实践

  • 安全第一:在赋予用户 sudo 权限时,务必谨慎。最小权限原则(Least Privilege Principle)应始终遵守。
  • 使用 visudo 编辑 /etc/sudoers 文件:避免语法错误导致系统无法使用 sudo
  • 定期审计用户和组:检查系统中有哪些用户和组,以及他们的权限,确保没有未授权的访问。
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!