Różnice między wybraną wersją a wersją aktualną.
| Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
|
so:users_chmod [2023/03/20 10:51] jkonczak |
so:users_chmod [2026/03/17 15:04] (aktualna) jkonczak [Zmiana uprawnień, grupy i użytkownika pliku] |
||
|---|---|---|---|
| Linia 54: | Linia 54: | ||
| | | ||
| <html></small></html> | <html></small></html> | ||
| - | | + | |
| + | ++++ Przykłady: | {{section>so:users_chmod:examples#id&inline&noheader}} ++++ | ||
| ===== Użytkownicy w systemie, historia logowania, komunikacja ===== | ===== Użytkownicy w systemie, historia logowania, komunikacja ===== | ||
| Linia 69: | Linia 71: | ||
| <html><small></html> | <html><small></html> | ||
| - | ~~Zadanie.#~~ Sprawdź jacy użytkownicy byli zalogowaniu na polluksie w chwili ''2023-03-03 13:30'' | + | ~~Zadanie.#~~ Sprawdź jacy użytkownicy byli zalogowaniu na polluksie w chwili ''2026-03-16 10:04:10'' |
| <html></small></html> | <html></small></html> | ||
| Linia 88: | Linia 90: | ||
| <html></small></html> | <html></small></html> | ||
| + | |||
| + | ++++ Przykłady: | {{section>so:users_chmod:examples#who&inline&noheader}} ++++ | ||
| ===== Przełączenie się na innego użytkownika ===== | ===== Przełączenie się na innego użytkownika ===== | ||
| Linia 93: | Linia 97: | ||
| Posiadając odpowiednie uprawnienia i/lub znając odpowiednie hasło (w zależności od ustawień systemu) można przełączyć się na innego użytkownika bądź wykonać komendę jako inny użytkownik. | Posiadając odpowiednie uprawnienia i/lub znając odpowiednie hasło (w zależności od ustawień systemu) można przełączyć się na innego użytkownika bądź wykonać komendę jako inny użytkownik. | ||
| - | Komenda ''**su** [-] [//użytkownik//]'' po autoryzacji uruchamia domyślną powłokę dla podanego użytkownika (domyślnie roota). \\ | + | Komenda ''**su** [-] [//użytkownik//]'' po uwierzytelnieniu uruchamia domyślną |
| - | Komenda ''su -c //komenda// [-] [//użytkownik//]'' po autoryzacji uruchamia w domyślnej powłoce dla podanego użytkownika (domyślnie roota) podaną komendę. \\ | + | powłokę dla podanego użytkownika (domyślnie roota). \\ |
| + | Komenda ''su -c //komenda// [-] [//użytkownik//]'' po uwierzytelnieniu uruchamia | ||
| + | w domyślnej powłoce dla podanego użytkownika (domyślnie roota) podaną komendę. \\ | ||
| ''su'' jest dostępna w każdym uniksopodobnym systemie. | ''su'' jest dostępna w każdym uniksopodobnym systemie. | ||
| W domyślnych ustawieniach Linuksa komenda ''su'' wymaga podania hasła użytkownika docelowego (i w niektórych dystrybucjach przynależności do odpowiedniej grupy, zwykle ''wheel''). | W domyślnych ustawieniach Linuksa komenda ''su'' wymaga podania hasła użytkownika docelowego (i w niektórych dystrybucjach przynależności do odpowiedniej grupy, zwykle ''wheel''). | ||
| - | Na wielu dystrybucjach instalowana jest też komenda ''sudo'' która ma na celu zezwolenie wybranym użytkownikom na wykonywanie wybranych komend z uprawnieniami wskazanych użytkowników. Do autoryzacji ''sudo'' wykorzystuje hasło bieżącego bądź docelowego użytkownika. | + | Na wielu dystrybucjach instalowana jest też komenda ''sudo'' która ma na celu |
| + | zezwolenie wybranym użytkownikom na wykonywanie wybranych komend z uprawnieniami | ||
| + | wskazanych użytkowników. Do uwierzytelnienia ''sudo'' wykorzystuje hasło | ||
| + | bieżącego bądź docelowego użytkownika. | ||
| W niektórych dystrybucjach komenda ''sudo'' jest nadużywana do zastąpienia komendy ''su''. | W niektórych dystrybucjach komenda ''sudo'' jest nadużywana do zastąpienia komendy ''su''. | ||
| - | ~~Zadanie.#~~ Zaloguj się na podany przez prowadzącego serwer przez ssh (prawdopodobnie ''ssh user//N//@fe80::1%br0''). Zmień użytkownika na ''root''. Zmień użytkownika na innego ''user//N//''. | + | ~~Zadanie.#~~ Zaloguj się na podany przez prowadzącego serwer przez ssh |
| + | (prawdopodobnie ''ssh user//N//@fe80::1%2'', gdzie N musisz zastąpić numerem | ||
| + | swojego komputera). | ||
| + | Zmień użytkownika na ''root''. | ||
| + | Zmień użytkownika na innego ''user//N//''. | ||
| <html><small></html> | <html><small></html> | ||
| + | |||
| + | Do zmiany (w bieżącej sesji powłoki) grupy podstawowej można użyć komendy ''newgrp'' lub ''sg''. Komenda ''sg'' może też (podobnie jak ''su'') uruchomić wskazane polecenie ze zmienioną grupą podstawową. \\ | ||
| + | Komenda ''newgrp'' jest [[https://pubs.opengroup.org/onlinepubs/9799919799/utilities/newgrp.html|w standardzie POSIX]], ale część systemów uniksopodobnych jej nie dostarcza. ''sg'' jest specyficzne dla Linuksa. \\ | ||
| + | Po wykonaniu komendy ''newgrp'' / ''sg'' lista grup do których użytkownik należy zostaje bez zmian, więc efektywne prawa dostępu do plików są identyczne niezależnie od bieżącej grupy podstawowej. | ||
| + | Zmiana grupy podstawowej ma wpływ m. inn. na to do jakiej grupy należą nowo tworzone pliki i procesy. | ||
| Root może też korzystać z komend ''runuser'' i ''setpriv'' do uruchamiania komend z innym uid/gid/[[https://linux.die.net/man/7/capabilities|uprawnieniami]]. | Root może też korzystać z komend ''runuser'' i ''setpriv'' do uruchamiania komend z innym uid/gid/[[https://linux.die.net/man/7/capabilities|uprawnieniami]]. | ||
| <html></small></html> | <html></small></html> | ||
| + | |||
| + | ++++ Przykłady: | {{section>so:users_chmod:examples#su&inline&noheader}} ++++ | ||
| ===== Uprawnienia dostępu do plików ===== | ===== Uprawnienia dostępu do plików ===== | ||
| Linia 118: | Linia 138: | ||
| \\ | \\ | ||
| Dodatkowo można ustawić trzy uprawnienia specjalne: set-user-id (suid, __**s**__), set-group-id (sgid, __**s**__) i sticky (__**t**__). | Dodatkowo można ustawić trzy uprawnienia specjalne: set-user-id (suid, __**s**__), set-group-id (sgid, __**s**__) i sticky (__**t**__). | ||
| + | |||
| + | Przy dostępie do pliku, jeżeli plik należy do bieżącego użytkownika, brane są pod uwagę tylko uprawnienia użytkownika.\\ | ||
| + | Jeżeli plik nie należy do użytkownika, ale użytkownik należy do grupy pliku, brane są pod uwagę tylko uprawnienia grupy.\\ | ||
| + | Jeżeli plik nie należy do użytkownika i użytkownik nie należy do grupy pliku, brane są pod uwagę tylko uprawnienia pozostałych.\\ | ||
| + | <small>Zauważ że jeśli plik ma ustawione prawo do odczytu dla grupy ale nie ma prawa odczytu dla użytkownika, to właściciel pliku nie może wyświetlić tego pliku nawet jeśli należy do grupy pliku.</small> | ||
| Prawo do wykonania dla pliku oznacza możliwość uruchomienia go (jako skrypt, program etc.), dla katalogu – wejścia do niego. | Prawo do wykonania dla pliku oznacza możliwość uruchomienia go (jako skrypt, program etc.), dla katalogu – wejścia do niego. | ||
| Linia 157: | Linia 182: | ||
| \\ | \\ | ||
| a ''rwx--x--x'' pozwalają właścicielowi na odczyt, zapis i wykonanie pliku, a grupie i pozostałym tylko na wykonanie (''711''). | a ''rwx--x--x'' pozwalają właścicielowi na odczyt, zapis i wykonanie pliku, a grupie i pozostałym tylko na wykonanie (''711''). | ||
| + | |||
| + | ++++ Ilustracja tego na który z trzech zestawów uprawnień patrzyć| | ||
| + | {{page>so:users_chmod:which_perm_group&inline&noheader}}++++ | ||
| Aby zobaczyć szczegółowe informacje o pliku, w tym uprawnienia, można wykonać ''**stat** //plik//''. | Aby zobaczyć szczegółowe informacje o pliku, w tym uprawnienia, można wykonać ''**stat** //plik//''. | ||
| \\ | \\ | ||
| - | Uprawnienia są też wyświetlane w wynikach ''ls -l'' i ''tree -p''. | + | Uprawnienia są też wyświetlane w wynikach ''ls -l'' i ''tree -p'' (<small>lub razem z nazwą użytkownia i grupy ''tree -pug''(</small>). |
| \\ | \\ | ||
| Wszystkie powyższe polecenia dodają na początek uprawnień literę określającą rodzaj pliku. | Wszystkie powyższe polecenia dodają na początek uprawnień literę określającą rodzaj pliku. | ||
| Linia 190: | Linia 218: | ||
| * operacja ''+'', ''-'' lub ''='' (dodaj, usuń lub ustaw te prawa) | * operacja ''+'', ''-'' lub ''='' (dodaj, usuń lub ustaw te prawa) | ||
| * uprawnienia ''r'', ''w'', ''x'', ''s'' lub ''t''. | * uprawnienia ''r'', ''w'', ''x'', ''s'' lub ''t''. | ||
| - | Np. ''chown u+x,o= //plik//'' doda użytkownikowi prawo do zapisu i ustawi brak praw dla innych (a prawa grupy zostaną bez zmian). | + | Np. ''chmod u+x,o= //plik//'' doda użytkownikowi prawo do zapisu i ustawi brak praw dla innych (a prawa grupy zostaną bez zmian). |
| \\ | \\ | ||
| <small>Pominięcie litery ''[ugoa]'' przed operacją ma specjalne znaczenie, szczegóły w podręczniku systemowym.</small> | <small>Pominięcie litery ''[ugoa]'' przed operacją ma specjalne znaczenie, szczegóły w podręczniku systemowym.</small> | ||
| + | |||
| + | Uprawnienia dostępu może zmieniać tylko właściciel pliku (i root). | ||
| Właściciel pliku będący w kliku grupach może użyć komendy ''**chgrp** //grupa// //plik//'' do zmiany grupy do której należy plik. | Właściciel pliku będący w kliku grupach może użyć komendy ''**chgrp** //grupa// //plik//'' do zmiany grupy do której należy plik. | ||
| Linia 200: | Linia 230: | ||
| Zarówno ''chmod'', ''chgrp'' i ''chown'' przyjmują przełączniki ''-R'' (''--recursive'') dla rekursywnej zmiany i ''--reference=//plik//'' dla ustawienia uprawnień/grupy/właściciela identycznego jak we wskazanym pliku. | Zarówno ''chmod'', ''chgrp'' i ''chown'' przyjmują przełączniki ''-R'' (''--recursive'') dla rekursywnej zmiany i ''--reference=//plik//'' dla ustawienia uprawnień/grupy/właściciela identycznego jak we wskazanym pliku. | ||
| - | //Ćwiczenia wykonuj na podanym przez prowadzącego serwerze. \\ Do tworzenia plików możesz wykorzystać np. komendę // ''fortune > //plik//''. | + | //Ćwiczenia wykonuj na podanym przez prowadzącego serwerze (''ssh user//N//@fe80::1%2''). |
| + | \\ Do tworzenia plików możesz wykorzystać np. komendę // ''fortune > //plik//''. | ||
| + | |||
| + | <small> | ||
| + | ++++ Instrukcja jak wykonywać ćwiczenia na własnym urządzeniu z Linuksem | | ||
| + | Żeby robić poniższe ćwiczenia z własnego komputera, możesz albo: | ||
| + | - Dodać do swojego systemu przykładowe grupy i użytkowników komendami:<code bash> | ||
| + | groupadd even | ||
| + | groupadd odd | ||
| + | groupadd low | ||
| + | groupadd high | ||
| + | useradd -g odd -G low -m user1 | ||
| + | useradd -g even -G low -m user2 | ||
| + | useradd -g odd -G high -m user3 | ||
| + | useradd -g even -G high -m user4 | ||
| + | passwd -d user1 | ||
| + | passwd -d user2 | ||
| + | passwd -d user3 | ||
| + | passwd -d user4</code> | ||
| + | - Zbudować i użyć {{so:users_chmod:container-for-file-permission-labs.tar.xz|obrazu dockera}} (o ile znasz dokera), np. komendami:<code bash> | ||
| + | curl -s https://www.cs.put.poznan.pl/jkonczak/_media/so:users_chmod:container-for-file-permission-labs.tar.xz | tar xJ | ||
| + | docker build --tag container-for-file-permission-labs container-for-file-permission-labs | ||
| + | docker run --network=none --rm -ti container-for-file-permission-labs</code> | ||
| + | ++++ | ||
| + | </small> | ||
| ~~Zadanie.#~~ Stwórz plik. Ustaw takie prawa dostępu, żeby tylko właściciel mógł odczytać plik. | ~~Zadanie.#~~ Stwórz plik. Ustaw takie prawa dostępu, żeby tylko właściciel mógł odczytać plik. | ||
| Linia 214: | Linia 268: | ||
| ~~Zadanie.#~~ Stwórz plik. Ustaw takie prawa dostępu, żeby tylko właściciel i pozostali mogli odczytać plik. Sprawdź czy osoba należąca do grupy pliku może go odczytać. | ~~Zadanie.#~~ Stwórz plik. Ustaw takie prawa dostępu, żeby tylko właściciel i pozostali mogli odczytać plik. Sprawdź czy osoba należąca do grupy pliku może go odczytać. | ||
| - | ~~Zadanie.#~~ Stwórz katalog ze zwykłym plikiem w środku. Odbierz prawo do wykonywania katalogu. Spróbuj wylistować katalog, wejść do katalogu i wyświetlić plik bez wchodzenia do katalogu. | + | ~~Zadanie.#~~ Stwórz katalog K ze zwykłym plikiem P i pustym podkatalogiem w środku. |
| + | Odbierz prawo do wykonywania katalogu K. | ||
| + | Spróbuj wylistować ze szczegółami katalog K, wejść do niego, | ||
| + | oraz wyświetlić plik P bez wchodzenia do katalogu K. | ||
| - | ~~Zadanie.#~~ Zmień prawa dostępu katalogu na ''u=rwx,go=rx''. Stwórz w tym katalogu zwykły plik. Wyświetl plik jako inny użytkownik. Wyświetl zawartość katalogu jako inny użytkownik. \\ Następnie zmień prawa do katalogu ''u=rwx,go=x''. Spróbuj ponownie wyświetlić plik i zawartość katalogu jako inny użytkownik. | + | ~~Zadanie.#~~ Zmień prawa dostępu katalogu na ''u=rwx,go=rx''. Stwórz w tym |
| + | katalogu zwykły plik. Wyświetl plik jako inny użytkownik. Wyświetl zawartość | ||
| + | katalogu jako inny użytkownik. | ||
| + | \\ | ||
| + | Następnie zmień prawa do katalogu na ''u=rwx,go=x''. Spróbuj ponownie | ||
| + | wyświetlić plik i zawartość katalogu jako inny użytkownik. | ||
| ~~Zadanie.#~~ Stwórz katalog z prawami dostępu ''777'' i stwórz w nim dwa pliki. Jednemu z nich ustaw prawa ''600''. Z innego użytkownika spróbuj usunąć oba pliki. | ~~Zadanie.#~~ Stwórz katalog z prawami dostępu ''777'' i stwórz w nim dwa pliki. Jednemu z nich ustaw prawa ''600''. Z innego użytkownika spróbuj usunąć oba pliki. | ||
| Linia 222: | Linia 284: | ||
| ~~Zadanie.#~~ W katalogu użytkownika A z prawami dostępu ''777'' stwórz jako użytkownik B dwa katalogi: jeden pusty, jeden z plikiem w środku. Spróbuj usunąć te katalogi jako użytkownik A. | ~~Zadanie.#~~ W katalogu użytkownika A z prawami dostępu ''777'' stwórz jako użytkownik B dwa katalogi: jeden pusty, jeden z plikiem w środku. Spróbuj usunąć te katalogi jako użytkownik A. | ||
| - | ~~Zadanie.#~~ Czy możesz zmienić nazwę katalogu K który nie dał się usunąć w poprzednim zadaniu? Czy możesz przenieść katalog K do innego? Czy możesz przenieść katalog zawierający K do innego? | + | ~~Zadanie.#~~ Czy możesz zmienić nazwę katalogu K który nie dał się usunąć w |
| + | poprzednim zadaniu? Czy możesz przenieść katalog K do innego katalogu? Czy | ||
| + | możesz przenieść katalog zawierający K do innego katalogu? | ||
| ~~Zadanie.#~~ Stwórz plik i katalog z plikiem w środku i odbierz wszystkim trzem wszystkie uprawnienia. Zmień użytkownika na root i spróbuj wyświetlić oba pliki. | ~~Zadanie.#~~ Stwórz plik i katalog z plikiem w środku i odbierz wszystkim trzem wszystkie uprawnienia. Zmień użytkownika na root i spróbuj wyświetlić oba pliki. | ||
| ~~Zadanie.#~~ Z roota zmień właściciela wybranego pliku. Następnie zmień grupę innego pliku na ''www-data''. | ~~Zadanie.#~~ Z roota zmień właściciela wybranego pliku. Następnie zmień grupę innego pliku na ''www-data''. | ||
| + | |||
| + | <html><style>.wrap_nomargin{margin:0} .wrap_nomargin p{margin:0}</style></html> | ||
| + | <WRAP nomargin> | ||
| + | Przykłady: | ||
| + | ++++ umask | {{section>so:users_chmod:examples#umask&inline&noheader}} ++++ | ||
| + | ++++ manipulacja uprawnieniami | {{section>so:users_chmod:examples#chmod&inline&noheader}} ++++ | ||
| + | ++++ user, group czy others | {{section>so:users_chmod:examples#ugo&inline&noheader}} ++++ | ||
| + | ++++ uprawnienia tylko do zapisu, odczytu | {{section>so:users_chmod:examples#write_only&inline&noheader}} ++++ | ||
| + | ++++ tworzenie/usuwanie wpisów w katalogach | {{section>so:users_chmod:examples#dir_create_remove&inline&noheader}} ++++ | ||
| + | </WRAP> | ||
| + | ++++ suid i sgid | {{section>so:users_chmod:examples#suid_sgid&inline&noheader}} ++++ | ||
| ===== Data utworzenia, modyfikacji, dostępu ===== | ===== Data utworzenia, modyfikacji, dostępu ===== | ||
| Linia 253: | Linia 328: | ||
| <html></small></html> | <html></small></html> | ||
| + | ++++ Przykłady: | {{section>so:users_chmod:examples#touch&inline&noheader}} ++++ | ||
| | | ||
| ~~META: | ~~META: | ||
| language = pl | language = pl | ||
| ~~ | ~~ | ||