为什么我收到错误“无法 chdir 到主目录”

为什么我收到错误“无法 chdir 到主目录”

我从事支持工作,偶尔我会获得对远程 Linux 系统的 shell 访问权限。

我经常发现,当管理员向我提供远程访问权限时,我在登录时会收到以下输出。

[joe@mycomputer ~]$ ssh [email protected]
[email protected] password:
Creating directory '/foobar/users/bob'.
Unable to create and initialize directory '/foobar/users/bob'.
Last login: Mon Jul 29 13:05:27 2013 from bar.edu
Could not chdir to home directory /foobar/users/bob: Input/output error
-bash: /foobar/users/bob/.bash_profile: Input/output error
-bash-4.1$

-bash-4.1$ echo $HOME
/foobar/users/bob

与我打交道的管理员比我更了解 Linux。我的问题是:

  1. 为什么我收到“无法初始化目录”?

    • 这是他们的错误,还是出于安全考虑?我假设他们useradd bob在创建我的帐户时没有使用 -m 选项。
  2. 为什么我的 shell 名称是“bash-4.1”而不是“bob”?

更新
我猜测因为我不是系统上的普通用户,所以我没有网络共享 foobar/users,只有本地存储。奇怪的是,我登录的如此高比例的服务器会以相同的方式配置他们的服务器。


我调查过的资源

答案1

首先是一个简单的问题,为什么我的 shell name 是-bash-4.1$。 shell 名称的技术名称是“命令提示符”。 bash 是通过环境变量设置的PS1。如果您的环境中未设置 PS1,bash 默认会显示 bash 版本作为提示符。 (ENVIRONMENT有关环境的更多详细信息,以及Shell Variables默认提供的环境列表,请参阅 bash 手册页的 参考资料 部分)。如果您希望它显示bob(我假设您习惯于显示工作目录),您可以使用:

PS1='\W$ '

请参阅PROMPTINGbash 手册的 参考资料 部分,了解 bash 提示符中还可以设置哪些内容。

我怀疑Unable to create and initialize directoryInput/output error指向出现故障的硬盘驱动器、已关闭电源的外部 USB 驱动器,或者,如果您使用 NIS/NIS+ 自动挂载,则可能是 NFS 问题(/foobar/users 下的目录可能会自动挂载)。

/foobar/users您可以通过检查命令的输出来查看路径所在的文件系统mount,该输出将告诉您哪些设备提供文件系统的哪些部分。它会在这里通知您在哪里/foobar 是从安装的。如果 /foobar 未列出,则 / 目录出现 I/O 错误,并且很可能出现故障的磁盘。您还可以按文件系统类型过滤挂载,mount -t nfs显示所有 nfs 驱动器mount -t ext3将显示所有 ext3fs 挂载点等。man mount查看该-t选项将显示支持哪些文件系统。

一旦找到目录所在的设备,您就可以更好地了解如何诊断问题(如果是 /dev/sda1 或类似的设备),它是一个硬盘驱动器,您可以开始在以下位置查找错误:系统日志文件grep sda1 /var/log/syslog。如果是 NFS,则需要重新安装驱动器,或重新启动 NFS 服务。

答案2

您的第一次登录无法创建主目录,之后系统无法进入该目录。这只是因为没有错误检查目录创建是否成功。您需要要求系统管理员调查文件夹创建失败的原因。

答案3

“输入/输出错误”表示文件系统驱动程序出现问题。这可能是驱动程序错误或硬件错误。如果cd报告“没有这样的文件或目录”,则可能表明主目录创建脚本中存在错误,但“输入/输出错误”则cd表明存在更深层次的问题。请联系您的系统管理员。

shell 提示符bash-4.1$不是您所习惯的,因为您的主目录无法打开,因此您的.bashrc(可能设置了不同的提示符)不会被读取。

相关内容