Jednym z wielu wywołań systemowych w języku C jest „Umask”, Który jest specjalnie zbudowany do konfiguracji maski tworzenia dokumentów. Definiuje uprawnienia lub prawa przypisane do określonego pliku lub katalogu w momencie tworzenia. Kontrola bezpieczeństwa według języka C w celu ograniczenia innych procesów systemowych w celu przypisywania dodatkowych praw do nowych kreacji plików.
Wezwanie systemowe „Umask”Działa na wzorze cyfrowym w skorupce Linux. Rzućmy okiem na proste przykłady, aby zademonstrować „Umask„Wezwanie systemowe. Zacznij od zalogowania się z Ubuntu 20.04 System. Otwórz terminal powłoki i ustaw wymaganą wartość maski do tworzenia plików i folderów, powiedz „0002”. Wskazuje to, że użytkownicy i grupy mogą odczytać, pisać i wykonywać plik utworzony od teraz. Chociaż inni nie mogą pisać jako „2" jest dla "pisać".
Przykład:
Utwórzmy nowy plik języka C, aby zbadać połączenie systemu UMASK. Plik został utworzony z „dotykać”Zapytanie w skorupce. Następnie edytor GNU Nano został użyty do otwarcia i edytowania nowo utworzonego pliku „zdemaskować.C" z "Nano”Instrukcja.
Plik "Umask.C”Został otwarty w edytorze do użytku. Dodaliśmy do niego pokazany kod C. Ten kod zawiera bibliotekę POSIX w sekcji pliku nagłówka. Uwzględniono różne nagłówki strumieniowe i nagłówki typu plików, aby kod działał poprawnie. Następnie zainicjowano główną metodę. Zgodnie z główną metodą zdefiniowaliśmy deskryptor pliku „FD”Typu liczb całkowitych. Ten kod zostanie użyty do sprawdzenia starej lub najnowszej maski używanej lub przypisanej do pliku i folderów. Użyliśmy więc zmiennej typu „tryb_t”, aby pobrać bieżącą wartość maski. Ta stara wartość maski zostanie wydrukowana w skorupce za pomocą „printf" oświadczenie. „„S_IRWXG„Funkcja argumentu została przekazana do metody”Umask„Aby uzyskać bieżącą wartość i zapisano ją w zmiennej„ stare ”dla wyświetlania.
„„Jeśli„Oświadczenie zostało użyte do sprawdzenia, czy deskryptor pliku„FD”Został użyty do utworzenia nowego pliku„nowy.tekst”Z wartością maski mniejszą niż 0 lub nie. Jeśli warunek spełni, przejdzie to wyjątek, że funkcja tworzenia otrzymała problem. System wydrukuje wartość maski obecnie przypisaną do nowego pliku „nowy.tekst”W instancji else przy użyciu„ls -l" Komenda. Deskryptor pliku został zablokowany, a plik został wtedy niezłączony od systemu. Plik został zapisany za pomocą „Ctrl+s”I opuszcza„ za pomocą ”Ctrl+x".
Najpierw skompilujmy kod C. Do kompilacji musisz mieć zainstalowany obsługiwany kompilator w systemie Linux. Zainstalowaliśmy kompilator GCC. Użyj więc polecenia GCC i nazwy pliku C, e.G., "zdemaskować.C".
Teraz plik powinien zostać wykonany po kompilacji, aby zobaczyć wyniki. „„A.na zewnątrz„Polecenie zostało wykonane w terminalu w tym celu. Wyjście wyświetla starą maskę utworzoną dla plików i folderu jako „2". Pokazuje również uprawnienia przypisane do pliku „NOWOŚĆ.txt ”za pomocą tej maski zgodnie z wyjściem.
Zmieńmy wartość maski na „777”Wskazując„ brak praw ”do pliku i folderów do utworzenia.
Otwórz ten sam plik i edytuj nazwę pliku jako „nowy.plik„Aby utworzyć nowy plik. Pozostały kod pozostaje niezmieniony.
Po ponownej kompilacji tego samego pliku mamy błąd. Dzieje się tak, ponieważ nasza obecna wartość maski to „777”, Który wskazuje na żadne prawa do odczytu, zapisu i wykonania dla każdego użytkownika, grupy lub innych.
Zmieńmy wartość maski dla tworzenia plików i katalogów 0777.
Po skonfigurowaniu wartości maski utwórzmy katalog o nazwie „dwa". Po sprawdzeniu przywilejów do katalogu „dwa”, Widzimy, że nie zawiera żadnych praw.
Wniosek:
Ten artykuł zawiera działanie „Umas ()„Wywołanie systemowe za pomocą języka C. Koncepcja systemu UMASK () została szczegółowo wyjaśniona. Wykazaliśmy jego pracę, używając prostego przykładu kodu do utworzenia pliku i kompilacji w Ubuntu 20.04 System Linux. To samo można zastosować również do katalogu.