Jak korzystać z polecenia chgrp w systemie Linux

Komenda chgrp w systemie Linux zmienia prawa własności grupy do pliku lub katalogu. Dlaczego warto go używać zamiast chown? Czasami szwajcarski scyzoryk jest świetny, ale kiedy naprawdę potrzebujesz skalpela, wystarczy skalpel.

Kiedy powinieneś używać chgrp

Komenda chgrp służy do zmiany prawa własności do pliku lub katalogu w grupie. Polecenie chown umożliwia zmianę właściciela użytkownika i właściciela grupy pliku lub katalogu. Dlaczego więc potrzebujesz lub używasz chgrp?

Po pierwsze, jest to łatwe. Używanie chown do zmiany tylko ustawień właściciela grupy jest trochę sprzeczne z intuicją. Musisz bardzo uważać na składnię. Zależy to od prawidłowego umieszczenia dwukropka „:”. Zgub to, a nie dokonasz zmiany, o której myślałeś, że jesteś.

Składnia chgrp to całkowicie prostsze. Ma również zgrabną funkcję, która w prosty sposób mówi ci, jakie zmiany właśnie wprowadził.

Jest to specjalnie stworzone i dedykowane narzędzie do wykonywanego zadania. chgrp całkowicie obejmuje uniksową zasadę projektowania polegającą na robieniu jednej rzeczy i robieniu jej dobrze. Zobaczmy, co ma do zaoferowania.

Zmiana prawa własności pliku do grupy

Zmiana prawa własności do pliku w grupie jest bardzo prosta. Musisz używać sudo z chgrp. Grupy nie są własnością użytkowników, więc to, czy plik lub katalog jest przenoszony z jednej grupy do drugiej, nie należy do decyzji przeciętnego użytkownika. To praca dla kogoś z uprawnieniami roota.

Zamierzamy zmienić prawa własności grupy do pliku źródłowego C o nazwie „gc.c.” Zamierzamy to zmienić na grupę „devteam”.

Aktualne wartości własności możemy sprawdzić za pomocą ls z opcją -l (długa lista).

ls -l

To jest polecenie zmiany właściciela grupy. Wpisz sudo, spację, chgrp, spację, nazwę grupy, którą zamierzamy ustawić jako właściciela grupy, spację i nazwę pliku.

sudo chgrp devteam gc.c

Sprawdzimy, czy zmiana została dokonana, ponownie używając ls -l.

ls -l

sudo chgrp devteam gc.c w oknie terminala

Widzimy, że własność grupy została zmieniona z „dave” na „devteam”.

Aby zmienić własność grupy dla zbioru wszystkich plików naraz, możesz użyć symboli wieloznacznych. Zmieńmy własność grupy dla wszystkich plików źródłowych C w bieżącym katalogu. Użyjemy tego polecenia:

sudo chgrp devteam *.c

Możemy sprawdzić, czy zmiana została wprowadzona zgodnie z oczekiwaniami, używając ls -l.

ls -l

sudo chgrp devteam * .c w oknie terminala

Wszystkie pliki źródłowe C w tym katalogu zostały zmienione tak, że ich własność grupowa to „devteam”.

Używając opcji -c (zmiany), chgrp wyświetli listę zmian, które wprowadził w każdym pliku. Załóżmy, że popełniliśmy błąd, chcieliśmy, aby dla plików źródłowych C ustawiono własność grupy na „researchlab”. Poprawmy to teraz. Użyjemy tego polecenia:

sudo chgrp -c researchlab *.c

sudo chgrp -c researchlab * .c w oknie terminala

Zmiany są wprowadzane za nas i każda z nich jest wymieniana na bieżąco, co pozwala nam zweryfikować, czy to, co zmieniliśmy, jest poprawne.

Zmiana prawa własności do katalogu

Zmiana prawa własności do katalogu w grupie jest równie prosta. Możemy użyć tego polecenia, aby zmienić prawo własności do katalogu „kopia zapasowa”.

sudo chgrp -c devteam ./backup

Aby było jasne, to polecenie zmieni prawa własności grupy do samego katalogu, a nie do plików w katalogu. Użyjemy ls -l z opcją -d (katalog), aby sprawdzić, czy tak jest.

ls -l -d

sudo chgrp -c devteam ./backup w oknie terminala

Własność grupowa samego katalogu została zmieniona na „devteam”.

Opcja rekurencyjna

Jeśli chcemy zmienić prawa własności grupowej do plików i katalogów przechowywanych w katalogu, możemy użyć opcji -R (rekurencyjna). Spowoduje to, że chgrp zmieni prawa własności grupowej dla wszystkich plików i podkatalogów poniżej katalogu docelowego.

Spróbujmy tego z katalogiem „backup”. Oto polecenie:

sudo chgrp -R devteam ./backup

Przejrzymy pliki w jednym z zagnieżdżonych podkatalogów za pomocą polecenia ls, a także sprawdzimy ustawienia jednego z zagnieżdżonych podkatalogów za pomocą ls.

ls -l ./backup/images
ls -l -d ./backup/images

sudo chgrp -R devteam ./backup w oknie terminala

Widzimy, że własność grupy została zmieniona zarówno dla plików w zagnieżdżonych podkatalogach, jak i dla zagnieżdżonych podkatalogów.

Korzystanie z pliku odniesienia

Do tej pory wyraźnie podaliśmy chgrp nazwę grupy, której chcemy użyć. Możemy również użyć chgrp w sposób, który mówi „ustaw własność grupy tego pliku na tę samą własność grupy co ten plik”.

Ustawmy własność grupy „gc.h” tak, aby była taka sama jak „gc.c.”

Aktualne ustawienia „gc.c” i „gc.h” możemy sprawdzić za pomocą ls.

ls -l gc.c
ls -l gc.h

Opcją, której potrzebujemy, jest opcja –reference. Własność grupy jest kopiowana z pliku referencyjnego do innego pliku. Uważaj, aby pliki były prawidłowe.

sudo chgrp --reference=gc.c gc.h

Użyjemy ls, aby sprawdzić, czy ustawienia zostały przeniesione do „gc.h”.

ls -l gc.h

sudo chgrp --reference = gc.c gc.h w oknie terminala

Plik „gc.h” ma teraz takie same prawa własności do grupy jak „gc.c.”

Używanie chgrp z dowiązaniami symbolicznymi

Możemy użyć chgrp, aby zmienić grupę własności dowiązań symbolicznych lub pliku wskazywanego przez dowiązanie symboliczne.

W tym przykładzie utworzyliśmy plik dowiązanie symboliczne o nazwie „button_link”. Wskazuje to na plik o nazwie „./backup/images/button_about.png”. Aby zmienić grupę własności pliku, musimy użyć opcji –dereference. Spowoduje to zmianę ustawień pliku i pozostawienie dowiązania symbolicznego bez zmian.

Sprawdźmy ustawienia dowiązania symbolicznego za pomocą ls -l.

ls -l button_link

Polecenie zmiany pliku to:

sudo chgrp --dereference devteam button_link

Sprawdzimy, czy dowiązanie symboliczne jest niezmienione za pomocą ls, a także sprawdzimy ustawienia własności grupy dla pliku.

ls -l button_link
ls -l ./backup/images/button_about.png

sudo chgrp --dereference devteam button_link w oknie terminala

Dowiązanie symboliczne pozostaje niezmienione, a plik „button_about.png” ma zmodyfikowaną własność grupy.

Aby zmienić własność grupy samego dowiązania symbolicznego, musimy użyć opcji –no-dereference.

Polecenie do użycia to:

sudo chgrp --no-dereference devteam button_link

Użyjemy ls -l, aby sprawdzić, czy dla dowiązania symbolicznego ustawiono nową własność grupy.

ls -l button-link

sudo chgrp --no-dereference devteam button_link w oknie terminala

Tym razem elementem, którego dotyczy problem, było samo dowiązanie symboliczne, a nie plik, na który wskazuje.

Ładnie i prosto

Proste jest dobre. Oznacza to, że jest mniej rzeczy do zapamiętania i mniej rzeczy, z którymi można się pomylić. To powinno oznaczać mniej błędów.