Empaquete una carpeta con muchas subcarpetas y archivos en Windows con 7zip, subo a VPS y luego ejecuto el comando:
tar -xvzf file.tar.gz
entonces todos los archivos y carpetas desempaquetados tienen permisos de 777. ¿Cómo lo consigo para que las carpetas tengan permisos de 755 y los archivos 644?
linux
file-permissions
tar
Kaspar L. Palgi
fuente
fuente
Respuestas:
Si se está ejecutando
tar(1)
como un usuario normal, aplicará suumask
de forma predeterminada. Si está ejecutandotar(1)
comoroot
, entonces puede dar la--no-same-permissions
opción de línea de comando para pedirtar(1)
respetarumask
.Entonces: ejecute esto como un usuario normal:
o ejecutar esto como
root
:Es posible que desee para pegar
umask 022
en su~/.bashrc
,~/.bash_profile
o~/.profile
. (Consulte la página debash(1)
manual para obtener detalles completos sobre los archivos de inicio. Es complicado).Los detalles
umask
se pueden encontrar en la página de manual de su shell, en la páginaumask(2)
de manual de llamadas al sistema o en la página deumask(1posix)
manual de utilidades proporcionada por POSIX (si tiene lamanpages-posix
instalada).fuente
Ejecute los siguientes comandos en la raíz del directorio para establecer los permisos deseados para sus directorios y archivos:
Tenga en cuenta el espacio entre el corchete de cierre y la barra oblicua
fuente
\;
Si usa X mayúscula
chmod
, puede usarlo para establecer los permisos de ejecución solo en los directorios. es decirfuente
Encontré esta solución que funcionó para mí. Para carpetas y subcarpetas:
Y para todos los archivos (también en carpetas y subcarpetas):
Todos los comentarios son bienvenidos si esta no es una buena manera de hacerlo. Acabo de empezar a aprender Linux.
Después de los comentarios, una solución más robusta que maneja bien los caracteres especiales sería:
fuente
the': No such file or directory chmod: cannot access
Logo.txt ': No existe tal archivo o directorio chmod: no puede acceder a `./blog/wp-content/themes/OneRoom/LOGO': No existe dicho archivo o di777
es peligroso y solo se aplica a una minoría muy pequeña de sistemas.find . -type f -print0 | xargs -0 chmod 644
. No-name "*"
es necesario, yxargs(1)
analizará los nombres de archivo en espacios o líneas nuevas a menos que use el-0
- que analiza los nombres de archivo enNUL
caracteres ASCII , que no pueden aparecer en los nombres de archivo. El-print0
porfind(1)
lo pide para dar formato a su salida en un modo adecuado para laxargs -0
entrada.encontrar . -tipo f -exec chmod 644 {} \;
fuente