一次性操作

一次性操作

我需要将文件从本地复制到远程服务器。我使用 rsync 进行无密码连接。迁移后我无法更改文件的权限。

我正在使用这个命令。

rsync -ab --suffix _BKP"$(date +%Y%d%m)" --perms --chmod=ug+rwx,o+rx --chown=sai:sai /home/yesh/yesh_final_V1.sh[电子邮件保护]:/data001/是的

yesh 也是超级用户。我的 rsync 版本是 rsync-3.1.1-1.el7.rfx.x86_64。

我做错了什么吗?如果是,请纠正我。或者还有其他方法可以使用 sudo 用户更改远程服务器上的权限吗?

注意:我不想登录服务器并进行更改。我需要从本地服务器本身完成此操作,就像从脚本运行一样。

答案1

通常,直接使用 ssh 就足够了,一次性实现。

一次性操作

只要 yesh 是超级用户并且您知道 yesh 的密码,您就可以执行以下操作通过 ssh 进行更新。

ssh 作为 yesh(假设您有密码)。

ssh [email protected]

更改以使脚本可执行

Ubuntu> sudo chmod 755 /home/yesh/yesh_final_V1.sh

脚本化操作

问题作者评论说他们希望以脚本形式执行此操作。为此,您可以使用主机上必须存在的“sshpass”功能。

sudo apt-get install sshpass

要使用它,您可能会发现下面的 bash 脚本示例很有用:

function scripted_remote_operation { sshpass -f password.txt ssh -o StrictHostKeyChecking=no -t -t [email protected] -o StrictHostKeyChecking=no <<EOF sudo chmod 755 /home/yesh/yesh_final_V1.sh exit EOF }

这可以作为脚本的一部分从主机执行,自动登录,根据要求进行更改。不幸的是,这将要求禁用具有管理员权限的用户的密码要求(不推荐)。

例如,在目录中

/etc/sudoers.d

您可以包含文件

010_ubuntu-nopasswd

内容

root ALL=(ALL) NOPASSWD: ALL

提供此信息仅供参考。在机器上禁用 sudo 密码绝对不是一个好主意。

可能的答案:远程机器上没有 sudo

如果文件是远程安装的,并且所有者为 yesh,则 chmod 操作可以在不提升权限的情况下进行,并且 chown 操作可以包含在同一个 sshpass 脚本中。

相关内容