usa - permisos linux 777
Cómo crear un directorio y dar permiso en un solo comando (6)
De acuerdo con la página man de mkdir ...
mkdir -m 777 dirname
¿Cómo crear un directorio y dar permiso en un solo comando en Linux?
Tengo que crear muchas carpetas con el permiso completo 777
.
Comandos
mkdir path/foldername
chmod 777 path/foldername
No me gusta crear y dar permiso en dos comandos. ¿Puedo hacer esto en un solo comando?
IMO, es mejor usar el comando de install
en tales situaciones. Intentaba hacer que systemd-journald
persistiera en todos los reinicios.
install -d -g systemd-journal -m 2755 -v /var/log/journal
Puede escribir un script de shell simple, por ejemplo:
#!/bin/bash
mkdir "$1"
chmod 777 "$1"
Una vez guardado, y el indicador ejecutable habilitado, puede ejecutarlo en lugar de mkdir y chmod:
./scriptname path/foldername
Sin embargo, la respuesta de Alex es mucho mejor porque genera un proceso en lugar de tres. No sabía sobre la opción -m
.
Solo para ampliar y mejorar algunas de las respuestas anteriores:
Primero, verifico la página man de mkdir para GNU Coreutils 8.26 - nos da esta información sobre la opción ''-m'' y ''-p'' (también se puede dar como --mode = MODE y --parents, respectivamente )
... establecer [s] modo de archivo (como en chmod), no a = rwx - umask
... no hay error si existe, crea directorios principales según sea necesario
Las declaraciones son vagas y poco claras en mi opinión. Pero, básicamente, dice que puedes hacer el directorio con permisos especificados por "notación numérica chmod" (octals) o puedes ir "al revés" y usar a / u umask.
Nota al margen: digo "al revés", ya que el valor de umask es exactamente lo que parece: una máscara , que oculta / elimina permisos en lugar de "otorgarlos" como con la notación octal numérica de chmod.
Puede ejecutar umask
con el comando shell-built para ver cuál es su umask de 3 dígitos; para mí, es 022
. Esto significa que cuando ejecuto mkdir yodirectory
en una carpeta determinada (por ejemplo, mahome) y lo stat
, obtengo una salida que se parece a esto:
755 richard:richard /mahome/yodirectory
# permissions user:group what I just made (yodirectory),
# (owner,group,others--in that order) where I made it (i.e. in mahome)
#
Ahora, para agregar solo un poquito más sobre esos permisos octales. Cuando crea un directorio, "su sistema" toma su directorio predeterminado perms ''[que se aplica a los nuevos directorios (su valor debe ser 777)] y aplica bofetadas en su (u) máscara, efectivamente ocultando algunas de esas permanentes''. Mi umask es 022 - ahora si "restamos" 022 de 777 (restar técnicamente es una sobreimplicación y no siempre es correcto) en realidad estamos desactivando permanentes o enmascarándolos ) ... obtenemos 755 como se dijo (o "statted") ) antes.
Podemos omitir el ''0'' delante de los octalles de 3 dígitos (para que no tengan que ser 4 dígitos) ya que en nuestro caso no quisimos (o más bien no mencionamos) ningún stickybits, setuids o setgids (es posible que desee examinar esos, por cierto, podrían ser útiles ya que va a 777). Entonces, en otras palabras, 0777 implica (o es equivalente a) 777 (pero 777 no es necesariamente equivalente a 0777, ya que 777 solo especifica los permisos, no los setúidos, setgids, etc.)
Ahora, para aplicar esto a su pregunta en un sentido más amplio, ya tiene (ya) algunas opciones. Todas las respuestas anteriores funcionan (al menos según mis coreutils). Pero puede (o es muy probable que) tenga problemas con las soluciones anteriores cuando desee crear subdirectorios (directorios anidados) con 777 permisos a la vez. Específicamente, si hago lo siguiente en mahome con una umask de 022:
mkdir -m 777 -p yodirectory/yostuff/mastuffinyostuff
# OR (you can swap 777 for 0777 if you so desire, outcome will be the same)
install -d -m 777 -p yodirectory/yostuff/mastuffinyostuff
yodirectory
perms 755
para el yodirectory
y el yostuff
, con solo 777
perms para el mastuffinyostuff
. Así que parece que el umask
es todo lo que se ha abofeteado en el yodirectory
y el yostuff
... para evitar esto podemos usar una subshell:
( umask 000 && mkdir -p yodirectory/yostuff/mastuffinyostuff )
y eso es. 777 perms for yostuff, mastuffinyostuff, y yodirectory.
puede usar el siguiente comando para crear un directorio y otorgar permisos al mismo tiempo
mkdir -m777 path/foldername
install -d -m 0777 /your/dir
debería darte lo que quieres Tenga en cuenta que cada usuario tiene derecho a escribir agregar y eliminar archivos en ese directorio.