对不起,很长的问题。 我尝试添加尽可能多的细节。
在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组中。
再次为这个无聊的票证道歉。 我只在这里粘贴答案,将其从未答复的队列中隐藏起来。