Perché "chmod 1777" e "chmod 3777" impostano entrambi la parte adesiva?


15

Per impostare il bit appiccicoso su una directory, perché i comandi chmod 1777ed chmod 3777entrambi funzionano?


2
Stai proponendo un'operazione potenzialmente rischiosa. La combinazione di permessi bit stick e rwx per tutti è una cattiva pratica. Chiunque può modificare ed eseguire il file e l's-bit consente il passaggio all'utente root senza pasword.
jippie,

1
@jippie setuid e setgid bit scompaiono se il file viene modificato, quindi non è possibile ottenere l'accesso root in quel modo.
Kyle Jones,

@KyleJones, è ancora pericoloso. Se il passwdbinario fosse scrivibile, non sarebbe in grado di ottenere l'accesso root modificandolo, come dici tu, ma si potrebbe sostituirlo con qualche altro binario che tutti avrebbero eseguito da allora in poi, pensando che fosse passwd.
Wildcard il

@Wildcard concordato.
Kyle Jones,

Risposte:


29

Ogni numero (indicato anche come ottale perché è base8) in quel raggruppamento rappresenta 3 bit. Se lo trasformi in binario, lo rende molto più semplice.

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

Quindi, se facessi 1777, 3777, 5777 o 7777, imposteresti il ​​bit appiccicoso perché la terza colonna sarebbe un 1. Tuttavia, con 3777, 5777 e 7777 stai anche impostando altri bit (SUID per la prima colonna e SGID per la seconda colonna).

Al contrario, qualsiasi altro numero in quel punto (fino a un massimo di 7) non imposterà il bit appiccicoso perché l'ultima colonna non sarebbe un 1 o "on".

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


3
+1 per una bella descrizione di come funzionano i numeri ottali e come si applica ai bit di autorizzazione del file.
un CVn

1
Si chiama "maschera di bit" e +1 anche per spiegare / mostrare come può essere impostato e clearil gruppo di proprietari e altre colonne.
Chris K,

16

Le autorizzazioni passate come argomento a chmod sono specificate come valore ottale . Ogni numero nel valore rappresenta tre bit. Se vengono forniti tre numeri, si stanno impostando i bit di lettura, scrittura ed esecuzione per il proprietario del file, il gruppo e altri (tutti gli altri). Se vengono indicati quattro numeri, il numero più a sinistra imposta i bit setuid, setgid e sticky. Il 1 ottobre imposta il bit appiccicoso. Octal 2 imposta il bit setgid. Ottale 2 + ottale 1 è ottale 3 che imposta sia il bit setgid che il bit sticky.


1
Non è ottale 2 | ottale 1 anziché ottale 2 + ottale 1? Le operazioni hanno lo stesso risultato in questo caso, ma in generale è un po 'o importa, non è vero?
Gerrit,

1
@gerrit Sì, in generale dovresti guardare l' binary oroperatore. Tuttavia, come fai notare, in questo caso funziona con lo stesso risultato e molte più persone hanno familiarità con l'aggiunta.
un CVn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.