/usr/bin 中的二进制文件对于用户来说不可见吗?

/usr/bin 中的二进制文件对于用户来说不可见吗?

情况

在 CentOS 系统上,以 root 用户身份which rsync显示以下输出:

/usr/bin/rsync

该二进制文件的权限如下:

-rwxr-xr-x 1 root root 415000 31. Okt 09:36 rsync*

如果我理解正确的话,该文件对于其所有者、所有者组以及其他任何人都是可执行的。但是,以普通用户身份登录时,which rsync没有任何输出,并ls -l /usr/bin/rsync显示:

/bin/ls: (...) No such file or directory

无法执行 rsync – 找不到该命令,无论通过调用rsync还是/usr/bin/rsync

-bash: /usr/bin/rsync: No such file or directory

尝试which rsync通过 SSH 隧道:

$ ssh user@host which rsync
which: no rsync in (/usr/local/jdk/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin)
$ ssh root@host which rsync
/usr/bin/rsync

问题

/usr/bin/rsync对于非 root 用户来说,使之可执行需要哪些步骤?

更多信息(可能相关,也可能不相关)

  • 该系统是远程服务器
  • 我想rsync从本地 shell 脚本调用,例如rsync [parameters] user@host:/some/dir .
  • shell 脚本将自动运行,并通过 SSH 密钥对“用户”进行身份验证

更新/解决方案

事实证明我搞错了,系统运行的是 CloudLinux,而不是 CentOS。显然,CloudLinux 允许普通用户停用工具,rsync 也是如此。对于错误信息,我深表歉意!

(不幸的是,由于声誉不足,我无法用“cloudlinux”标记这个问题。)

答案1

您是否尝试过执行/usr/bin/rsync不是简单地rsync)作为相关用户?这样应该能让你更好地了解问题所在:没有这样的文件、权限被拒绝或其他问题。

ls -l /usr/bin/rsync应该产生一些输出,如果只是说ls: cannot access /usr/bin/rsync: No such file or directory。如果它什么都没打印出来,你可能需要检查是否有人修改过命令 -type -a ls并且type -a which应该告诉你你实际执行了什么。

您确定在同一台机器上运行这些命令吗?尝试运行以下命令:

ssh root@host which rsync
ssh user@host which rsync

相关内容