如果SSH没有密码防止rsync一个文件夹读取权限?

对不起,很长的问题。 我尝试添加尽可能多的细节。

在server_1上,我有一个名为backup的系统帐户用户,它有一个主目录,cron作业读取备份脚本。

backup@server_1~]$ ls script_1 script_2 ... 

在server_2上,我创build了一个标准的用户“备份”来保存当前在server_1上备份的一些存储库。 那些支持罚款数月。 现在,我在/ srv中添加了一个新的repo链接,它由用户&group srv拥有。

 backup@server_2~]$ ls drwxrwxr.. backup:backup repo_1 drwxrwxr.. backup:backup repo_2 lrwxrwx... backup:backup repo_3 -> /srv/repo_3 backup@server_2~]$ ls /srv drwxrwxr.. srv:srv repo_3 ^ notice the r, indicating any user should be able to read this data too. 

然后,我将server_2上的备份添加到srv组中,以便备份应该能够将所有数据读取到server_1上。

 root@server_2~]# usermod -a -G srv backup 

然后我试图rsync:

 backup@server_1~]$ rsync -avi -e "ssh -i /home/backup/.ssh/server_2_ssh_key" \ backup@server_2/srv/repo_3 ./ 

问题是,当我运行备份脚本时,使用来自server_1的无密码login,它无法读取数据,因为由于“权限被拒绝”,rsync无法更改到目录/ srv / repo_3。当我尝试使用符号链接。

 backup@server_1~]$ rsync -avi -e "ssh -i /home/backup/.ssh/server_2_ssh_key" \ backup@server_2/home/backup/repo_3 ./ 

然后,我甚至使用备份用户密钥对login到server_1,我甚至无法列出/ srv / repo_3的内容

我碰巧在server_2上有另一个标准用户帐户,它使用一个有密码的SSH密钥login。 当我以这种方式login时,“user_2”能够列出/ srv的内容

于是,我将server_2上的第二个用户的ssh密钥复制到server_1上的/home/backup/.ssh/ssh_key_w_password,并将公共部分添加到server_2上的备份信任主机。 然后我尝试使用该密钥进行备份。

 backup@server_1~]$ rsync -avi -e "ssh -i /home/backup/.ssh/ssh_key_w_password" \ backup@server_2/home/backup/repo_3 ./ Password for ssh_key_w_password: 

即使user_2不在backup_2或server_2上的srv组中,也input密码并且备份运行正确。 它通过符号链接或直接位置/ srv / repo_3工作。

一些用户的细节:

  backup@server_2~]$ cat /etc/passwd | grep backup backup:x:1008:1008:backup:/home/backup:/bin/bash backup@server_2~]$ groups backup srv user_2@server_2~]# cat /etc/passwd | grep user_2 user_2:x:1012:1012:user_2:/home/user_2:/bin/bash root@server_2~]# groups user_2 user_2 user_2@server_2~]$ cat /etc/passwd | grep srv srv:x:1018:1021::/home/srv:/bin/bash user_2@server_2~]$ groups srv srv : srv mycorp 4h jndj ax 

我们在那里 唯一的区别是我可以从我的身边find备份使用来自server_1的一个无密码的密钥对,而另一个标准的用户在SSH密钥上有密码。

任何人都可以帮助我了解什么是不同的或我失踪? 我必须在server_1上备份,使用无刀login来运行同步。 我不能允许server_2同步到server_1。

更新:re:MadHatter的评论login直接失败作为server1的备份,因为基于密码的login不被允许。 但是,使用无密码的密钥返回输出(与其他用户的密码密钥的尝试一样。

 [backup@server_1 ~]$ ssh backup@server_2 "id -a" backup@server_2's password: Permission denied, please try again. [backup@server_1 ~]$ ssh -i .ssh/backup_server_2_ssh.key backup@server_2 "id -a" uid=1008(backup) gid=1008(backup) groups=1008(backup),1021(srv) [backup@server_1 ~]$ [backup@server_1 ~]$ ssh -i .ssh/ssh_key_w_password user_2@server_2 "id -a" Enter passphrase for key '.ssh/ssh_key_w_password': uid=1012(user_2) gid=1012(user_2) groups=1012(user_2) [backup@server_1 ~]$ 

作为参考,这是来自rsync的失败日志消息,当我刚刚尝试使用server_1上的root用户的无密码login。

 [root@server_1 ~]# bash /home/backup/add_srv.sh 2013-11-18 12:24:14 - ************ Backup Robot Checking In ********** .... login and mount backup destination goes ok here rsync fail is below .... 2013/11/18 12:24:20 [920] receiving file list 2013/11/18 12:24:20 [920] rsync: change_dir "/srv" failed: Permission denied (13) 2013/11/18 12:24:20 [920] sent 8 bytes received 10 bytes 12.00 bytes/sec 2013/11/18 12:24:20 [920] total size is 0 speedup is 0.00 2013/11/18 12:24:20 [920] rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1505) [receiver=3.0.6] [root@server_1 ~]# 

不好意思打扰了所有人

要排除任何SSH密钥的主意,我做了一个密码键备份,它也失败了。 所以,我认为这是不相关的,必须基于/ srv中的权限。 我不是那里的pipe理员,所以我把它放在了等待回应的阶梯上。

而且,事实certificate/ home / srv目录与repo没有相同的权限。

 ls / -l drwx---rx 10 srv srv 4096 Nov 15 16:08 srv 

所以,由于某些原因,srv组没有被授权访问它自己的文件夹。 大声笑。 这阻止了备份进入文件夹和阻止访问,而user_2可以读取,而不是在srv组中。

再次为这个无聊的票证道歉。 我只在这里粘贴答案,将其从未答复的队列中隐藏起来。