rsync使用服务模式时,如果我们指定了一个密码文件,那么这个密码文件的权限应该设置成多少才可以?

发布时间:2020-06-26 11:00:33
阅读量:35
作者:猎维人工智能培训
Linux系统面试题

rsync使用服务模式时,如果我们指定了一个密码文件,那么这个密码文件的权限应该设置成600或400


说一下关于rsync的密码访问

如果你 rsync -av --delete /tmp/a/ root@10.101.10.10::backup/a/

如上命令同步文件时,也是可以的,只要你服务端没有指定 auth users 和 secrets file 。

如果模块指定了secrets file 那么就必须使用你secrets file指定位置的文件作为密码文件。

这个密码文件内容就是 auth users 中指定的虚拟用户名 : 密码

例: back:123456 back 就是如上配置文件中auth users 指定的。 就这一句就够了。


然后你客户端访问服务端的时候就需要使用密码了,其中密码有五种解决方案。

(1) 手动输密码。就是手动指定,当然要是脚本或者定时任务这种肯定不行。

(2) 使用密码文件,如上服务端已经指定好密码文件位置和内容了。 下面就是客户端的操作了。客户端创建一个文件,爱在哪建在哪建。如 /etc/rsync.pass 然后文件里面就写密码就完事了。 比如 123456 就完了,不需要别的。然后在你输入rsync命令时加上--password-file=/etc/rsync.pass 参数 指定密码文件在哪就Ok 有个坑 密码文件必须 600 访问权限

(3) 使用ssh 传。 这个是ssh-keygen 一路回车。然后去找 公钥。/root/.ssh/id_rsa.pub 会生成在这个地方。然后从客户端将这个文件追加到服务端的 authorized_keys 中 然后就ok了 (这个我没试,我采用第二种方法)

(4) 使用环境变量 有一个环境变量叫RSYNC_PASSWORD vim /etc/profile 编辑这个文件 加入命令 export RSYNC_PASSWORD = "123456"# 123456就是你对应想连的远程模块的密码。 然后 source /etc/profile 或者

. /etc/profile 注意前面这个 . 点跟 / 是分开的然后输env 命令获取环境变量,发现有了,那就ok。但是需要注意的是你的程序是在哪启动的,如果跑在服务器下没问题,要是跑到docker中使用这种方法就不合适了。(推荐第二种)

如果你想删掉某个环境变量,在/etc/profile中 unset RSYNC_PASSWORD 就删了

经过如上环境变量的配置 即使服务端设置密码rsync -av --delete /tmp/a/ root@10.101.10.10::backup/a/ 也OK不用手动输入密码。

(5) 使用 sshpass 这个来通过密码访问,这个密码是明示的,所以肯定不安全。

先 yum install sshpass 安装。然后就可以用了。

sshpass -p 123456 rsync -av --delete /tmp/a/ root@10.101.10.10::backup/a/ 就OK了。

可以是可以,但是密码是明文传输的,太危险了。

相比之下第二种方案是最好的。

更多资讯