¿Cómo cambio el propietario al usuario actual en la carpeta y que contiene carpetas dentro de mi directorio de inicio?

12

Usando sudo nautilushe creado algunas carpetas y quiero deshacerme de los permisos de root en ellas. Pero tengo muchos y quiero hacerlo en un directorio completo y sus carpetas.

Entonces, ¿cómo permitir leer / escribir al usuario actual a todos los archivos y carpetas dentro de un directorio específico que está dentro de casa?

Vitor Abella
fuente

Respuestas:

13

Para revertir el daño causado por el uso sudo nautilus, debe hacerse propietario de los directorios (y sus contenidos) que sean propiedad de root.

Puede findhacer esto, ya que tiene una prueba para encontrar solo archivos propiedad de un usuario específico.

Esto encontrará todos los directorios en su hogar propiedad de root:

sudo find ~ -type d -user root

Luego, puede repetir el findcomando y agregar la acción que desea realizar: cambiar de forma recursiva la propiedad de todos los directorios encontrados y sus contenidos al usuario actual:

sudo find ~ -type d -user root -exec sudo chown -R $USER: {} +

Explicación:

  • ~ el directorio de inicio
  • -type d encontrar solo directorios
  • -user root encontrar solo cosas que pertenezcan a root
  • -exec haga el siguiente comando en lo que se encontró
  • sudo chown -R cambiar recursivamente el dueño
  • $USER el usuario actual
  • : También cambie el grupo al usuario específico

De manera más eficiente, podría omitir la -type dbúsqueda de archivos de cualquier tipo que pertenezca a la raíz, y también omitir el -Rque findhará la recursión por usted al actuar sobre todos los archivos

sudo find ~ -user root -exec sudo chown $USER: {} +
Zanna
fuente
Debe ejecutar su findcon sudo( sudo find ...) para inspeccionar los rootsubdirectorios propios con 0700protecciones y todo lo que se encuentre debajo de ellos. Lo mismo para la reparación.
waltinator
¿"defenderse de lo que es probable" o "defenderse de lo que es posible"? Tu elección.
waltinator
@waltinator seguro :) gracias por mencionarlo para poder mejorar. Solo trato de no usarlo sudohasta que sea necesario
Zanna
10

Ejecutar herramientas GUI, nautiluscomo rootse considera perjudicial por este motivo, entre otras (funciones ocultas, capacidad de ejecutar silenciosamente fragmentos de programa desde quién sabe dónde, ...).

No tiene un problema de "permiso", tiene un problema de "propiedad".

Para encontrar todos los archivos que posee root(realmente propiedad de cualquier otra persona), haga lo siguiente:

sudo find $HOME \! -user $USER

Para devolverle la propiedad, podría

sudo chown -R $(id -u):$(id -g) $HOME

pero eso cambiará la propiedad de todos los archivos dentro y debajo $HOME

sudo find $HOME \! -user $USER >/tmp/list-of-files
# edit the list of files, and delete file files you don't want to chown
nano /tmp/list-of-files 
xargs sudo chown $(id -u):$(id -g) </tmp/list-of-files

Le da a uno la oportunidad de ajustar la lista de archivos, propiedad de usted, que le devolverán su propiedad.

Waltinator
fuente
5

Lo que debe hacer es cambiar la propiedad de la carpeta de la raíz del usuario (y grupo) al otro usuario (y grupo) que desee.

Imagine que desea trabajar en / home / randomFolder , y que el usuario al que desea administrar la propiedad es vitor-abella , lo que debe hacer es simplemente ejecutar esto como root:

chown -R vitor-abella:vitor-abella /home/randomFolder

Puede tomar un tiempo si hay muchos archivos y subcarpetas, pero después de eso, debería estar encaminado.

Salud.

Javier Caselli
fuente
3
Yo uso $(id -u):$(id -g), en lugar de pedirle a OP que imagine, y $HOME/randomFolder.
waltinator