Wyzwanie
Biorąc pod uwagę ciąg znaków wskazujący symboliczną notację uprawnień UNIX do pliku i jego własności (identyfikator użytkownika i identyfikator grupy), zdecyduj, czy dany użytkownik Ama uprawnienia do odczytu / zapisu / wykonania.
Związane .
Uprawnienia w systemie UNIX
W systemie UNIX każdy plik ma trzy klasy uprawnień ( użytkownik , grupa i inne ) oraz własność, w tym do którego użytkownika i do której grupy należy.
Zapis symboliczny składa się z dziesięciu znaków. Pierwsza postać nie jest ważna w tym wyzwaniu. Pozostałe dziewięć znaków składa się z trzech zestawów trzech znaków, reprezentujących uprawnienia klasy użytkownika, grupy i innych. Znaki w każdym zestawie wskazują, czy odczyt / zapis / wykonywanie jest dozwolone. Jeśli jest to dozwolone, to będzie r, walbo x. W przeciwnym razie będzie -.
Zauważ, że setuid , setgid i lepki bit może zmienić trzecią charakter każdego zestawu do s, S, tlub T. Oto prosta zasada: jeśli znak jest małymi literami, to uprawnienie jest ustawione; w przeciwnym razie tak nie jest.
(Szczegółowe informacje na temat symbolicznego zapisu uprawnień znajdują się tutaj .)
Każdy użytkownik ma swój identyfikator użytkownika, a każda grupa ma swój identyfikator grupy. Wszystkie identyfikatory będą liczbami całkowitymi nieujemnymi. Użytkownik będzie należeć do co najmniej jednej grupy. Jeśli użytkownik Achce uzyskać dostęp do pliku, system sprawdzi swoje uprawnienia w następujący sposób:
Jeśli plik należy do użytkownika
A, sprawdź uprawnienia klasy użytkownika .Jeśli plik nie należy
A, aleAnależy do grupy, do której należy plik, sprawdź uprawnienia klasy grupy .W przeciwnym razie sprawdź uprawnienia innych klas.
Jest jednak jeden wyjątek: jeśli ID użytkownika to 0 (superużytkownik), mają uprawnienia do robienia czegokolwiek !
Dane techniczne
- Twój program / funkcja powinna przyjąć je jako dane wejściowe w dowolnym rozsądnym formacie:
- Uprawnienia w notacji symbolicznej .
- Identyfikator użytkownika i identyfikator grupy, do której należy plik.
- Identyfikator użytkownika
Aoraz lista identyfikatorów grup, do którychAnależy. - Rodzaj dostępu Możesz użyć dowolnych trzech różnych jednocyfrowych lub jednoznakowych wartości do odczytu, zapisu i wykonania.
- Zwraca / wyświetla prawdziwą wartość, jeśli
Ama uprawnienia dostępu do pliku, lub wartość fałszowania, jeśli nie. - Możesz założyć, że pierwszym znakiem notacji będzie zawsze
-(zwykły plik). - To jest golf golfowy , więc wygrywa najkrótsza bajt!
Przypadki testowe
Format jest tutaj [permissions, user ID of file, group ID of file, user ID of A, group IDs of A, type(r/w/x)].
[-rwx------, 13, 15, 13, [15, 24], r]: True # user
[-rwxr-xr-x, 13, 24, 24, [15, 24], w]: False # group
[-rwxr-Sr-T, 13, 15, 24, [15, 35], x]: False # group
[-rwsr-xr-t, 13, 15, 24, [24, 35], x]: True # others
[----------, 13, 15, 0, [0, 1, 2], r]: True # superuser
[----------, 13, 15, 1, [0, 1, 2], r]: False # others
[----rwxrwx, 13, 15, 13, [15, 24], r]: False # user