Jaka jest główna różnica między chmod a chown?

43

W niektórych przykładach widziałem, że niektóre używane chownzamiast chmod. Nie wiem gdzie używać chmodi chown. Proszę wyjaśnić mi różnicę między nimi, kiedy i dlaczego powinienem użyć jednego z nich.

saravana kumar kandasami
źródło
18
Nikt nie stało się jawne jeszcze: jeden ch anges ten mod e a drugi ch anges na własne er. Należy również zapoznać się z człowieka ual.
Stop Harming Monica
1
I choć chownmoże też ch ange z gr ou p , nie jest chgrpdedykowany specjalnie do tego zadania.
Stop Harming Monica,
6
Jaka jest główna różnica między bananem a krzesłem? Nie siedź na bananie.
Shadur

Odpowiedzi:

48

Stwórzmy plik

touch rainbow

Rzućmy okiem na metadane pliku

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

Pierwszą częścią informacji jest typ pliku ( -na początku oznacza, że ​​jest to zwykły plik) i bity uprawnień

Następnie widzimy właściciela (Zanna) i grupę (Zanna). Możemy użyć chownpolecenia, aby zmienić te:

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

I używamy chmoddo zmiany bitów uprawnień

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

Ponieważ bity uprawnień są ustawiane osobno dla właściciela, grupy i innych, możesz kontrolować uprawnienia do plików dla różnych użytkowników, łącząc chowni chmod. Zobacz ten krótki przewodnik po kursie awaryjnym dotyczącym uprawnień w systemie Linux.

Zanna
źródło
1
+1 dla obrazu .. Nie ma jednak rozdzielczości ósemkowej? Lub chmod a+wprzykład? Myślę, że to jest czasochłonne, ale dostaje więcej głosów: D
WinEunuuchs2Unix
2
@ WinEunuuchs2Unix haha ​​dzięki ... Celowo wybrałem szczególnie bezużyteczne ustawienie uprawnień. Jeśli naprawdę zacznę wyjaśniać, kiedy i dlaczego korzystać z każdej możliwej permutacji chmodi chown(co jest zdecydowanie zbyt szerokim pytaniem), moja odpowiedź będzie trwać wiecznie. Stara się to
uprościć
96

W uproszczeniu używa chownsię go do zmiany własności pliku, a chmoddo zmiany bitów trybu pliku.

  • chown określa, kto jest właścicielem pliku.
  • chmod określa, kto może co robić.

Gdy uczynisz kogoś właścicielem pliku, może on zrobić prawie wszędzie tam, gdzie chce tego pliku, na przykład, może użyć chmoddo zmiany jego modów (powiedzmy uprawnienia), aby określić, kto może co robić.

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

W powyższym wierszu widzimy, że ravexinajest właścicielem pliku i adminsgrupą. Mogę użyć: sudo chown dave:sudo filedo zmiany właściciela pliku na davei grupy na sudo; Teraz plik należy do „dave” i wszystkich w grupie „sudo”.

Jednak chmoddefiniujemy, kto może co robić? kto ma prawo do odczytu pliku, zapisu do pliku lub wykonania go. na przykład:

chmod 777 file

daje prawo do odczytu, zapisu i wykonywania wszystkim, w tym właścicielowi, grupie i wszystkim innym.

Od Turnoff.us : wprowadź opis zdjęcia tutaj

Ravexina
źródło
1
Właściciel nie może zrobić z plikiem, co chce - usunięcie lub przeniesienie wymaga uprawnień do zapisu w katalogu zawierającym.
muru
2
@muru to prawda;) Miałem na myśli odczyt / zapis / wykonanie, ale jest też coś, chattrco może wpłynąć na plik.
Ravexina
1
@KamilMaciorowski Wiesz to, wiem to, Ravexina wie o tym, ale większość ludzi tego nie wie.
muru
2
@KamilMaciorowski Nie prosiłem cię o nic. To, czego brakuje, to to, że większość ludzi nie myśli o usunięciu lub zmianie nazwy pliku jako operacji w katalogu, ale jako operacji na pliku. Właśnie dlatego mamy takie pytania: superuser.com/q/373115/334516 , unix.stackexchange.com/q/48579/70524 , askubuntu.com/q/240424/158442 Oczywiście wiesz, że są to operacje na katalogu (gratulacje !), ale istnieje powszechne nieporozumienie, więc zauważyłem, że zmiana nazwy lub usuwanie wymaga uprawnień do katalogu, a nie pliku. ...
muru
1
@KamilMaciorowski ... To pytanie zadaje użytkownik, który nie zna różnicy między chmod a chown, więc wydaje mi się rozsądne, że nie wiedziałby, że zmiana nazwy pliku wymaga uprawnień do katalogu.
muru
19

Rozważając uprawnienia do pliku (lub katalogu, czy cokolwiek innego), istnieją dwa czynniki:

  • kto jest właścicielem pliku - użytkownik i grupa, oraz
  • co mogą z tym zrobić - czytać, pisać, wykonywać lub ich kombinację.

chownzajmuje się kim . chmodzajmuje się tym, co . Nie możesz użyć jednego zamiast drugiego.

Proste uprawnienia uniksowe klasyfikują użytkowników próbujących uzyskać dostęp do pliku na trzy typy:

  1. właściciel pliku
  2. użytkownicy będący członkami grupy będącej właścicielem pliku
  3. wszyscy inni

chownsłuży do zmiany pierwszych dwóch. chmodsłuży do zmiany praw przyznanych tym typom.

muru
źródło
7

Kilka punktów / wskazówek, które należy dodać do poprzednich doskonałych odpowiedzi:

  • Aby uzyskać dostęp do katalogu, musisz mieć uprawnienia do wykonywania katalogu (i wszystkich powyżej)
  • Użyj opcji -R, aby zastosować zmiany rekurencyjnie do wszystkiego, w tym i poniżej celu, np chown -R www-data files/
  • Możesz zmienić użytkownika i grupę w tym samym czasie, używając składni chown user:group myfile
  • Często łatwiej / lepiej jest używać opcji „+” i „-” niż ustawiać bezwzględne uprawnienia, szczególnie w przypadku kombinacji plików i katalogów. Na przykład, jeśli chcesz przyznać grupowe uprawnienia do zapisu do katalogu i wszystkiego pod nim, chmod -R 775 files/sprawi, że „pliki /” i wszystko w nim i poniżej będzie wykonywalne i czytelne dla wszystkich, co może nie być pożądanym rezultatem dla każdego pliku. Użycie chmod -R g+w files/spowoduje tylko dodanie uprawnienia zapisu grupowego bez dotykania czegokolwiek innego.
James-Geldart
źródło
6

Bardzo dobre odpowiedzi już, ale chciałbym wnieść wkład, gdy uprawnienia są bardzo łatwe do zrozumienia

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

u = user
o = other
g = group

W ten sposób możesz łatwo dołączyć uprawnienia do pliku. W powyższym przykładzie

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

I nie zapomnij, -Rjeśli chcesz rekurencyjnie zmieniać uprawnienia.

Adam
źródło
1

chownZmieni, kto jest właścicielem pliku i do jakiej grupy należy, a jednocześnie chmodzmieni sposób, w jaki właściciele i grupy mogą uzyskać dostęp do pliku (lub jeśli w ogóle mogą go uzyskać).

Bruno Finger
źródło