Bach stwierdza, co następuje:
mkdir to typowy
setuid
program. Tylko proces z efektywnym identyfikatorem UID może utworzyć folder. (Sekcja 7.6, strona 229)
Sprawdziłem uprawnienia na nim w Ubuntu 12.04, bit setuid nie jest ustawiony.
-rwxr-xr-x 1 root root 42624 Oct 2 08:55 mkdir
^??
Potem sprawdziłem inne programy, które powinny mieć ten zestaw, jak ping
i su
i mają to ustawione.
-rwsr-xr-x 1 root root 34740 Nov 8 2011 ping
^---there it is
Jak więc mkdir
działa? Czy coś się zmieniło, odkąd Bach to napisał?
unix
system-calls
Anirudh Ramanathan
źródło
źródło
Odpowiedzi:
Wywołanie mkdir () istnieje od wersji BSD 4.2. Później został dodany do SYSV 3.0. Zobacz: http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html
BSD 4.2 pojawiło się w 1984 r .: http://www.unix.org/what_is_unix/history_timeline.html
Jeśli dostęp do punktu wejścia trybu jądra w systemie UNIX za pośrednictwem syscall jest dozwolony z trybu użytkownika bez ograniczeń, co wskazuje duskwuff, to setuid nie jest wymagany.
źródło
setuid()
systemu. Czy to zdecydowanie ta właściwa?mkdir()
.Nie trzeba już mieć uprawnień roota, aby utworzyć folder. Zamiast tego istnieje teraz
mkdir()
wywołanie systemowe, którego dowolny proces może użyć do utworzenia katalogu.źródło
Dokładnie. Zezwolenie na utworzenie katalogu jest obecnie oparte na uprawnieniu do zapisu do katalogu nadrzędnego lub
t
bitu (dla katalogów podobnych do / tmp, w których każdy może utworzyć katalog, ale można usuwać tylko pliki należące do ciebie).źródło