跳转至

Linux 手册 | 用户管理命令

切换用户

Linux 是一个多用户的操作系统, 可以同时登陆多个用户, 因此很多时候需要在多个用户之间切换, 用户切换需要使用 su 或者 su -。使用 su 只切换用户, 当前的工作目录不会变化, 但是使用 su - 不仅会切换用户也会切换工作目录, 工作目录切换为当前用户的家目录。

从用户 A 切换到用户 B , 如果还想再切换回用户 A,可以直接使用 exit

Bash
# 只切换用户, 工作目录不变
$ su 用户名
# 举例:
robin@OS:~/Linux$ su luffy
Password:                       # 需要输入luffy用户的密码
luffy@OS:/home/robin/Linux$     # 工作目录不变

# 切换用户和工作目录, 会自动跳转到当前用户的家目录中
$ su - 用户名
# 举例:
robin@OS:~/Linux$ su - luffy
Password:       # 需要输入luffy用户的密码
luffy@OS:~$ pwd
/home/luffy     # 工作目录变成了luffy的家目录

# 回到原来的用户
$ exit

添加/删除用户

作为一个普通用户是没有给系统添加新用户这个权限的, 如果想要添加新用户可以先切换到 root 用户, 或者基于普通用户为其添加管理员权限来完成新用户的添加。添加新用户需要使用 adduser/useradd 命令来完成。

添加新用户

Bash
# 添加用户
# sudo -> 使用管理员权限执行这个命令
$ sudo adduser 用户名

# centos
$ sudo useradd 用户名

# ubuntu
$ sudo useradd -m -s /bin/bash  用户名

# 在使用 adduser 添加新用户的时候,有的Linux版本执行完命令就结束了,有的版本会提示设置密码等用户信息
robin@OS:~/Linux$ sudo adduser lisi
Adding user `lisi' ...
Adding new group `lisi' (1004) ...
Adding new user `lisi' (1004) with group `lisi' ...
Creating home directory `/home/lisi' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for lisi
Enter the new value, or press ENTER for the default
        Full Name []: 
        Room Number []: 
        Work Phone []: 
        Home Phone []: 
        Other []: 
Is the information correct? [Y/n] y

当新用户添加完毕之后, 我们可以切换到新添加的用户下, 用来检测是否真的添加成功了, 另外我们也可以使用其他方式来检验, 首先在 /home 目录中会出现一个和用户名同名的目录, 这就是新创建的用户的家目录, 另外我们还可以查看 /etc/passwd 文件, 里边记录着新添加的用户的更加详细的信息:

删除用户

删除用户并不是将 /home 下的用户家目录删除就完事儿了, 我们需要使用 userdle 命令才能删除用户在系统中的用户 ID 和所属组 ID 等相关信息,但是需要注意的是在某些 Linux 版本中用户虽然被删除了, 但是它的家目录却没有被删除,需要我们手动将其删除。

Bash
1
2
3
4
5
6
7
8
# 删除用户, 添加参数 -r 就可以一并删除用户的家目录了
$ sudo userdel 用户名 -r

# 删除用户 lisi
$ sudo userdel lisi -r

# 使用deluser不能添加参数-r, 家目录不能被删除, 需要使用 rm 命令删除用户的家目录, 比如:
$ sudo rm /home/用户名 -r

由于Linux的版本很多, 删除用户对应的操作指令不是唯一的, 经测试在 CentOS 版本只支持 userdel 命令, 在 Ubuntu 中既支持 userdel 也支持 deluser 命令。

添加删除用户组

默认情况下, 只要创建新用户就会得到一个同名的用户组, 并且这个用户属于这个组。一般情况下不需要创建新的用户组,如果有需求可以使用 groupadd 添加用户组, 使用 groupdel 删除用户组。

由于普通用户没有添加删除用户组权限,因此需要在管理员(root)用户下操作,或者在普通用户下借助管理员权限完成该操作。

Bash
1
2
3
4
5
# 基于普通用户创建新的用户组
$ sudo groupadd 组名

# 基于普通用户删除已经存在的用户组
$ sudo groupdel 组名

如果验证用户组是否添加成功了, 可以查看 /etc/group 文件, 里边有用户组相关的信息:

  • 在 Ubuntu 中添加删除用户组可以使用 addgroup/groupadddelgroup/groupdel
  • 在 CentOS 中添加和删除用户只能使用 groupaddgroupdel

我们只需要通过 which 命令名 查看,就能知道该 Linux 版本是不是支持使用该命令了。

修改密码

Linux 中设置用户密码和修改用户密码的方式是一样的, 修改用户密码又分几种情况:

  • 修改当前用户密码;
  • 普通用户 A 修改其他普通用户密码;
  • 普通用户 A 修改 root 用户密码;
  • root 用户修改普通用户密码。

修改密码需要使用 passwd 命令。当创建了一个普通用户却没有提示指定密码, 或者忘记了用户密码都可以通过该命令来实现自己重置密码的需求。

  • 当前用户修改自己的密码, 默认是有权限操作的;
  • 当前普通用户修改其他用户密码, 默认没有权限, 需要借助管理员权限才能完成操作;
  • 当前普通用户修改 root 用户密码, 默认没有权限, 需要借助管理员权限才能完成操作;
  • root 用户修改其他普通用户密码, 默认有权限, 可以直接修改。
Bash
1
2
3
4
5
6
7
8
9
# passwd
# 修改当前用户
$ passwd

# 修改非当前用户密码
$ sudo passwd 用户名

# 修改root
$ sudo passwd root

通过以上介绍的相关命令我们可以知道,如果让一个普通用户可以使用管理员权限执行一些指令其实是非常危险的,因此普通用户默认是没有使用 sudo 的权限的,必须授权才能使用,工作场景中授权操作一定要慎重。