J'ai un répertoire sur une monture nfs, qui est sur le serveur /home/myname/.rubies
Root ne peut pas accéder à ce répertoire:
[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
J'essaie de copier quelque chose à partir de ce répertoire /opt
auquel seul root a accès:
[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
Évidemment, je peux faire ce qui suit (et c'est ce que j'ai fait pour le moment):
[mitchell.usher@server ~]$ cp -r .rubies/ruby-2.1.3/ /tmp/
[mitchell.usher@server ~]$ sudo cp -r /tmp/ruby-2.1.3/ /opt/
Y a-t-il un moyen de le faire qui n'impliquerait pas de le copier en tant qu'étape intermédiaire ou de modifier les autorisations?
permissions
root
file-copy
Mitch
la source
la source
cp -Rp /home/mitchell.usher/.rubies /tmp/templocation; sudo mv /tmp/templocation/ruby-2.1.3 /opt
cela ne fonctionnera-t-il pas? Si non, pourquoi?cp <file> /tmp/tmpfile
Réponses:
Vous pouvez utiliser
tar
comme processus tamponLe premier
tar
s'exécute comme vous et peut donc lire votre répertoire personnel; le secondtar
court soussudo
et peut donc écrire/opt
.la source
cpio
peut être utilisé de la même manière.-C
argument pour changer de répertoire (ietar cf - ruby-2.1.3 | sudo tar -C /opt xpf -
). Il peut être utile de mentionner que vous souhaitez vous assurer quesudo
votre mot de passe ne vous sera pas demandé (par exemple via unesudoers
entrée ou des informations d'identification mises en cache).Vous pouvez utiliser
rsync
ouscp
pour copier à partiruser@localhost
du répertoire local.Exemple pour
rsync
:Vous pourriez alternativement
si vous laissez directement root accéder à localhost (non recommandé; nous préférons normalement que l'accès root soit via
sudo
).la source
Vous pouvez faire une deuxième entrée dans le FAT (ou autre).
Je fais cela pour mon
HOSTS
dossier. J'ai un lien dans un répertoire accessible en écriture qui fait référence au fichier et il a des autorisations différentes, donc je/Hosts/HOSTS
peux le modifier facilement, et les changements sont mis dans les deux (c'est-à-dire "l'un") fichier (s). C'est 2 entrées pour 1 fichier. Je ne me souviens pas de la commande, désolé.Pour vous, vous créez un lien vers
/opt
tous les fichiers de.rubies
, et lorsque vous modifiez quelque chose dans/opt
, c'est le même fichier que dans.rubies
.la source