Ошибка "Permission denied (13) " при попытке отправить данные через rsync в директорию с правами доступа 777 при использовании не-root аккаунта
В данном вопросе как на локальном компьютере, так и на VPS установлены Ubuntu 20.04.
Пробую отправить файлы через rsync на VPS используя учётную запись (которая на VPS) root :
Starting rsync to [email protected]:/var/www/testapp.com...
Это небезопасно, но ради экспериментов безопасность на VPS пока настроена слабо и так будет до тех пор, пока всё не заработает при слабой безопасности. После ввода пароля для root отправка файлов происходит успешно.
Теперь пытаюсь отправить те же данные используя VPS-аккаунт с пониженными привилегиями non_root_admin. Собственно, в будущем именно этот аккаунт и будет использован, только нужно будет ещё запретить вход по паролю и перейти на аутентификацию через ассиметричное шифрование.
Starting rsync to [email protected]:/var/www/testapp.com...
После ввода пароля для non_root_admin лог такой:
16:46:38] gulp-rsync: rsync: mkstemp "/var/www/.testapp.com.Hzn8wK" failed: Permission denied (13)
[16:46:38] gulp-rsync:
[16:46:38] gulp-rsync:
[16:46:38] gulp-rsync: sent 613 bytes received 894 bytes 143.52 bytes/sec
[16:46:38] gulp-rsync: total size is 90,232 speedup is 59.88
[16:46:38] gulp-rsync:
[16:46:38] gulp-rsync: rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207) [sender=3.1.3]
[16:46:38] gulp-rsync:
[16:46:38] 'Deploy' errored after 9.84 s
[16:46:38] Error in plugin "gulp-rsync"
Message:
Error: rsync exited with code 23
at ChildProcess.<anonymous> (/home/me/testapp.com/node_modules/gulp-rsync/rsync.js:121:17)
Надеюсь, что это глупая ошибка новичка (в система прав доступа в UNIX-подобных ОС) и Вы сразу поняли, в чём дело. Привожу ход своих мыслей, дабы Вы смогли понять, какие моменты потребуется разъяснить.
rsync: mkstemp- пытается создать новую временную директорию, но что-то идёт не так.Permission denied (13)скорее всего означает, что не хватает прав доступа. На это косвенно указывает и то, что с аккаунтом root всё работает нормально.- В UNIX-подобных ОС изначально никто, кроме root не имеет права делать никакие операции с файлами и директориями?
- Хотя это и небезопасно, я временно установил директории testapp.com права доступа 777. Так и этого не достаточно?!
- Получается, что даже у директории права доступа 777, то в ней нельзя создавать поддиректории?!
Ответы (1 шт):
Сообщение об ошибке говорит о том, что недостаточно прав на каталог /var/www чтобы создать в нем временные файлы. Права надо дать и на /var/www. Права лучше дать через группу.
groupadd sync
Добавляем в неё пользователя:
gpasswd -a username sync
Даём права на файлы:
chgrp sync /var/www
chmod g+rwx /var/www
chgrp sync /var/www/testapp.com
chmod g+rwx /var/www/testapp.com