rsync отказано в доступе (13), что я делаю не так?

Вопрос или проблема

Я пытаюсь перенести данные своего веб-сайта на новый сервер и всё время получаю эту ошибку. Я настроил доступ по открытому ключу и смог завершить rsync с .txt файлом, затем я хотел попробовать директорию, и это не работает. Это мой первый опыт использования rsync, так что, пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Редактирование: оба сервера удалённые, старый — Ubuntu 14.04.4, а новый — Ubuntu 18.04.3.

У меня есть права sudo на каждом из них, но, вероятно, я не владею директорией, которую пытаюсь переместить. Я не знаю, как это выяснить.

$ rsync -rt /var/www [email protected]:/home
rsync: recv_generator: создание каталога "/home/www" не удалось: Отказано в доступе (13)
*** Пропуск любого содержимого из этого неудавшегося каталога ***
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-config.php") не удалось: Отказано в доступе (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-mail.php") не удалось: Отказано в доступе (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wordpress") не удалось: Отказано в доступе (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-signup.php") не удалось: Отказано в доступе (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-trackback.php") не удалось: Отказано в доступе (13)
rsync error: некоторые файлы/атрибуты не были переданы (см. предыдущие ошибки) (код 23) в main.c(1183) [sender=3.1.0]

Эта часть здесь:

rsync: recv_generator: создание каталога "/home/www" не удалось: Отказано в доступе (13)

похоже, говорит, что пользователь kiana не имеет достаточных прав на папку /home на удалённом сервере для того, чтобы записать в неё.

Как проверить права на папку

Выполнение ls -l | grep home из / на удалённом сервере должно показать, кто владеет папкой и какие права доступа у неё есть. Стандарт для папки home — это что root:root владеет ею с правами 755 на папку (узнайте больше о правах на папки и файлы здесь)

$ ls -l | grep home
drwxr-xr-x   3 root root  4096 21 мар 14.24 home

Этот вывод говорит о том, что пользователь root с группой root владеет папкой (d) home и имеет полные права (rwx), в то время как другие члены группы root, а также остальные имеют права на чтение/выполнение (r-x), но не запись.

Пользователь, имеющий права sudo, означает, что указанный пользователь может временно иметь привилегии root после аутентификации, что не совсем правдоподобно с rsync.

Заключение

Поскольку вы не являетесь фактическим пользователем root, выполняющим rsync (что по соображениям безопасности делать не рекомендуется), вы не имеете прав на запись в папку /home. Я бы предложил попробовать сохранить данные веб-сервера в другом месте, где пользователь kiana может записать (например, /tmp/, /opt/ и т.д.).

Ещё одно решение — добавить --rsync-path="sudo rsync" в локальную команду rsync. Затем вашей следующей проблемой будет то, что вы не можете вводить команды на удалённом сервере (нет tty, нет интерактивного приглашения). По крайней мере, одно решение для этого — временно установить NOPASSWD: (небезопасно: нет пароля для sudo!) в строке sudoers для вашего пользователя. Как только команда rsync запустится, вы можете удалить небезопасную конфигурацию.

Сначала кто-то должен войти на ваш сервер, чтобы злоупотребить временной небезопасностью sudo. Но взвесьте все за и против.

Права доступа к директории /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 ../

Ваше лучшее решение — создать папку в /home, подключившись по ssh к этой машине и выполнив:

#Обратите внимание на sudo, иначе вам придётся su к root
sudo mkdir /home/www 
#Затем измените владельца, чтобы пользователь kiana мог записывать в неё:
sudo chown kiana:kiana /home/www

Ответ или решение

Ошибки при использовании rsync: "Permission denied (13)"

При попытке миграции данных вашего веб-сайта на новом сервере вы столкнулись с ошибкой "Permission denied (13)", что указывает на проблему с правами доступа. Этот вопрос может быть довольно запутанным для начинающего пользователя, особенно когда вы работаете с удаленными серверами и использованием команды rsync.

Причины возникновения ошибки

На основании вашего описания видно, что вы успешно использовали rsync для передачи текстового файла, но столкнулись с проблемами при попытке скопировать целую директорию. Ошибка rsync: recv_generator: mkdir "/home/www" failed: Permission denied (13) говорит о том, что пользователю kiana, от имени которого выполняется команда rsync, не хватает прав на запись в директорию /home на новом сервере.

Проверка прав доступа к директориям

Чтобы определить, какие права доступа установлены на каталоге /home, выполните следующую команду на новом сервере:

ls -l / | grep home

Типичный вывод для данной команды может выглядеть следующим образом:

drwxr-xr-x  3 root root  4096 21 мар 14.24 home

Этот вывод показывает, что владелец каталога — root, и права доступа к директории /home установлены на 755. Это означает, что только владелец (пользователь root) имеет право на запись в эту директорию, в то время как другие пользователи имеют права только на чтение и выполнение.

Решение проблемы

  1. Изменение директории назначения: Существует несколько способов избежать данной ошибки. Один из самых простых способов — использовать другую директорию, на которую у вас есть права записи. Например, вы можете использовать /tmp или /opt, если они доступны для записи пользователю kiana.

  2. Создание директории через SSH: Если вам необходимо создать подкаталог в /home, выполните следующие команды после входа на новый сервер:

sudo mkdir /home/www
sudo chown kiana:kiana /home/www

Это создаст директорию www и предоставит все необходимые права пользователю kiana.

  1. Использование sudo в rsync: Альтернативным подходом является добавление флага --rsync-path="sudo rsync" к вашей команде rsync, чтобы выполнять эту команду с правами суперпользователя. Будьте осторожны, поскольку это может потребовать временного изменения настроек sudoers, добавив NOPASSWD: для вашего пользователя, что потенциально может представлять угрозу безопасности.

Заключение

Ошибка Permission denied (13) при использовании rsync — это распространенная и разрешимая проблема, связанная с правами доступа на удаленном сервере. Рекомендуется тщательно следить за правами доступа и использовать безопасные практики при работе с sudo и rsync. Если у вас есть дополнительные вопросы или вам нужна помощь, не стесняйтесь обращаться за помощью к сообществу или опытным администраторам.

Оцените материал
Добавить комментарий

Капча загружается...