Rulez un server Ubuntu 16.04. Pe serverul meu, am un fișier în director /home/userA/dirA
:
utilizatorA@myUbuntu:~$
userA@myUbuntu:~$ pwd
/home/userA
utilizatorA@myUbuntu:~$
userA@myUbuntu:~$ ls -l
total 8
drwxrwxr-x 3 userA userA 4096 Feb 17 14:13 dirA
utilizatorA@myUbuntu:~$
userA@myUbuntu:~$ ls -l dirA/
total 7796
-rw-rw-r-- 1 utilizatorA userA 1234 Feb 17 14:05 theFile.txt
utilizatorA@myUbuntu:~$
Notați aici proprietatea; utilizator utilizatorA
deține fișierul și directorul în care se află fișierul.
Am nevoie de un script shell care se mișcă theFile.txt
într-o altă locație, într-un director care nu este deținut de utilizatorA
. Iată scenariul meu:
#!/bin/bash
echo „Se încearcă mutarea fișierului...”
{
sudo mv /home/userA/dirA/theFile.txt /home/userB/dirB/.
} || {
echo „Nu s-a putut muta fișierul!”
}
...si iesirea:
userA@myUbuntu:~$ ./myScript.sh
Se încearcă mutarea fișierului...
Nu s-a mutat fișierul!
utilizatorA@myUbuntu:~$
După cum vă puteți da seama, scriptul rulează ca utilizatorA
. Nu vreau să o rulez ca rădăcină
.
Deci presupun că scriptul eșuează din cauza permisiunilor; un script rulat ca utilizatorA
nu are permisiunea de a muta un fișier într-un director deținut de utilizatorB
. Am încercat tot felul de variante ale sudo
comandă și altele, dar fără rezultat. De asemenea, am încercat soluții proaste, cum ar fi copierea fișierului în /tmp
(care funcționează) și apoi făcând a chown
pentru a schimba proprietatea fișierului (asta nu funcționează). Dar trebuie să existe o modalitate de a face asta cu grijă. Vreo idee?
DEZVOLTARE COMPLETĂ :: Am postat și această întrebare Aici.