默认 shell 和主目录的问题

默认 shell 和主目录的问题

我最近被授予了使用工作中的一台机器的权限。但是,我在设置开发环境时遇到了麻烦。有关该机器的相关信息:

$ uname -a
Linux blackhawk2 3.2.0-41-generic #66-Ubuntu SMP Thu Apr 25 03:27:11 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

我使用 OpenSSH 远程登录这台机器。我立即注意到的是,我的主目录设置不正确。

$ echo $HOME
/

我首选的 shell 是 Bash,但是:

$ echo $SHELL
/bin/csh

我知道主目录和默认 shell 设置在 '/etc/passwd' 中。检查此文件我发现:

glperez:x:1015:1015:glperez,,,:/home/glperez:/bin/bash

编辑:我的主目录确实存在,并且“/bin/bash”正常工作。此外,用户身份验证是通过某种身份验证服务器处理的。不幸的是,目前我还没有这些信息。

奇怪的是,我尝试修复此问题两次,第一次登录时都出现了预期的行为。也就是说,我的主目录设置正确,并且我的 shell 是 Bash。再次登录时,问题又出现了。

答案1

阅读man 1 login,阅读。同时查看中/etc/login.defs的内容$PATH$LOGNAME

我会确保它/home/glperez确实存在,使用ls -ld /home/glperez。如果它不存在,并且/etc/login.defs允许,您将获得一个登录目录当然存在,/

您还可以检查是否/bin/bash存在、是否可执行以及是否包含在/etc/shells

ls  -l /bin/bash;ldd /bin/bash;grep /bin/bash /etc/shells  

您应该询问blackhawk2sysadm 如何创建帐户glperezuseradd或者adduser?什么参数?您应该有一个加密的主目录吗?是blackhawk2在本地还是通过网络(检查/etc/nsswitch.conf)对用户进行身份验证?如果通过网络,该服务器会如何看待您?

答案2

如果你确定你确实有这一行:

glperez:x:1015:1015:glperez,,,:/home/glperez:/bin/bash

/etc/passwd文件中,那么你应该检查所有shell 初始化文件比如~/.bashrc~/profile等等。很可能你在其中一个文件中有类似以下命令的内容:

ksh              #change the shell to ksh
cd /             #chenge the working directory to /

HOME=/
SHELL=/bin/ksh

答案3

下面将以类似于您登录时运行的方式运行 bash,但会输出它运行的每个命令的文件名和行号。它应该可以帮助您找出它在哪里更改了变量SHELL

PS4='+ $BASH_SOURCE:$LINENO:' bash -xlic ''

答案4

问题出在我的 UID 上。出于某种原因,我的 UID 不一致。

当查找用户名并给我一个临时的 UID 时,似乎出了点问题。

我现在正在联系系统管理员来解决这个问题。

感谢大家的回复!

相关内容