我通过执行以下操作添加了一个新的 Linux 用户
useradd -d /var/www/mywebsite.com -m newuser
passwd newuser
我使用以下命令登录服务器来测试该账户
ssh [email protected]
登录后,shell 不允许我使用 tab 自动完成功能。例如,我会输入 /var/www/myweb{tab},但 tab 按钮只会在 shell 中输入一个空格。此外,按向上和向下箭头键不会显示最近输入的 shell 命令。
当我以 root 身份 ssh 登录时,一切都运行正常。但是当我以新用户身份 ssh 登录时,一切都不正常。
我错过了什么?
谢谢
答案1
检查“newuser”使用的 shell。确保它确实支持制表符补全(如 bash 或 zsh)。
你可以使用以下命令确定用户正在使用的 shell
# getent passwd rodjek
rodjek:x:1001:1001:x:/home/rodjek:/bin/zsh
您可以使用 chsh 命令更改用户 shell
# chsh -s /bin/bash rodjek
答案2
当您添加用户时,useradd
没有添加任何特殊 shell。
您可以使用以下命令查看:cat /etc/passwd
test1:x:1004:1005:,,,:/home/test1:/bin/bash
test3:x:1007:1008::/home/test3:
可以看到用户test1
拥有的shell/bin/bash
但是用户test3
没有添加shell。
test3
要修复此问题,你可以用以下命令更改用户的 shell :
chsh -s /bin/bash test3
或者当您创建新用户时,您可以使用 s 选项:
useradd -s /bin/bash test4
答案3
在我的系统选项卡上,自动完成功能通过以下方式添加:
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
在 .bashrc 中。由于 /etc/skel 中不存在 Bashrc,因此不会为新用户创建它。在 /etc/skel 中使用上述代码创建 .bashrc,新用户即可使用。然后将该文件复制到您刚刚创建的新用户,这样他们也可以使用该文件。
答案4
在您创建帐户之前,文件夹 /var/www/mywebsite.com 是否存在?
您能否检查 /etc/skel 的内容是否已复制到主目录 /var/www/mywebsite.com?
新帐户是否获得了不同的 shell,并且不支持自动完成?