Jak korzystać z polecenia chown w systemie Linux

Pliki i katalogi w systemach Linux należą do kogoś. Możesz zmienić ich własność za pomocą polecenia chown. Pokażemy Ci, jak to zrobić.

Każdy plik należy do użytkownika i grupy

Linux to system dla wielu użytkowników. System operacyjny umożliwia zdefiniowanie wielu kont użytkowników i zalogowanie się do komputera dla każdego ważnego użytkownika. Co więcej, wielu użytkowników może korzystać z jednego komputera w tym samym czasie.

Aby zachować rejestr, które pliki należą do którego użytkownika i wymusić pewne zabezpieczenia, Linux używa koncepcji własności. Każdy plik należy do właściciela – użytkownika – i do grupy.

Po utworzeniu pliku jego właścicielem jest użytkownik, który go utworzył. Grupa, do której należy plik – grupa „będąca właścicielem” – to bieżąca grupa użytkownika. Użytkownicy i grupy mają nazwy, a także mają tożsamości numeryczne, zwane identyfikatorem użytkownika (lub unikalnym) (UID) i identyfikatorem grupy (GID).

Kiedy tworzysz plik, jest on Twoją własnością i należy do Twojej bieżącej grupy. Zwykle jest to grupa, do której się zalogowałeś. Domyślnie jest to grupa, która ma taką samą nazwę jak Twoja nazwa użytkownika i została utworzona, gdy zostałeś utworzony jako użytkownik w systemie.

Możesz użyć polecenia chown, aby zmienić wartości własności na coś innego. Możesz ustawić nowego właściciela, nową grupę lub nowego właściciela i nową grupę w tym samym czasie. Właściciel pliku może zmienić własność grupy, ale tylko root może zmienić własność użytkownika, ponieważ dotyczy to innego użytkownika. Bez uprawnień roota nie możesz zmusić innego użytkownika systemu do nieświadomej „adopcji” pliku.

Dlaczego chciałbyś zmienić prawo własności?

Oto kilka przykładów sytuacji, w których możesz chcieć to zrobić:

Jeśli przenosisz pliki między różnymi systemami operacyjnymi Linux lub Unix, będziesz musiał zmienić właścicieli użytkowników i grup na nowego użytkownika i właścicieli grupy konta, na którym chcesz używać plików na nowym komputerze z systemem Linux.
Użytkownik może opuścić Twoją organizację, a za wszystkie jego pliki będzie odpowiadał inny pracownik. Będziesz musiał zmienić właściciela i właściciela grupy na pracownika, który jest teraz odpowiedzialny za te pliki.
Możesz napisać skrypt, który będzie używany przez określonego użytkownika.
Możesz utworzyć plik lub katalog zalogowany jako root, ale chcesz, aby był dostępny dla określonego użytkownika.

Przeglądanie Twoich grup, UID i GID

Do wymień grupy jesteś w środku, możesz użyć polecenia grup.

groups

grupy w oknie terminala

Aby uzyskać listę grup, ich numeryczne identyfikatory, oraz twój UID i GIDużyj polecenia id:

id

id w oknie terminala

Możesz użyć niektórych opcji z identyfikatorem, aby zawęzić wynik.

-u: Podaj swój UID.
-g: Podaj swój efektywny (bieżący) GID.
-nu: Podaj swoją nazwę użytkownika.
-ng: Wyświetla aktualną nazwę grupy.

id -u
id -g
id -nu
id -ng

id wyjście polecenia w oknie terminala

Przeglądanie praw własności do pliku przez użytkowników i grupy

Aby zobaczyć właścicieli pliku lub katalogu, użyj opcji -l (long listing) z ls.

ls -l
ls -l w oknie terminala

Widzimy, że imię dave pojawia się dwukrotnie na liście. Wygląd po lewej stronie mówi nam, że właścicielem pliku jest użytkownik o imieniu dave. Dave znajdujący się najbardziej po prawej stronie informuje nas, że plik należy do grupy nazywanej również dave.

Domyślnie, kiedy tworzony jest użytkownik Linuksa, jest on dodawany do prywatnej grupy o nazwie odpowiadającej jego nazwie użytkownika. Są jedynymi członkami tej grupy.

Właścicielem tego pliku wykonywalnego jest użytkownik mary, a grupa, do której należy plik, jest prywatną grupą mary.

ls -l

ls -l w oknie terminala

Ten plik jest własnością użytkownika oscar, ale grupa, do której należy plik, nazywa się researchlab. Oznacza to, że inni członkowie grupy badawczej mogą uzyskać dostęp do tego pliku, zgodnie z uprawnieniami do pliku, które zostały ustawione dla członków tej grupy.

ls -l w oknie terminala

Zmiana prawa własności użytkownika

Przeanalizujmy kilka przykładów. Ta komenda zmieni prawa własności użytkownika do pliku while.c na użytkownika mary.

sudo chown mary while.c

sudo chown mary while.c w oknie terminala

Możemy użyć ls, aby zobaczyć zmiany we właściwościach pliku.

ls -l while.c

ls -l while.c w oknie terminala

Możesz użyć chown, aby zmienić własność kilku plików jednocześnie.

sudo chown mary getval.c global.c goto.c

sudo chown mary getval.c global.c goto.c w oknie terminala

Spowoduje to zmianę prawa własności użytkownika do wszystkich trzech plików.

ls -l getval.c global.c goto.c

ls -l getval.c global.c goto.c w oknie terminala

Możesz użyć symboli wieloznacznych, aby wybrać grupy plików. To polecenie zmieni prawa własności użytkownika do wszystkich plików zaczynających się na literę „c”.

sudo chown mary c*.*

sudo chown mary c *. * w oknie terminala

Mary będzie teraz właścicielem wszystkich plików. Zwróć uwagę, że żaden z właścicieli grup nie został zmieniony.

ls -l mary c*.*

ls -l mary c *. * w oknie terminala

Zmieńmy własność katalogu. Po prostu przekazujemy nazwę katalogu do chown zamiast nazwy pliku.

sudo chown mary ./archive/

sudo chown mary ./archive/ w oknie terminala

Aby sprawdzić właściwości katalogu, używamy ls, ale używamy również opcji -d (katalog). Zawiera listę właściwości katalogu, a nie plików w nim zawartych.

ls -l -d ./archive/

ls -l -d ./archive/ w oknie terminala

Aby zmienić prawa własności do wszystkich plików w katalogu, możesz użyć opcji -R (rekurencyjna). Ta opcja zmieni prawa własności użytkownika do wszystkich plików w folderze archiwum.

sudo chown -R mary ./archive/

sudo chown -R mary ./archive/ w oknie terminala

Teraz spójrzmy na pliki w katalogu archiwum.

ls -l ./archive/

ls -l ./archive/ w oknie terminala

Jak można się spodziewać, wszystkie pliki należą teraz do Mary.

Zmiana prawa własności do grupy

Istnieją różne sposoby zmiany własności grupy.

Aby zmienić prawo własności do grupy w tym samym czasie, gdy zmieniasz prawa własności użytkownika, przekaż nazwę nowego właściciela i nową nazwę grupy, oddzielając je dwukropkiem „:”. Grupa musi już istnieć.

sudo chown mary:researchlab charm.c

sudo chown mary: researchlab charm.c w oknie terminala

Właściciel użytkownika i grupa, do której należy plik, zostały zmienione.

ls -l charm.c

ls -l charm.c w oknie terminala

Skrócony sposób zmiany własności grupy na bieżącą grupę nowego właściciela, wystarczy podać dwukropek i pominąć nazwę grupy.

sudo chown mary: caps.c

sudo chown mary: caps.c w oknie terminala

ls -l caps.c

ls -l caps.c w oknie terminala

Zarówno własność użytkownika, jak i własność grupy zostały zmienione na mary.

Aby zmienić tylko własność grupy, poprzedź ją dwukropkiem i pomiń nazwę użytkownika. Właściciel użytkownika nie zostanie zmieniony.

sudo chown :researchlab at.c

sudo chown: researchlab at.c w oknie terminala

ls -l at.c

ls -l at.c w oknie terminala

Własność grupy została zmieniona, ale własność użytkownika pozostaje taka sama.

Używanie Chown z wartościami UID i GID

Możesz użyć numerycznych wartości UID i GID z poleceniem chown. To polecenie ustawi użytkownika i prawa własności do grupy na mary.

sudo chown 1001:1001 at.c

sudo chown 1001: 1001 at.c w oknie terminala

ls -l at.c

ls -l at.c w oknie terminala

Posiadanie to dziewięć dziesiątych prawa

A przynajmniej tak mówią. Ale w Linuksie własność jest ogromną częścią bezpieczeństwa plików, a uprawnienia do plików zapewniają pozostałą część. Użyj poleceń chown i chmod, aby zabezpieczyć dostęp do plików w systemie.