菜鸟科技网

本地用户和组命令有哪些常用操作?

在Linux和Unix-like系统中,管理本地用户和组是系统管理员的核心任务之一,涉及到系统安全、资源分配和权限控制等多个方面,通过命令行工具可以高效地完成用户和组的创建、修改、删除及权限配置等操作,以下将详细介绍常用的本地用户和组管理命令及其使用方法。

本地用户和组命令有哪些常用操作?-图1
(图片来源网络,侵删)

用户管理命令

  1. useradd:创建新用户
    useradd是用于创建新用户的基本命令,其常用选项包括:

    • -m:自动创建用户的主目录(默认位于/home/username)。
    • -s:指定用户的默认登录shell(如/bin/bash/sbin/nologin)。
    • -G:将用户添加到附加组(需与主组区分)。
    • -c:添加用户注释信息(如用户全名)。
      示例:sudo useradd -m -s /bin/bash -c "John Doe" john,此命令会创建用户john,并设置其主目录、默认shell和注释信息。
  2. passwd:修改用户密码
    创建用户后需通过passwd命令设置密码,普通用户只能修改自己的密码,而root用户可以修改任何用户的密码。
    示例:sudo passwd john,系统会提示输入并确认新密码,若要锁定用户密码(禁用登录),可使用sudo passwd -l john;解锁则用sudo passwd -u john

  3. usermod:修改用户属性
    usermod用于修改已存在用户的属性,常用选项包括:

    • -l:修改用户名(如sudo usermod -l newname oldname)。
    • -aG:将用户添加到新组(需与-G区分,-aG保留原有组,-G会覆盖)。
    • -d:修改用户主目录路径(需配合-m移动目录内容)。
    • -s:更改默认shell。
      示例:sudo usermod -aG sudo john,将john添加到sudo组以获取管理员权限。
  4. userdel:删除用户
    使用userdel可以删除用户账户,选项-r会同时删除用户的主目录及相关文件。
    示例:sudo userdel -r john,彻底删除用户john及其主目录。

    本地用户和组命令有哪些常用操作?-图2
    (图片来源网络,侵删)
  5. su与sudo:切换用户身份

    • su:切换到其他用户(如su - username切换至目标用户并加载其环境变量)。
    • sudo:以其他用户身份(通常是root)执行命令,需配置/etc/sudoers文件,普通用户加入sudo组后,可通过sudo command执行管理员命令。

组管理命令

  1. groupadd:创建新组
    用于创建新的用户组,选项-g可指定组ID(GID),若不指定则系统自动分配。
    示例:sudo groupadd developers,创建名为developers的组。

  2. groupmod:修改组属性
    用于修改组名或GID,选项-n修改组名,-g修改GID。
    示例:sudo groupmod -n dev_team developers,将组名从developers改为dev_team。

  3. groupdel:删除组
    删除已存在的组,需确保组内无用户成员。
    示例:sudo groupdel dev_team

    本地用户和组命令有哪些常用操作?-图3
    (图片来源网络,侵删)
  4. gpasswd:管理组成员
    用于添加或删除组成员,常用选项:

    • -a:将用户加入组(如sudo gpasswd -a john developers)。
    • -d:将用户移出组(如sudo gpasswd -d john developers)。
    • -M:直接设置组成员列表(覆盖原有成员)。
      示例:sudo gpasswd -M user1,user2 developers,将developers组的成员设置为user1和user2。
  5. groups与id:查看用户所属组

    • groups [username]:显示用户所属的所有组(默认为当前用户)。
    • id [username]:显示用户的UID、GID及所属组信息,更详细。
      示例:id john,输出类似uid=1001(john) gid=1001(john) groups=1001(john),27(sudo)

用户与组配置文件

  • 用户信息文件/etc/passwd,每行记录用户信息,格式为username:password:UID:GID:comment:home_dir:shell
  • 用户密码文件/etc/shadow,存储加密后的密码及密码过期时间等信息,仅root可读。
  • 组信息文件/etc/group,记录组名、GID及组成员,格式为groupname:password:GID:user_list

权限与ACL(访问控制列表)

除了基本的用户/组权限(rwx),还可通过setfaclgetfacl管理更精细的权限,为用户john设置对目录/data的读写权限:

sudo setfacl -m u:john:rw /data

常见操作示例表格

操作场景 命令示例 说明
创建用户并设置主目录和shell sudo useradd -m -s /bin/bash alice 创建用户alice,自动创建主目录
修改用户登录shell sudo usermod -s /usr/sbin/nologin bob 禁用用户bob的登录功能
将用户添加到多个组 sudo usermod -aG sudo,docker alice 将alice加入sudo和docker组
创建系统用户(无主目录) sudo useradd -r -s /sbin/nologin service 创建系统服务账户,不创建主目录
设置组密码 sudo gpasswd developers 为developers组设置组密码(较少使用)
查看用户UID和GID id -u aliceid -g alice 分别显示alice的UID和GID

相关问答FAQs

Q1:如何批量创建多个用户?
A1:可通过结合useradd和循环命令实现批量创建,使用for循环和用户列表文件:

sudo for user in user1 user2 user3; do useradd -m -s /bin/bash $user; done

或使用newusers命令(从格式化文件批量创建):

echo -e "user1:password1:1001:1001::/home/user1:/bin/bash\nuser2:password2:1002:1002::/home/user2:/bin/bash" | sudo newusers

Q2:如何修改用户的主目录而不丢失文件?
A2:使用usermod命令的-d(修改目录路径)和-m(移动原目录内容)选项,将用户alice的主目录从/home/alice改为/data/alice

sudo usermod -d /data/alice -m alice

此命令会自动将原主目录下的文件移动到新路径,并更新/etc/passwd中的主目录记录,若新目录不存在,需提前创建并设置权限(如sudo mkdir -p /data/alice && sudo chown alice:alice /data/alice)。

分享:
扫描分享到社交APP
上一篇
下一篇