Qual è la differenza principale tra chmod e chown?


43

In alcuni esempi, ho visto che alcuni hanno usato chowninvece di chmod. Non so dove usare chmode chown. Per favore, spiegami la differenza tra loro, quando e perché dovrei usare entrambi.


18
Nessuno di reso esplicito ancora: uno ch anges il mod e l'altro ch anges il proprio er. Inoltre, leggere l' uomo sessuale.
Smetti di fare del male a Monica

1
E mentre chownpuò anche ch ange la gr ou p , viene chgrpriservato specificamente a questo compito.
Smetti di fare del male a Monica

6
Qual è la differenza principale tra una banana e una sedia? Non sederti sulla banana.
Shadur,

Risposte:


48

Creiamo un file

touch rainbow

Diamo un'occhiata ai metadati del file

$ ls -l rainbow
-rw-rw-r-- 1 zanna zanna 0 May 24 10:09 rainbow

La prima parte delle informazioni è il tipo di file ( -all'inizio significa che è un file normale) e i bit di autorizzazione

Successivamente vediamo il proprietario (zanna) e il gruppo (zanna). Possiamo usare il chowncomando per cambiare quelli:

$ sudo chown pixie rainbow
$ ls -l rainbow
-rw-rw-r-- 1 pixie zanna 0 May 24 10:09 rainbow

E usiamo chmodper cambiare i bit di autorizzazione

$ sudo chmod 333 rainbow
$ ls -l rainbow
--wx-wx-wx 1 pixie zanna 0 May 24 10:09 rainbow

Poiché i bit di autorizzazione sono impostati separatamente per proprietario, gruppo e altri, è possibile controllare le autorizzazioni dei file per diversi utenti combinando chowne chmod. Consulta questa breve guida per un corso intensivo sulle autorizzazioni in Linux.


1
+1 per l'immagine .. Nessuna definizione ottale però? O chmod a+wesempio? Il che richiede tempo, ma ottiene più voti, penso: D
WinEunuuchs2Unix

2
@ WinEunuuchs2Unix haha ​​grazie ... Ho deliberatamente scelto un'impostazione delle autorizzazioni particolarmente inutile. Se comincio davvero a spiegare quando e perché usare ogni possibile permutazione di chmode chown(che è una domanda troppo ampia di gran lunga) la mia risposta andrà avanti per sempre. Cercando di mantenerlo semplice
Zanna,

96

In parole povere chownviene utilizzato per modificare la proprietà di un file mentre chmodper modificare i bit della modalità file.

  • chown definisce chi possiede il file.
  • chmod definisce chi può fare cosa.

Quando si rende qualcuno il proprietario di un file, si può fare quasi ovunque si voglia quel file, ad esempio si può usare chmodper modificare le sue mod (diciamo le autorizzazioni) per definire chi può fare cosa.

$ ls -l file
-rwxrwxr-x  2  ravexina admins   26 May  9 12:49 file

Nella riga sopra possiamo vedere che ravexinaè il proprietario del file ed adminsè il gruppo. Posso usare: sudo chown dave:sudo fileper cambiare il proprietario del file davee il gruppo in sudo; Ora il file appartiene a "dave" e tutti nel gruppo "sudo".

Tuttavia con chmodnoi definiamo chi può fare cosa? chi ha il diritto di leggere un file, scrivere su un file o eseguirlo. per esempio:

chmod 777 file

dà i diritti di lettura, scrittura ed esecuzione a tutti, inclusi proprietario, gruppo e chiunque altro.

Da turnoff.us : inserisci qui la descrizione dell'immagine


1
Il proprietario non può fare ciò che desidera sul file: l'eliminazione o lo spostamento richiede autorizzazioni di scrittura sulla directory contenente.
muru,

2
@muru è vero;) intendevo leggere / scrivere / exec, c'è anche quello chattrche può influenzare il file immagino.
Ravexina,

1
@KamilMaciorowski Lo sai, lo so, Ravexina lo sa, ma la maggior parte delle persone non lo sa.
muru,

2
@KamilMaciorowski Non ti ho chiesto di fingere nulla. Quello che ti manca è che la maggior parte delle persone non pensa di eliminare o rinominare un file come operazioni sulla directory, ma come operazioni sul file. Ecco perché abbiamo domande come queste: superuser.com/q/373115/334516 , unix.stackexchange.com/q/48579/70524 , askubuntu.com/q/240424/158442 Ovviamente sai che si tratta di operazioni sulla directory (congratulazioni !), ma esiste un malinteso comune al riguardo, quindi ho notato che la ridenominazione o l'eliminazione comporta autorizzazioni sulla directory, non sul file. ...
Muru,

1
@KamilMaciorowski ... Questa domanda è di un utente che non conosce la differenza tra chmod e chown, quindi mi sembra ragionevole non sapere che la ridenominazione di un file avrebbe bisogno delle autorizzazioni per la directory.
muru,

19

Quando si considerano le autorizzazioni di un file (o directory o altro), ci sono due fattori:

  • chi possiede il file: l'utente e il gruppo e
  • cosa possono farci - leggere, scrivere, eseguire o una loro combinazione.

chownsi occupa di chi . chmodsi occupa del cosa . Non puoi usare l'uno invece dell'altro.

Le autorizzazioni Unix semplici classificano gli utenti che tentano di accedere a un file in tre tipi:

  1. il proprietario del file
  2. utenti membri del gruppo che possiede il file
  3. tutti gli altri

chownè usato per cambiare i primi due. chmodviene utilizzato per modificare i diritti concessi a questi tipi.


7

Alcuni punti / suggerimenti da aggiungere alle risposte eccellenti precedenti:

  • Devi avere i permessi di esecuzione su una directory (e su tutti quelli sopra di essa) per accedervi
  • Utilizzare l'opzione -R per applicare le modifiche in modo ricorsivo a tutto compreso e al di sotto dell'obiettivo, ad es chown -R www-data files/
  • È possibile modificare utente e gruppo contemporaneamente utilizzando la sintassi chown user:group myfile
  • Spesso è più facile / meglio usare le opzioni '+' e '-' piuttosto che impostare permessi assoluti, specialmente quando si ha a che fare con una combinazione di file e directory. Ad esempio, se si desidera concedere autorizzazioni di scrittura di gruppo a una directory e a tutto ciò che sta sotto, chmod -R 775 files/rendere 'files /' e tutto dentro e sotto di esso eseguibili e leggibili da tutti, il che potrebbe non essere il risultato desiderato per ogni file. L'utilizzo chmod -R g+w files/aggiungerà semplicemente l'autorizzazione alla scrittura del gruppo senza toccare altro.

6

Ottime risposte già, ma vorrei dare un contributo in cui le autorizzazioni sono molto facili da capire

chmod u=r+w,o=r-w,g=-r-w test.php

u = user
o = other
g = group

In questo modo è possibile aggiungere facilmente le autorizzazioni a un file. Nell'esempio sopra

user = read + write
other = read but not write
group = not read not write

E non dimenticare -Rse si desidera modificare le autorizzazioni in modo ricorsivo.


1

chownCambierà chi possiede il file e a quale gruppo appartiene, mentre chmodcambia il modo in cui i proprietari e i gruppi possono accedere al file (o se possono accedervi affatto).

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.