[c2] Korekta uprawnień do plików
Data zakończenia: 2024-04-19 12:01
Języki:
c
Limit czasu: 1.0 s
Limit pamięci: 5 MB
Cel
Zadanie na użycie operatorów bitowych i systemu ósemkowego oraz na przypomnienie wiadomości dotyczących uprawnień do plików.
Problem
Administratorowi polecono sprawdzić, czy w katalogu użytkownika nie znajdują się pliki które posiadają uprawnienia do zapisu oraz odczytu przez pozostałych (jednocześnie). W przypadku znalezienia takich plików należy usunąć (oba) wspomniane uprawnienia (zostawiając wszystkie pozostałe uprawnienia bez zmian) oraz zgłosić fakt wykrycia niewłaściwych uprawnień.
Zadanie
Napisz program który wczyta najpierw liczbę n będącą liczbą plików do sprawdzenia, a następnie wczyta n par składających się z
O ile wśród wczytanych uprawnień p nie będzie wartości z ustawionymi uprawnieniami jak w opisie, to program ma wypisać pojedynczą linię zawierającą tekst "
Przykład
Wejście
Uwaga (interpretacja uprawnień do plików)
Zadanie na użycie operatorów bitowych i systemu ósemkowego oraz na przypomnienie wiadomości dotyczących uprawnień do plików.
Problem
Administratorowi polecono sprawdzić, czy w katalogu użytkownika nie znajdują się pliki które posiadają uprawnienia do zapisu oraz odczytu przez pozostałych (jednocześnie). W przypadku znalezienia takich plików należy usunąć (oba) wspomniane uprawnienia (zostawiając wszystkie pozostałe uprawnienia bez zmian) oraz zgłosić fakt wykrycia niewłaściwych uprawnień.
Zadanie
Napisz program który wczyta najpierw liczbę n będącą liczbą plików do sprawdzenia, a następnie wczyta n par składających się z
- liczby całkowitej p zapisanej w systemie ósemkowym reprezentującej uprawnienia do pliku zgodnie z ogólnie przyjętą konwencją (patrz uwaga poniżej),
- łańcucha znaków s reprezentującego nazwę pliku (można założyć, że każda nazwa będzie miała nie więcej niż 100 znaków).
O ile wśród wczytanych uprawnień p nie będzie wartości z ustawionymi uprawnieniami jak w opisie, to program ma wypisać pojedynczą linię zawierającą tekst "
Uprawnienia poprawne
"
W przeciwnym wypadku ma najpierw wypisać pojedynczą linię zawierającą tekst "Skorygowano uprawnienia
" a następnie dla każdej znalezionej pary (p,s) w osobnej linii ma wypisać skorygowaną wartość uprawnień p' oraz nazwę pliku s.
Przykład
Wejście
6 00755 katalog1 00666 plik1 00755 skrypt.sh 00777 katalog2 02751 program 00751 katalog3Wyjście
Skorygowano uprawnienia 00660 plik1 00771 katalog2
Uwaga (interpretacja uprawnień do plików)
The following symbolic constants are provided for mode:
S_IRWXU 00700 user (file owner) has read, write, and execute permission
S_IRUSR 00400 user has read permission
S_IWUSR 00200 user has write permission
S_IXUSR 00100 user has execute permission
S_IRWXG 00070 group has read, write, and execute permission
S_IRGRP 00040 group has read permission
S_IWGRP 00020 group has write permission
S_IXGRP 00010 group has execute permission
S_IRWXO 00007 others have read, write, and execute permission
S_IROTH 00004 others have read permission
S_IWOTH 00002 others have write permission
S_IXOTH 00001 others have execute permission
According to POSIX, the effect when other bits are set in mode is unspecified. On Linux, the following bits are also honored in mode:
S_ISUID 0004000 set-user-ID bit
S_ISGID 0002000 set-group-ID bit (see inode(7)).
S_ISVTX 0001000 sticky bit (see inode(7)).