Tengo una carpeta con mis notas sobre el sistema dentro.
He iniciado sesión como usuario1
cd masternotes
produce:
bash: cd: mastersnotes: permission denied
whoami
produce:user1
ls -l
produce:
drw-rw-rw-. 2 user1 user1 4096 Mar 26 20:47 masternotes
ls -l
dentro 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 masternotes
en la carpeta.
He corrido chown
a root y chgrp
a 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 x
y 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 cd
a é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).
root
puede 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 root
intentarán respetar los permisos para cumplir con los deseos del usuario. Pero root
tiene el poder de realizar cualquier operación (que el sistema operativo sea capaz de realizar) en cualquier archivo o directorio. En un root
shell, cd
ingresar 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 chmod
comando aquí hacenodebe ejecutarse como root
: es deliberado que tenganoincluido sudo
en cualquiera de los comandos. Túpropiola carpeta, para que pueda cambiar sus permisos usted mismo; no es necesario root
que 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-file
pero 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.