Que se usa más ampliamente: chmod 777 o chmod a + rwx [cerrado]

20

Fuera de las dos opciones para cambiar los permisos:

  • chmod 777 file.txt
  • chmod a+rwx file.txt

Estoy escribiendo un documento que detalla que los usuarios necesitan cambiar los permisos de un determinado archivo. Quiero detallarlo como la forma más común de cambiar los permisos de archivos.

Actualmente se dice:

- Set permissions on file.txt as per the example below:
    - chmod 777 /tmp/file.txt

Este es solo un ejemplo, y no cambiará los archivos para tener permisos completos para todos.

Kevdog777
fuente
66
La primera solución es más corta y más utilizada, nunca vi la segunda.
Archemar
2
configurar permisos de lectura, escritura y ejecución para todos no es una buena idea en términos de seguridad. Deberías usar chmod 773 en su lugar.
Martin Erhardt
1
@ MartinErhardt Normalmente solo usaría 775o solo 755para archivos ejecutables.
Kevdog777
3
chmod 777es como chmod a=rwx, no chmod a+rwx.
Stéphane Chazelas
1
777o 666es simple y mucho más fácil de memorizar que ugo+rwx, a+rwxo ugo+rwque es muy confuso ya que oes ambiguo y puede significar para usted, ya sea el propietario u otros, usted elige. Entonces, en lugar de cometer el gran error, sigue comprobando manpara verificar cuál es cuál, o simplemente usa los números.
kenorb

Respuestas:

29

Google da:

chmod 777 Es aproximadamente 3 veces más popular.

Dicho esto, prefiero usar opciones largas en la documentación y los scripts, ya que se documentan automáticamente. Si está siguiendo sus instrucciones con "Ejecutar ls -l | grep file.txty verificar permisos", es posible que desee usarlo chmod a+rwxporque así es como se mostrarán los permisos.

jwhitlock
fuente
Gracias por esto. Supongo que escribirlo en su totalidad (alfanumérico) evitará que la gente pregunte qué 7significa, etc.
Kevdog777
1
Creo que la razón chmod 777es más popular (como se conjeturó antes de ver sus números) es simplemente que escribe 2 caracteres menos :)
Ángel
Si desea agregar consejos en su documentación, puede agregar un consejo que chmod 777es un atajo útil para lograr el mismo efecto. Sus lectores apreciarían el elemento educativo en su documentación. 777 es más popular porque es mucho más fácil y rápido golpear 7 tres veces, pero cuando un nuevo usuario ve 777 por primera vez, puede que no sepan exactamente qué significa. Es por eso que es una mala elección como documentación principal. Pero definitivamente vale la pena mencionarlo como un consejo.
ADTC
Como tangente, mi hermano y sus amigos usarían esta técnica para permitir palabras de Scrabble. Tenían cierto umbral para el número de visitas de Google antes de que una palabra se considerara "real"
Wayne Werner
Creo que es popular porque es más antiguo (la notación simbólica se agregó más tarde), por lo que cuando cualquiera elige, buscan en google o lo que sea el equivalente del tiempo y van con la multitud. Creo que es más fácil de usar simbólica, porque cuando he resuelto los números podría haber escrito los símbolos, también tiendo a hacerlo bien la primera vez.
ctrl-alt-delor
26

[Edito para agregar las mejores prácticas, siguiendo la sugerencia de Dotancohen en su respuesta. Espero que no lo aclare menos, y que se tome el buen hábito]

Información adicional importante: no son equivalentes.

chmod a+rwx: establezca los últimos 3 octales en 777, de modo que se asegure de que Propietario, Grupo y Usuarios tengan el conjunto "rwx". Si hay bits adicionales en el primer octal (setuid, setgid y / o Sticky bit), los deja intactos. Piense en ello como un binario "o 00777".

chmod 777 : establezca los derechos en 00777, para garantizar que el propietario, el grupo y los usuarios tengan configurado "rwx", Y NADA MÁS. También se asegura de que los bits adicionales (setuid, setgid y / o Sticky bit) estén establecidos en 0.

Por lo tanto, use el primer formulario, si solo desea asegurarse de otorgar acceso a todos (y asegúrese de que sea doble, triple seguro de que es necesario ... abre la puerta a todo tipo de problemas de seguridad, algunos inesperadamente amplios en lo que permiten que lo haga un usuario malintencionado)

Utilice el formulario 777 si también desea asegurarse de restablecer cualquier bit setuid / setgid / sticky, es decir, si los archivos deben ser "00777", lo que probablemente sea más probable en su caso (se conoce el derecho del archivo, y debería ser : 00777). Aquí también, asegúrese de que sea realmente necesario ...

Por lo general, es mejor mantener el acceso al propietario (y a veces al grupo): luego use los grupos para otorgar acceso a algunos usuarios específicos al archivo / directorio. a + rwx es fácil y generalmente la forma incorrecta de otorgar acceso (por supuesto, hay casos muy raros cuando es la única forma ...)

http://en.wikipedia.org/wiki/Chmod es una buena lectura, ya que explica qué representa cada número o letra (incluidos setuid / setgid / sticky)

Olivier Dulac
fuente
1
Además, chmod a + w (que incluye a + rwx) en un archivo suid es muy peligroso. ¿Necesito elaborar en chmod a + w *?
Joshua
¿Cuál es el punto de establecer el otherspermiso? Si ha iniciado sesión en la máquina como usuario, ¿entonces seguramente puede usar el userspermiso?
Kevdog777
@ Kevdog777: Otros son para personas que no son el propietario ni el grupo, es decir, todos los demás en el sistema
Olivier Dulac
1
@ Kevdog777: si solo el usuario root y el usuario necesitan acceso: chmod 00600 (si no es necesario ejecutar el archivo) o chmod 00700 (si es necesario ejecutar el archivo -o-- es un directorio). o chmod 00400 para agregar una protección (pequeña, fácilmente reemplazable) contra la modificación / escritura en el archivo (00500 para un directorio). Luego, otros (y las personas del grupo, pero no el usuario) no pueden acceder al archivo / directorio. (siguiendo la nota dotandcohen, agrego el cuarto octal allí + un "0" antes: no hace ninguna diferencia para el shell, pero ayuda si configura a través de perl / C / etc. y el cuarto octal es una especie de recordatorio de que existe , y que también está configurado)
Olivier Dulac
44
chmod 777es como chmod a=rwx.
Stéphane Chazelas
1

Por lo general, pienso que la diferencia es que establecer los permisos en 0777 los establece explícitamente en 0777. Como se mencionó anteriormente, el 0 inicial se inferirá si solo escribe 777. Mientras que a + rwx agrega lectura / escritura / ejecución dejando el setuid / sticky poco intacto.

Suponga que solo quiere asegurarse de que un archivo es ejecutable, puede usar una + x para poder modificar el privilegio de ejecución sin preocuparse o modificar los otros permisos. Si utilizó la representación octal, necesitaría saber en qué están configurados actualmente los permisos para asegurarse de no modificar los permisos de otra manera además de lo que pretendía.

Josh Famestad
fuente
0

Diría que dar los valores numéricos es mucho más común en las "guías de personas simples", como las producidas para los usuarios de alojamiento web económico. Sin embargo, tenga cuidado de especificarlos como valores octales , no decimales:

$ chmod 0777 some_dir

Tenga 0en cuenta el líder en 0777. Aunque Bash y otros entornos de CLI hacen lo correcto al usar los no acolchados 777, muchos lenguajes de programación como PHP y Perl tienen funciones similares que requieren el liderazgo 0. Así que recomiendo su uso también en Bash, para recordar que se supone que debe estar allí.

Nota para los votantes negativos: como se aclara en los comentarios, el chmodcomando de hecho sabe pasar la directiva como octal incluso si se especifica la notación decimal. Sin embargo, no todos los entornos admiten esto, por lo que es una buena práctica acostumbrarse a especificarlo explícitamente.

dotancohen
fuente
10
chmodnunca trata el número como decimal. chmod 777 filey chmod 0777 fileson completamente equivalentes.
celtschk
3
@ Kevdog777: "octal" solo significa base-8. Pero no necesita preocuparse por ello, en lo que respecta al uso del chmodcomando shell; puedes pensar en los tres dígitos como independientes entre sí, cada uno con un conjunto de permisos.
celtschk
3
Para chmod, el 0 en 0777 en realidad significa "borrar los bits setuid, setgid y sticky". Esto es equivalente a 777, ya que el argumento siempre se rellena con ceros a cuatro dígitos. Por la misma razón, chmod 77es equivalente a chmod 077.
Emil Jeřábek apoya a Monica el
1
El chmodcomando interpreta su argumento de modo en octal. Debe prestar atención si está utilizando la mayoría de los lenguajes de programación (C, Perl, ...), pero en un script de shell es octal chmod.
Gilles 'SO- deja de ser malvado'
1
+1 para su nota, ya que de hecho es bueno anteponer siempre un 0 (incluso si configura los 4 octales: 01777, por ejemplo) ya que no hace ninguna diferencia en el shell, pero asegúrese de que C, perl y otros lo interpreten como octal
Olivier Dulac