
Esta pregunta también fue hechaaquí.
Cuando copio algún directorio (dir) de forma recursiva con sudo en bash, copia solo el primer nivel de la jerarquía de directorios, pero cuando se usa sin sudo, copia el directorio con todos sus subdirectorios, aunque los comandos en la línea de comandos solo tienen la diferencia en el presencia de sudo.
¿Por qué pasó esto?
Por ejemplo:
k@l:/$ tree
.
|
|__a
| |
| |__b
| |
| |__1.htm
|
|__c
k@l:/$ sudo cp -r /a/b /c/d
k@l:/$ cd /c
k@l:/c$ ls
d
k@l:/c$ cd d
bash: cd: /c/d: Permission denied
k@l:/c$ tree
.
|__d [error opening dir]
1 directory, 0 files
Respuesta1
Cuando lo hace, sudo cp -r /a/b /c/d
la carpeta se copia /c/d/
como raíz con la raíz como propietario, por lo tanto, obtiene unPermiso denegadodado que necesita permiso de root para abrir el directorio, intente abrirlo /c/d/
en una terminal raíz; alternativamente, debe modificar el propietario del archivo o corregir el permiso usando chown
/ chmod
para que su usuario actual pueda acceder a la carpeta.
Nota: sudo cd
no funcionará ya que cd
es un comando de shell, no programas.
Respuesta2
Quizás /c/d tenía permisos 700 con un propietario diferente. Intentar sudo chmod -R 755 /c/d
.
Respuesta3
Prefiero usar cp -a
en lugar de cp -r
. Es posible que este último no conserve algunos atributos del archivo.
Respuesta4
En lugar de cambiar el cp
comando, podrías ejecutarlo sudo
como un usuario específico haciendo algo como
sudo -u thisUser cp -r /a/b /c/d
Sin embargo, esto funcionará sólo si thisUser
tiene permisos para/a/b