Tengo un directorio en un montaje nfs, que en el servidor está en /home/myname/.rubies
Root no puede acceder a este directorio:
[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
Estoy intentando copiar algo desde ese directorio al /opt
que solo la raíz tiene acceso:
[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
Obviamente puedo hacer lo siguiente (y es lo que he hecho por el momento):
[mitchell.usher@server ~]$ cp -r .rubies/ruby-2.1.3/ /tmp/
[mitchell.usher@server ~]$ sudo cp -r /tmp/ruby-2.1.3/ /opt/
¿Hay alguna manera de hacer esto que no implique copiarlo como un paso intermedio o cambiar los permisos?
permissions
root
file-copy
Mitch
fuente
fuente
cp -Rp /home/mitchell.usher/.rubies /tmp/templocation; sudo mv /tmp/templocation/ruby-2.1.3 /opt
¿esto no funcionará? Si no, ¿por qué?cp <file> /tmp/tmpfile
Respuestas:
Puedes usarlo
tar
como un proceso de bufferEl primero se
tar
ejecuta como usted y así puede leer su directorio de inicio; el segundo setar
ejecuta debajosudo
y así puede escribir/opt
.fuente
cpio
se puede usar de la misma manera.-C
argumento para cambiar el directorio (es decirtar cf - ruby-2.1.3 | sudo tar -C /opt xpf -
). Vale la pena mencionar que desea asegurarse de quesudo
no le pedirá su contraseña (por ejemplo, a través de unasudoers
entrada o credenciales en caché).Puede usar
rsync
oscp
copiar desdeuser@localhost
el directorio local.Ejemplo para
rsync
:Alternativamente podrías
si deja que el acceso raíz localhost directamente (no se recomienda; normalmente preferimos que el acceso raíz sea a través de
sudo
).fuente
Puede hacer una segunda entrada en el FAT (o lo que sea).
Hago esto para mi
HOSTS
archivo. Tengo un enlace en un directorio de escritura que hace referencia al archivo y tiene diferentes permisos, por lo que tengo/Hosts/HOSTS
que puedo modificar fácilmente, y los cambios se colocan en ambos archivos (es decir, "uno"). Son 2 entradas para 1 archivo. No recuerdo el comando, lo siento.Para usted, crea un enlace
/opt
para todos los archivos.rubies
y, cuando cambia algo/opt
, es el mismo archivo que en.rubies
.fuente