Linux:用户和用户组管理

用户管理

新建用户

添加新用户可以使用 useradd 命令。

但默认情况下不会创建属于新用户自己的家目录,所以建议带上 -m 参数自动为其创建家目录。

# 创建名为 deckard 的用户
# 使用 -m 参数同时创建家目录
# 因为当前是普通用户所以要加上 sudo
sudo useradd -m deckard

检测用户存在

在创建用户后如何得知已经确实创建了?

第一种方法使用 id 命令

id deckard

返回:

uid=1001(deckard) gid=1001(deckard) groups=1001(deckard)

第二种方法查看 /etc/passwd

sudo tail - 5 /etc/passwd

返回:

conners:x:1000:1000:Conners Hua:/home/conners:/bin/bash
deckard:x:1001:1001::/home/deckard:/bin/sh

通过以上两条命令可以看到用户有个 uid 的概念,我在安装系统时配置的用户 conners 的 uid 为 1000,刚才新建的用户 deckard 的 uid 为 1001,系统也是根据此进行区分用户。

第三种方法查看 /etc/shadow

sudo tail -5 /etc/shadow

返回:

conners:$6$Dnuqq4RsZ..B3e7v$O8WAB7jWheeLWhqFb.Qu3reCcKWLReQCWlBnK3tZgR4X8QoPqE7yqcG1SHMHHqIGfchPizdGtrfABg91e59Dh/:18117:0:99999:7:::
deckard:!:18131:0:99999:7:::

设置用户密码

刚才新建的用户还没有设置密码,设置用户的密码使用 passwd 命令

# 如果是设置当前用户的密码直接使用
passwd

# 如果是修改指定用户的密码就加上用户名
sudo passwd deckard

切换用户

这里使用 su 切换到刚才新建的用户

su - deckard

但是你会发现和刚才的用户不一样,是直接显示了「>」,这是因为使用 useradd 默认设置的 shell 是 sh 而不是 bash。

还记得刚才查看 /etc/passwd 的返回结果么,不记得可以回去看看,在行末一个是 bash 一个是 sh。

如果你现在还处在「>」界面可以输入 exit 退出。

修改用户配置

修改用户配置主要用到 usermod

usermod 常用的主要是设置 shell 和家目录。

# 设置 deckard 用户的 shell 为 bash
# 使用 -s 参数
sudo usermod -s /bin/bash deckard

# 修改 deckard 用户的家目录
# 使用 -d 参数
sudo usermod -d /home/conners deckard
# 比如设置 deckard 用户的家目录和 conners 用户的一样

设置好新建用户的 shell 再切换过去是不是就和当前用户的界面一样了?

删除用户

删除用户使用 userdel 命令,但默认下仅会删除用户而不删除其家目录,如果要连带删除家目录需要加上参数 -r

# -r 参数用于删除被删除用户的家目录
sudo userdel -r deckard

到这里,你会发现使用 useradd 创建用户需要加上 -m 参数让其创建家目录、需要手动设置密码、还需要手动设置 shell 版本,这显得很「low level utility」

更好用的新建用户

所以 adduser 来了,它本质上是使用 useradd 在后台运行的 Perl 脚本

# 使用 adduser 创建名为 deckard 的用户
sudo adduser deckard

使用 adduser 命令创建用户你会发现会自动要求你设置密码、用户的具体信息(可直接回车跳过)并自动给你设置 shell 为 bash。

其实有点类似于 useraddpasswd 的结合

sudo useradd -d /home/deckard -m -s/bin/bash \
-c FullName,Phone,OtherInfo deckard && passwd deckard

总之,相比一步步来的 useraddpasswdusermod 个人更喜欢一次配置好的 adduser,但这不等于前者的那些命令就不重要了。

用户组管理

新建用户组

sudo groupadd group1

删除用户组

sudo groupdel group1

添加用户到用户组

# 添加现有的用户 deckard 到用户组 group1
sudo usermod -g group1 deckard
# 新建用户 terry 时添加到指定用户组group1
sudo useradd -g group1 terry

使用 id 查看

id terry

返回:

uid=1005(terry) gid=1004(group1) groups=1004(group1)

可以看到用户组显示的是设置的 group1。

用户和用户组命令小结

  • useradd - 创建用户
  • adduser - 创建用户
  • passwd - 修改用户密码
  • usermod - 修改用户配置
  • id - 查看用户信息和所在用户组
  • su - 切换用户
  • userdel - 删除用户
  • groupadd - 创建用户组
  • groupdel - 删除用户组

用户和用户组配置文件

常用的用户和用户组配置文件:

  1. /etc/passwd
  2. /etc/shadow
  3. /etc/group

/etc/passwd

sudo vim /etc/passwd

返回:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

以第一行「root:x:0:0:root:/root:/bin/bash」为例可以看到一行有 7 个字段:

  1. 用户名
  2. 是否需要密码验证(删除 x 则不需要)
  3. uid 用户标识
  4. gid 群组标识
  5. 注释
  6. 家目录路径
  7. shell

上述列表可能看着有点绕,再以我自己为例

conners:x:1000:1000:Conners Hua:/home/conners:/bin/bash
用户名是 conners,需要密码验证所以是 x,uid 为 1000,gid 为 1000,注释信息为 Conners Hua,家目录为 /home/conners,shell 为 /bin/bash

/etc/shadow

shadow 主要是了解用户和用户密码相关的信息

sudo vim /etc/shadow

返回:

root:*:18113:0:99999:7:::
daemon:*:18113:0:99999:7:::
bin:*:18113:0:99999:7:::
...
  1. 用户名称
  2. 用户密码(加密后的结果)

/etc/group

sudo vim /etc/group

返回:

root:x:0:
daemon:x:1:
bin:x:2:
...
  1. 群组名称
  2. 是否需要密码验证
  3. gid

adm:x:4:syslog,conners

要在一个组里添加用户就可以在第四个字段后输入用户名。

Conners Hua

这个家伙很懒,什么都没有留下。

您可能还喜欢...

发表评论

电子邮件地址不会被公开。 必填项已用*标注