Linux
中新建用户的命令是 useradd ,一般系统中这个命令对应的路径都在 PAT
H 环境变量里,如果直接输入 useradd 不管用的话,就用绝对路径名的方
式:/usr/sbin/useradd 。
useradd 新建用户命令只有 root 用户才能执行,我们先从普通用户
ubuntu 切换到 root 用户(如何切换后文会介绍):
ubuntu@VM-0-14-ubuntu:~$ su -
Password: #
输入
root
用户登录密码
root@VM-0-14-ubuntu:~# useradd -m test_user #
带上
-m
参数
root@VM-0-14-ubuntu:~# ls /home
test_user ubuntu #
可以看到
/home
目录下面
有两个用户了
因为还没有给新建的用户 test_user 设置登录密码,这就导致我们无法
从普通用户 ubuntu 切换到 test_user,所以接下来,我们需要用 root
来设置 test_user 的登录密码。需要用到 passwd 命令:
root@VM-0-14-ubuntu:~# passwd test_user
Enter new UNIX password: #
输出
test_user
的密码
Retype new UNIX password:
passwd: password updated successfully
root@VM-0-14-ubuntu:~#
接着我们输入 exit 退出 root 用户到 普通用户 ubuntu:
root@VM-0-14-ubuntu:~# exit
logout
ubuntu@VM-0-14-ubuntu:~$
可以看到,命令提示符前面已经由 root 变成 ubuntu,说明我们现在的身
份是 ubuntu 用户。
2. su 命令介绍及主要用法
首先需要解释下 su 代表什么意思。
之前一直以为 su 是 super user,查阅资料之后才知道原来表示 switch
user。
知道 su 是由什么缩写来的之后,那么它提供的功能就显而易见了,就是
切换用户。
2.1 - 参数
su 的一般使用方法是:
su <user_name>
或者
su - <user_name>
两种方法只差了一个字符 -,会有比较大的差异:
如果加入了 - 参数,那么是一种 login-
shell 的方式,意思是说切换到另一个用户 <user_name> 之后,当前的
shell 会加载 <user_name> 对应的环境变量和各种设置;
如果没有加入 - 参数,那么是一种 non-login-
shell 的方式,意思是说我现在切换到了 <user_name>,但是当前的
shell 还是加载切换之前的那个用户的环境变量以及各种设置。
光解释会比较抽象,我们看一个例子就比较容易理解了。
我们首先从 ubuntu 用户以 non-login-shell 的方式切换到 root
用户,比较两种用户状态下环境变量中 PWD 的值(su 命令不跟任何
<user_name> ,默认切换到 root 用户):
ubuntu@VM-0-14-ubuntu:~$ env | grep ubuntu
USER=ubuntu
PWD=/home/ubuntu #
是
/home/ubuntu
HOME=/home/ubuntu
#
省略
......
ubuntu@VM-0-14-ubuntu:~$ su # non-login-
shell
方式
Password: #
输入
root
用户登
录密码
root@VM-0-14-ubuntu:/home/ubuntu# env | grep ubuntu
PWD=/home/ubuntu #
可以发现还是
/ho
me/ubuntu
root@VM-0-14-ubuntu:/home/ubuntu#
我们的确是切换到 root 用户了,但是 shell
环境中的变量并没有改变,还是用之前 ubuntu 用户的环境变量。
接着我们从 ubuntu 用户以 login-shell 的方式切换到 root
用户,同样比较两种用户转台下环境变量中 PWD 的值:
ubuntu@VM-0-14-ubuntu:~$ env | grep ubuntu
USER=ubuntu
PWD=/home/ubuntu #
是
/home/ubuntu
HOME=/home/ubuntu
#
省略
.......
ubuntu@VM-0-14-ubuntu:~$ su - #
是
login-shell
方式
Password:
root@VM-0-14-ubuntu:~# env | grep root
USER=root
PWD=/root #
已经变成
/root
了
HOME=/root