¿Por qué "chmod 1777" y "chmod 3777" establecen el bit fijo?

15

Para establecer el bit fijo en un directorio, ¿por qué funcionan los comandos chmod 1777y chmod 3777ambos?

Liao Zhuodi
fuente
2
Está proponiendo una operación potencialmente riesgosa. La combinación de permisos de bit stick y rwx para todos es una mala práctica. Cualquiera puede cambiar y ejecutar el archivo y el s-bit permite cambiar al usuario root sin contraseña.
jippie
1
@jippie setuid y setgid bits desaparecen si se modifica el archivo, por lo que no puede obtener acceso a la raíz de esa manera.
Kyle Jones
@KyleJones, sigue siendo peligroso. Si el passwdbinario fuera de escritura mundial, no podría obtener acceso a la raíz modificándolo, como usted dice, pero podría reemplazarlo con otro binario que todos ejecutarían a partir de entonces, pensando que lo era passwd.
Comodín el
@Wildcard De acuerdo.
Kyle Jones el

Respuestas:

29

Cada número (también denominado octal porque es base8) en esa agrupación representa 3 bits. Si lo convierte en binario, lo hace mucho más fácil.

1 = 0 0 1
3 = 0 1 1
5 = 1 0 1
7 = 1 1 1

Entonces, si hizo 1777, 3777, 5777 o 7777, establecería el bit fijo porque la tercera columna sería un 1. Sin embargo, con 3777, 5777 y 7777, también está configurando otros bits (SUID para la primera columna, y SGID para la segunda columna).

Por el contrario, cualquier otro número en ese punto (hasta el máximo de 7) no establecería el bit fijo porque la última columna no sería un 1 o "on".

2 = 0 1 0
4 = 1 0 0
6 = 1 1 0

JZeolla
fuente
3
+1 para una buena descripción de cómo funcionan los números octales y cómo se aplica a los bits de permiso de archivo.
un CVn
1
Se llama "máscara de bits" y +1 también para explicar / mostrar cómo se puede configurar y clearlas columnas Grupo de propietarios y otras.
Chris K
16

Los permisos pasados ​​como argumento a chmod se especifican como un valor octal . Cada número en el valor representa tres bits. Si se dan tres números, está configurando los bits de lectura, escritura y ejecución para el propietario del archivo, el grupo y otros (todos los demás). Si se dan cuatro números, el número más a la izquierda establece los bits setuid, setgid y sticky. Octal 1 establece el bit pegajoso. Octal 2 establece el bit setgid. Octal 2 + octal 1 es octal 3, que establece tanto el bit setgid como el bit adhesivo.

Kyle Jones
fuente
1
¿No es octal 2 | octal 1 en lugar de octal 2 + octal 1? Las operaciones tienen el mismo resultado en este caso, pero en general es un poco o eso importa, ¿no?
gerrit
1
@gerrit Sí, en el caso general debería mirar al binary oroperador. Sin embargo, como usted señala, en este caso se obtiene el mismo resultado, y muchas más personas están familiarizadas con la adición.
un CVn