我对整个服务器设置和服务器强化工作还很陌生,但今天必须开始。我主要有使用 ubuntu 桌面的经验。
无论如何,我刚刚创建了一个新用户,我打算用它来访问整个网站,如下所示:
以 root 身份:
useradd -d /var/www/example.com example
passwd example
... (typing in the pw)
好的。现在,如果我尝试切换到此用户,
su example
我甚至没有收到密码提示,只看到
$
奇怪的是,我显然没有像往常一样获得正常的命令行,但很多东西都不起作用:比如语法突出显示、使用“TAB”自动完成等 - 在我的 ubuntu 桌面上,我得到的是正常的行example@...:~#
。我做错了什么?
答案1
到目前为止一切正常。您的新用户拥有不同的 shell。您可以使用以下命令进行验证:
echo $SHELL
可以使用以下命令更改当前用户的默认 shell:
chsh -s /bin/bash
或者使用 root 可以更改用户的 shell:
chsh -s /bin/bash example
答案2
你没有做错任何事。
su 本质上是在当前 shell 中创建一个 shell 的操作,而不是在当前 shell 中切换。并且根据现在新加载的 shell 的选择,它的行为会有所不同。这就是为什么当您退出 su 时,您会返回到上一个用户;您只是退出了内 shell。
此外,如果您以 root 身份执行 su 操作,则不会要求您输入密码,因为您是 root 身份。
答案3
关于 SU 命令的一些信息。如果您以用户身份登录根,您始终可以成为另一个用户,而无需知道密码。成为例子并停留在当前目录
[root@host ~]#su example
成为一个例子并进入用户的主目录
[root@host ~]#su - example
现在,如果您以非特权用户身份尝试这些命令,将会要求输入密码。
$ 是什么?这是 shell
默认情况下,您的操作系统使用 SH(shell 包装器)。如果您想使用 bash shell,那么在用户时,请指定它:
[root@host ~]# useradd -s /bin/bash exmaple