Necesito establecer permisos de lectura y escritura para el root
usuario al directorio subfolderN
y todas sus carpetas principales hasta root
.
Puedo hacerlo a mano:
$ sudo chmod +rx /root/subfolder1/subfolder2/subfolderN
$ sudo chmod +rx /root/subfolder1/subfolder2
$ sudo chmod +rx /root/subfolder1
$ sudo chmod +rx /root
Pero si N
es grande estoy cansado. ¿Cómo hacer automáticamente por un comando?
permissions
directory
Maxim Yefremov
fuente
fuente
/root
mundo sea legible.Respuestas:
Esto se puede hacer fácilmente en el shell, comenzando en el subdirectorio y subiendo:
Esto comienza con cualquier archivo / directorio que establezca f también, y funciona en cada directorio padre, hasta que encuentre "/" (o lo que establezca la cadena en la condición del bucle). No chmod "/".
fuente
f
pasa si es un camino relativo y quiero detenerme en lo que es relativo en lugar de/
?$f
es asífoo/bar
, ¿$f
alguna vez cambiará a.
? Si lodirname
hace GraciasCon
csh
,tcsh
,ksh
,zsh
,bash
,fish
oyash -o braceexpand
:Con
zsh
:O podría definir una función de calificador global como:
Para ser utilizado por ejemplo como:
Tenga en cuenta que
chmod +rx
se ve afectado por la umask. Si suumask
no incluye007
, haría que el/root
directorio sea legible y accesible en todo el mundo, lo cual es una mala idea./root
es típicamente para las cosas privadas del superusuario, es una mala idea exponerlo.fuente
,
en{,/subfolder}
sí?/subfolder
; así/root{,/subfolder}
produce/root
y/root/subfolder
sh
Bueno, podrías hacer algo un poco más complejo como:
Para ver qué hará esto, reemplace la
chmod
llamada con print:fuente
No sé qué estás tratando de hacer, pero es mejor que no tomes el recursivo a la ligera . Dicho esto, lea la respuesta real:
Umm ... ¿por qué no usar recursivo?
O si no te gusta, puedes dar
chmod
varios directorios:fuente
chmod -R /root
cambia todo debajo/root
, incluidos los archivos normales y todos los directorios. La pregunta es sobre cambiar solo una cadena de directorios.