Me metí en muchos problemas al cambiar el permiso de una carpeta que myfolder
reside en /
. Emití el comando
sudo chown -R luca:luca /myfolder/.*
Mi intención era cambiar la propiedad de todos los archivos ocultos /myfolder
.
Desafortunadamente, me di cuenta de que también /
se cambió la propiedad de , lo que, por supuesto, me dejó con un sistema roto. Creo que esto sucedió porque ..
coincide .*
, pero todavía me parece extraño.
¿Cambiar el directorio principal es el comportamiento correcto o debo presentar un informe de error?
Si fue mi error al usar chown, ¿cuáles son las mejores prácticas para evitar cambiar la propiedad de las carpetas y archivos del sistema?
permissions
filesystem
chown
hidden-files
lucacerona
fuente
fuente
..
partidos.*
.*
significa cualquier archivo que termina con.
*.
significa cualquier archivo que comienza con.
/
directamente (crear carpetas, eliminar, etc.) a menos que sea completamente necesario (abra una pregunta para lo que desea lograr). También es peligroso usar comodines + privilegios de root porque, la mayoría de las veces, no está 100% seguro de lo que ha afectado el comodín.chmod
ychown
son comandos similares, ambos comienzan conch
, contiene unao
y tienen otras dos letras similares (n
ym
). </ literal> En serio, los dos son de la forma:[cmd] -R [mode or user] [one or more files]
. Algunas soluciones ofrecidas en esa pregunta también funcionan para su caso, por ejemplo, esta de Sean Reifschneider (en el medio). Esta respuesta también se aplica a los archivos ocultos solo eliminando el patrón global para archivos no ocultos.Respuestas:
Recuerde que el shell expande (interpreta) la línea de comando antes de ejecutarla
se interpreta primero como:
tenga
/myfolder/..
en cuenta la en su línea de comandochown -R luca:luca /myfolder/..
es equivalente achown -R luca:luca /
eso hace que el chown funcione "hacia atrás"
Úselo
echo /myfolder/.*
cuando use "*" para verificar.fuente
/myfolder
. Elfind
comando es superfluo y se rompe con nombres de archivos que contienen espacios en blanco. (si desea cambiar archivos de forma recursiva,find /myfolder | xargs chown luca:luca
es similar achown -R luca:luca /myfolder
).Bien. La línea de comando como root es muy poderosa. Lee algunos de estos clásicos. Y sí,
.*
coincidir con..
es exactamente lo que se pretende. Dot no es un personaje especial. Es una convención. Por convención, los archivos que comienzan con un punto están ocultos de la vista predeterminada cuando se enumera un directorio, nada menos y nada más. Por convención, el inodo que conduce al directorio actual obtiene el.
nombre y el inodo que conduce al directorio principal obtiene el..
nombre.Lo que deberías haber hecho fue
¿Mencioné que no hay nada especial en los nombres de archivo que comienzan con un punto? Recursivo
chown
no lo cree así.En este momento, es posible que pueda rescatar parte de la funcionalidad cambiando la propiedad nuevamente a la raíz. Sin embargo, a la larga, probablemente tendrá que reinstalar el sistema.
Como regla general:
echo .*
).fuente
chown -R luca:luca /myfolder/.[^.]*
creoecho .*
Es una buena forma de probar la expansión. Te mostrará exactamente lo que ve el caparazón.ls .*
puede ser un poco más confuso, ya que bajará directorios (ls -d .*
podría ser mejor, pero también podría usarecho .*
)