情况
在 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