Я использую сервер Ubuntu 16.04. На моем сервере у меня есть файл в каталоге /home/userA/дирА
:
пользовательA@myUbuntu:~$
userA@myUbuntu:~$ pwd
/дом/пользовательА
пользовательA@myUbuntu:~$
пользовательA@myUbuntu:~$ ls -l
всего 8
drwxrwxr-x 3 userA userA 4096 17 февраля 14:13 dirA
пользовательA@myUbuntu:~$
userA@myUbuntu:~$ ls -l dirA/
всего 7796
-rw-rw-r-- 1 пользовательA пользовательA 1234 17 фев 14:05 theFile.txt
пользовательA@myUbuntu:~$
Обратите внимание на право собственности здесь; пользователь пользовательA
владеет файлом и каталогом, в котором находится файл.
Мне нужен сценарий оболочки, который перемещает файл.txt
в другое место, в каталог, который не принадлежит пользовательA
. Вот мой сценарий:
#!/бин/баш
echo "Попытка переместить файл..."
{
sudo mv /home/userA/dirA/theFile.txt /home/userB/dirB/.
} || {
echo "Не удалось переместить файл!"
}
... и вывод:
пользовательA@myUbuntu:~$ ./myScript.sh
Попытка переместить файл...
Не удалось переместить файл!
пользовательA@myUbuntu:~$
Как вы понимаете, скрипт работает как пользовательA
. Я не хочу запускать его как корень
.
Итак, я предполагаю, что сценарий не работает из-за разрешений; скрипт запускается как пользовательA
не имеет разрешения на перемещение файла в каталог, принадлежащий пользователь B
. Я пробовал всевозможные варианты судо
команда и другие, но безрезультатно. Я также пробовал глупые обходные пути, такие как копирование файла в /tmp
(это работает), а затем делает чаун
изменить владельца файла (это не работает). Но должен быть способ сделать это аккуратно. Любые идеи?
ПОЛНОЕ РАСКРЫТИЕ :: Я также разместил этот вопрос здесь.