Ich habe ein Verzeichnis auf einem NFS-Mount, das sich auf dem Server befindet /home/myname/.rubies
Root kann nicht auf dieses Verzeichnis zugreifen:
[mitchell.usher@server ~]$ stat /home/mitchell.usher/.rubies
File: `/home/mitchell.usher/.rubies'
Size: 4096 Blocks: 8 IO Block: 32768 directory
Device: 15h/21d Inode: 245910 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 970/mitchell.usher) Gid: ( 100/ users)
Access: 2016-08-22 15:06:15.000000000 +0000
Modify: 2016-08-22 14:55:00.000000000 +0000
Change: 2016-08-22 14:55:00.000000000 +0000
[mitchell.usher@server ~]$ sudo !!
sudo stat /home/mitchell.usher/.rubies
stat: cannot stat `/home/mitchell.usher/.rubies': Permission denied
Ich versuche, etwas aus diesem Verzeichnis zu kopieren, auf /opt
das nur root Zugriff hat:
[mitchell.usher@server ~]$ cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot create directory `/opt/ruby-2.1.3': Permission denied
[mitchell.usher@server ~]$ sudo !!
sudo cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot stat `.rubies/ruby-2.1.3/': Permission denied
Natürlich kann ich Folgendes tun (und das habe ich vorerst getan):
[mitchell.usher@server ~]$ cp -r .rubies/ruby-2.1.3/ /tmp/
[mitchell.usher@server ~]$ sudo cp -r /tmp/ruby-2.1.3/ /opt/
Gibt es eine Möglichkeit, dies zu tun, ohne es als Zwischenschritt zu kopieren oder Berechtigungen zu ändern?
permissions
root
file-copy
Mitch
quelle
quelle
cp -Rp /home/mitchell.usher/.rubies /tmp/templocation; sudo mv /tmp/templocation/ruby-2.1.3 /opt
Wird das nicht funktionieren? Wenn nein, warum?cp <file> /tmp/tmpfile
Antworten:
Sie können
tar
als Pufferprozess verwendenDer erste wird
tar
wie Sie ausgeführt und kann so Ihr Home-Verzeichnis lesen. der zweitetar
läuft untersudo
und kann so schreiben/opt
.quelle
cpio
kann auf die gleiche Weise verwendet werden.-C
Argument verwenden, um das Verzeichnis zu ändern (dhtar cf - ruby-2.1.3 | sudo tar -C /opt xpf -
). Erwähnenswert ist möglicherweise, dass Sie sicherstellen möchten, dasssudo
Ihr Passwort nicht abgefragt wird (z. B. durch einensudoers
Eintrag oder zwischengespeicherte Anmeldeinformationen).Sie können
rsync
oderscp
zum Kopierenuser@localhost
in das lokale Verzeichnis verwenden.Beispiel für
rsync
:Sie könnten alternativ
Wenn Sie den Root-Zugriff direkt auf localhost zulassen (nicht empfohlen; normalerweise bevorzugen wir den Root-Zugriff über
sudo
).quelle
Sie können einen zweiten Eintrag in der FAT (oder was auch immer) machen.
Ich mache das für meine
HOSTS
Datei. Ich habe einen Link in einem beschreibbaren Verzeichnis, der auf die Datei verweist, und er hat unterschiedliche Berechtigungen, sodass ich ihn/Hosts/HOSTS
leicht ändern kann und die Änderungen in beide (dh "die eine") Datei (en) übernommen werden. Es sind 2 Einträge für 1 Datei. Ich erinnere mich nicht an den Befehl, sorry.Für Sie
/opt
erstellen Sie einen Link zu für alle Dateien in.rubies
, und wenn Sie etwas ändern/opt
, handelt es sich um dieselbe Datei wie in.rubies
.quelle