rsync 权限被拒绝 (13),我做错了什么?

kia*_*ana 7 ubuntu rsync

我正在尝试将我的网站数据迁移到新服务器并不断收到此错误。我设置了公钥访问,并且能够使用 .txt 文件完成 rsync 然后我想尝试一个目录,但它不起作用。这是我第一次使用 rsync,所以如果您需要更多信息,请告诉我。

编辑:两者都是远程服务器,旧的是 Ubuntu 14.04.4,新的是 Ubuntu 18.04.3

我对每个都有 sudo 权限,但我可能不拥有我试图移动的目录。我不知道怎么查。

$ rsync -rt /var/www kiana@123.456.789.00:/home
rsync: recv_generator: mkdir "/home/www" failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-config.php") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-mail.php") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wordpress") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-signup.php") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-trackback.php") failed: Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]
Run Code Online (Sandbox Code Playgroud)

小智 10

这部分在这里:

rsync: recv_generator: mkdir "/home/www" failed: Permission denied (13)
Run Code Online (Sandbox Code Playgroud)

似乎是说用户kiana对远程服务器的文件夹没有足够的权限/home写入它。

如何检查文件夹权限

ls -l | grep home从远程服务器上执行/应该可以告诉您谁拥有该文件夹以及它具有哪些访问权限。-fold的标准homeroot:root拥有755文件夹权限(在此处阅读有关文件夹和文件权限的更多信息)

$ ls -l | grep home
drwxr-xr-x   3 root root  4096 21 mar 14.24 home
Run Code Online (Sandbox Code Playgroud)

此输出表明,root具有组的用户root拥有文件夹 (d)home并具有完全权限 (rwx),而组中的其他用户root以及其他人具有读取/执行权限 (rx),但没有写入权限。

拥有 -rights 的用户sudo意味着该用户在身份验证后可能暂时拥有 root 权限,这对于rsync.

结论

由于您不是root执行该操作的实际用户rsync(出于安全原因,您不应该是),因此您没有/home文件夹的写入权限。我建议您尝试将网络服务器数据保存在用户kiana可以写入的另一个位置(例如/tmp//opt/)。


小智 2

/home 目录权限通常只能由 root 写入。
例如,在我的机器上运行 ls 显示 root/root:

$ ls -laF /home
total 12
drwxr-xr-x  3 root     root     4096 Aug 20  2018 ./
drwxr-xr-x 24 root     root     4096 Sep  3 09:00 ../
Run Code Online (Sandbox Code Playgroud)

最好的选择是通过 ssh 进入运行的机器,在 /home 中创建一个目录:

#Note the sudo, or you'd have to su to root
sudo mkdir /home/www 
#Then change the ownership so the user kiana can write to it:
sudo chown kiana:kiana /home/www
Run Code Online (Sandbox Code Playgroud)