Soy propietario de una carpeta pero no puedo acceder a ella.

Soy propietario de una carpeta pero no puedo acceder a ella.

Tengo una carpeta con mis notas sobre el sistema dentro.

He iniciado sesión como usuario1

cd masternotesproduce:

bash: cd: mastersnotes: permission denied

whoamiproduce:user1

ls -lproduce:

drw-rw-rw-. 2 user1 user1        4096 Mar 26 20:47 masternotes

ls -ldentro del directorio produce:

-rw-rw-rw-. 7 user1 user1   345 Oct  7  2006 crontab
-rw-rw-rw-. 7 user1 user1   348 Oct  7  2006 crontab~
-rw-rw-rw-. 7 user1 user1  3702 Oct  7  2006 grep_usage.txt
-rw-rw-rw-. 7 user1 user1 91868 Oct  7  2006 lvm-layout-10-14-03.tif
-rw-rw-rw-. 7 user1 user1    30 Oct  7  2006 mysql
-rw-rw-rw-. 7 user1 user1 35764 Oct  7  2006 notes

He corrido chmod -R 666 masternotesen la carpeta.

He corrido chowna root y chgrpa root y de nuevo al usuario1.

root puede descender e ingresar a la carpeta y abrir el archivo.

usuario1 no puede.

¿Alguna pista sobre lo que está pasando aquí?

Respuesta1

Esto es unpermisosproblema, no un problema de propiedad.

Los permisos de ejecución (abreviados xy que aparecen donde -está rw-) están notoriamente ausentes de los permisos que nos ha mostrado.

Los permisos de ejecución funcionan de manera muy diferente para los directorios que para los archivos normales. Para directorios, los permisos de ejecución brindan la posibilidad deentrar al directorio(es decir, acceder cda él o abrirlo en un administrador de archivos). También brindan la posibilidad de intentar acceder a archivos en el directorio (aunque el éxito o no también depende de otros permisos, que a veces incluyen los permisos de los archivos a los que se accede).

rootpuede ingresar al directorio porque en realidad no está sujeto a permisos de la manera habitual. En muchos sentidos, los comandos y aplicaciones que se ejecutan rootintentarán respetar los permisos para cumplir con los deseos del usuario. Pero roottiene el poder de realizar cualquier operación (que el sistema operativo sea capaz de realizar) en cualquier archivo o directorio. En un rootshell, cdingresar a un directorio que no tenga permisos de ejecución será exitoso.

La soluciónEl problema es ejecutar:

chmod u+x masternotes

Eso le da ( +) al propietario de masternotes( u) permisos ejecutables ( x) en el directorio.

Luego podrá ingresar al directorio e intentar acceder a los archivos allí, como un usuario normal.

Si desea que los miembros del propietario de su grupo también puedan hacer esto, puede ejecutar esto en su lugar:

chmod ug+x masternotes

Pero probablemente sea el único miembro de su grupo específico de usuario (al que pertenece la carpeta).

El chmodcomando aquí hacenodebe ejecutarse como root: es deliberado que tenganoincluido sudoen cualquiera de los comandos. Túpropiola carpeta, para que pueda cambiar sus permisos usted mismo; no es necesario rootque lo haga por usted.

En caso de que esté interesado enconfiguración de permisos de ejecución numéricamente, recuerda que por cada dígito que sumas (empezando por cero):

  • 4 para leer.
  • 2 para escribir.
  • 1 para ejecutar.

Por ejemplo, si quisieras que todos pudieran leer y ejecutarsome-filepero solo el dueño para poder escribir, usarías:

chmod 755 some-file

recomiendoFilePermissions en la documentación de la comunidad., para obtener más información sobre los permisos de archivos en Ubuntu, incluido el bit ejecutable y su significado especial para las carpetas.

información relacionada