Cosa fa chmod -u?


19

Per caso ho corso chmod -u filenamee ho rimosso tutte le autorizzazioni che avevo filename.

La pagina man non fa riferimento a -uun'opzione. Sperimentando sono stato in grado di concludere che rimuove non tutte le autorizzazioni, ma solo l'accesso in lettura ed esecuzione, lasciando intatto l'accesso in scrittura.

Cosa fa esattamente questo?


La mia conclusione sopra è sbagliata, ora penso che ciò che fa è rimuovere le autorizzazioni che il proprietario ha, da tutte le categorie.


Credo che il comportamento è analogo a a=u, solo che è -invece =e apuò essere eliminato così come può con, per esempio, a+x.


6
+1 per porre una domanda di base che non si trova nella pagina man.

1
"Il formato di un modo simbolico [ugoa...][[-+=][perms...]...], dove perms è zero o più lettere dal set rwxXst, o una sola lettera dal setugo " (pagina man chmod GNU); POSIX è abbastanza oscuro, ma definisce una produzione "permcopy" per lo stesso effetto.
Michael Homer il

1
@MichaelHomer Non dice quello che fa.
y_wc

1
@y_wc "Invece di una o più di queste lettere, puoi specificare esattamente una delle lettere ugo : le autorizzazioni concesse all'utente che possiede il file ( u), le autorizzazioni concesse agli altri utenti membri del gruppo del file ( g) e le autorizzazioni concesse agli utenti che non rientrano in nessuna delle due categorie precedenti ( o). "
Michael Homer il

1
Sì, l'ho letto. Non vedo che menziona ciò che fa. Dice che posso specificare una di quelle lettere. Specificando, ad esempio u, specificherò le autorizzazioni concesse all'utente proprietario del file. Ma non dice quello che fa. Cosa significa specificare?
y_wc

Risposte:


19

Questa non è un'opzione, ma un modo standard (ma non comune) di specificare le autorizzazioni. Significa rimuovere ( -) i permessi associati al proprietario del file ( u), per tutti gli utenti (senza precedenti u, go o). Questo è documentato nella pagina man.

La pagina man di GNU chmod lo documenta come:

Il formato di una modalità simbolica è [ugoa...][[-+=][perms...]...], dove permssono zero o più lettere dal set rwxXsto una singola lettera dal set ugo

e più tardi

Invece di una o più di queste lettere, puoi specificare esattamente una delle lettere ugo: le autorizzazioni concesse all'utente che possiede il file ( u), le autorizzazioni concesse agli altri utenti membri del gruppo del file ( g) e il autorizzazioni concesse agli utenti che non rientrano in nessuna delle due categorie precedenti ( o)

Così -umezzi per rimuovere ( -) qualunque autorizzazioni sono attualmente abilitate per il proprietario ( u) per tutti (in modo equivalente a a-u, tranne onorare l'umask corrente). Sebbene ciò non sia spesso molto utile, chmod +ua volte lo sarà l'analogo , per copiare le autorizzazioni dal proprietario ad altri quando si opera in modo ricorsivo, ad esempio.


È anche documentato in POSIX , ma definito in modo più oscuro: la specifica dell'autorizzazione è ampiamente who[+-=]perms(o un numero) e l'effetto di questi è ulteriormente specificato:

I simboli permcopy u, ge orappresentano le rispettive autorizzazioni correnti associate all'utente, gruppo, e altre parti dei bit del modo file, rispettivamente. Per il resto di questa sezione, permfa riferimento ai non terminali perme permcopyalla grammatica.

e poi

-

... Se che non è specificato, i bit del modo file rappresentati da perm per il proprietario, il gruppo, e altre autorizzazioni, ad eccezione di quelli con i corrispondenti bit nella maschera di creazione del file del processo chiamante, deve essere eliminato.


Grazie Michael. La documentazione POSIX è convincente. La GNU comunque ... Vedi questo mio commento. Non vedo come ciò che viene dopo "So" segue da ciò che prima. permspuò essere uquello che ho. Sì, uspecifica le autorizzazioni o il proprietario. Ma come segue che -urimuove le autorizzazioni del proprietario (modulo umask) da tutti gli utenti?
y_wc

Perché è quello che -fa sempre: rimuove le autorizzazioni specificate dalla classe di utenti specificata. -uè esattamente analogo -wo (più vicino) a ugo-u.
Michael Homer,

Stavo per dire che non sono venuto qui per discutere della documentazione e che ero felice di capire cosa stava succedendo, ma i documenti hanno appena fatto clic. Grazie.
y_wc,

Potrei disturbarti con un'altra chmoddomanda di documentazione? Fammi sapere se pensi che questo meriti una domanda separata. "e = fa sì che vengano aggiunti e causa la rimozione di bit non menzionati, tranne per il fatto che i bit di ID utente e gruppo impostati non menzionati di una directory non sono interessati." Questo, secondo me, sta dicendo che, data una directory il cui proprietario ha solo accesso in scrittura, chmod u=rx directorylascerà le autorizzazioni del proprietario come rwx. Ma non è quello che succede, invece diventano l'atteso r-x. Sto interpretando male qualcosa?
y_wc il

Sta dicendo che i sbit setuid / setgid ( ) vengono lasciati soli se non li menzioni e qualsiasi altra cosa non specificata viene rimossa.
Michael Homer,

2

La risposta è un po 'simile a /unix//a/429424/255251 .

chmod -u file_name

non rimuove tutte le autorizzazioni, ma considera il umaskvalore.

umask
0022
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
chmod -u file
chmod: file: new permissions are ----w--w-, not ---------
ls -l file
-----w--w- 1 user user 4 Feb 25 15:17 file

Ora cambia il valore umask

umask 777
chmod 777 file
chmod -u file
chmod: file: new permissions are rwxrwxrwx, not ---------
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file

2
Istruttivo, buono a sapersi e molto utile, ma penso che questo non sia davvero il problema, sebbene sia molto correlato. Grazie.
y_wc
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.