2011-10-05 9 views
5

Mi stavo chiedendo come fossero riusciti a impostare i permessi usando chmod usando solo i numeri. Per esempio:Recupera più informazioni con un unico numero?

1 is for execute 
2 is for write 
4 is for read 

Qualsiasi somma di quelli che invia un permesso unico:

2+4 = 6 lets you write and read. 
1+4 = 5 lets you execute and read 
1+2+4 = 7 lets you execute, read and write 

Esiste un algoritmo per questo? Per esempio, ho 10 articoli e voglio dare a una persona un numero e solo quel numero la persona può dire quali oggetti ho scelto.

+0

Perché il voto vicino? Mi sembra una domanda perfettamente legittima. –

+0

@AasmundEldhuset: È una domanda perfettamente legittima, ma a me sembra che si adatti meglio ad un altro sito SE. Prenderò Unix, ma non è un'opzione, quindi SU. – derobert

+0

Lol! Questo è solo numeri binari. Benvenuti nel mondo dei computer. – Shahbaz

risposta

4

Binary system. Cioè rappresenti 1, 2, 4, 8, 16 e così via con uno 0 o 1 cifra ciascuno. L'ultima cifra corrisponde a 2^0=1, la penultima cifra corrisponde a 2^1=2, la cifra successiva a 2^2=4, la successiva a 2^3=8 e così via.

Ora associ un'azione (leggi/ex/scrivi) ad ogni cifra.

Un fatto (più o meno) sorprendente è il seguente: Se non hai solo due opzioni (cioè se non hai solo vero o falso), ma se ne hai di più, puoi adattare questo modello a il ternary system. Inoltre, è possibile adattare questo modello per qualsiasi base. Il sistema umano funziona per la base 10.

+0

Ottenete il mio upvote, ma dovreste davvero ampliarlo - per es., Mostrare quali bit sono mappati a quali permessi (per utente, gruppo e altro, e anche per l'id set e i bit appiccicosi). – derobert

+0

@derobert: la domanda non riguardava le autorizzazioni Unix; è stato solo ispirato da questo. La domanda riguarda l'idea generale di rappresentare diversi valori booleani come un intero. –

+0

@AasmundEldhuset: Giusto, l'ho letto come più la domanda Unix. Immagino che alcune modifiche potrebbero essere in ordine. Inoltre, potresti voler dire che questo non è univoco per base-2, puoi ad esempio, codificare 10 elementi come menziona l'OP in base-10 (che in realtà è un buon esempio, perché tutti conoscono la base 10) ... (edit: sembra che l'hai fatto) – derobert