Perché chmod + non dà il permesso di scrittura ad altri (o)


18

Quando eseguo chmod +w filenamenon dà il permesso di scrittura a other, dà solo il permesso di scrittura a usere group.

Dopo aver eseguito questo comando

chmod +w testfile.txt

ls -l testfile.txtstampe in esecuzione

-rw-rw-r-- 1 ravi ravi 20 Mar 10 18:09 testfile.txt

ma in caso di +re +xfunziona correttamente.

Non voglio usare chmod ugo+w filename.



1
Se non si desidera utilizzare ugo, utilizzare a.
muru,

si, ma voglio solo sapere perché +wnon funziona.
Ravi Sevta,

Ecco perché ho lasciato due commenti.
muru,

@muru. Afferma nella tua askubunturisposta che fai riferimento in precedenza che "Questo comportamento è obbligatorio per POSIX e quindi non un bug". Si noti che il testo di utilizzo dell'applicazione POSIX non è normativo e pertanto non è obbligatorio per POSIX.
fpmurphy

Risposte:


26

La tua situazione specifica

Nella tua situazione specifica, possiamo indovinare che la tua corrente umaskè 002(questo è un valore predefinito comune) e questo spiega la tua sorpresa.

In quella situazione specifica in cui il umaskvalore è 002 (tutti i numeri ottali).

  • +rsignifica ugo+rperché 002 & 444è 000, che consente di impostare tutti i bit
  • +xsignifica ugo+xperché 002 & 111è 000, che consente di impostare tutti i bit
  • ma +wsignifica ug+wperché 002 & 222è 002, il che impedisce l'impostazione del bit "o".

Altri esempi

  • Con umask 022 +wsignificherebbe u+w.
  • Con umask 007 +rwxsignificherebbe ug+rwx.
  • Con umask 077 +rwxsignificherebbe u+rwx.

Cosa avrebbe soddisfatto le tue aspettative

Quando si umaskpassa a 000, eseguendo

umask 000

nel tuo terminale, quindi

chmod +w file

imposterà le autorizzazioni su ugo + w.

Nota a margine

Come suggerito da ilkkachu, nota che umask 000ciò non significa che tutti possano leggere e scrivere tutti i tuoi file.

Ma umask 000significa che chiunque abbia un qualche tipo di accesso a qualsiasi account utente sul tuo computer (che può includere programmi che eseguono servizi server ofc) può leggere e scrivere tutti i file che crei con quella maschera attiva e non cambiare (se la catena contenente di le directory fino alla radice li permettono anche).


4
umask 000 significa che chiunque abbia un qualche tipo di accesso a un account utente sul tuo computer (che può includere programmi che eseguono servizi server ofc) può leggere e scrivere tutti i file che crei con quella maschera attiva e non cambiare, per essere chiari
StarWeaver

4
"+ r significa ugo = r" - no, non lo fa, significa impostare il rbit per quelle parti in cui l'umask lo consente. Questo è chiaramente indicato nei manuali di GNU chmod e FreeBSD chmod, così come nello standard. Lo stesso per +x. Perché +whai ragione, nel caso di quella particolare umask.
ilkkachu,

4
Inoltre, l'impostazione di umask su 0 non significa che tutti possano leggere e scrivere tutti i tuoi file, dal momento che molte applicazioni creano file particolarmente privati ​​con la modalità 0600, il che significa che il gruppo e altri non ottengono alcun accesso, indipendentemente da umask.
ilkkachu,

@ilkkachu + r significa ugo = r, questo era legato alla situazione descritta nella domanda. Questo non era generale.
Prvt_Yadav

2
@Debian_yadav, questo è esattamente il punto: umaskè una parte importante di come +rsi comporta, non un sidenote. Inoltre, anche assumendo umask 002, chmod +rnon significa chmod ugo=r, significachmod ugo+r
ilkkachu

24

Con:

chmod +<perms>

i permessi vengono aggiunti all'utente , al gruppo e ad altri ma con l'umask ancora in fase di applicazione. Assicura che al file non venga concessa più autorizzazione di quella di un file appena creato.

Se si desidera aggiungere i permessi all'utente , ai gruppi e ad altri indipendentemente dall'umask, utilizzare

chmod a+<perms>

che è l'abbreviazione di

chmod ugo+<perms>

Significa che + x e a + x non sono uguali.
Prvt_Yadav

1
Mi piace avere i collegamenti: man7.org/linux/man-pages/man1/chmod.1.html „Se nessuno di questi è dato, l'effetto è come se fosse dato (a), ma i bit che sono impostati nell'ombra non sono interessati. “
tehnicaorg

0

È necessario specificare a chi si stanno dando le autorizzazioni, ad esempio other, utilizzandochmod o+w testfile.txt


1
sì, ma penso che +wdia il permesso a tutti (utente, gruppo e altro).
Ravi Sevta,

Per concedere le autorizzazioni a tutti gli utenti, utilizzare chmod a+w testfile.txt. Utilizzare uper utente, gper gruppo, oper altro e aper tutti.
Jaken551,

se chmod a+w filename, chmod +w filenamee chmod ugo+w filenamesono alternativi tra di loro, allora perché non utilizzare+w
Ravi Sevta
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.