SETPRIV(1) Polecenia uzytkownika SETPRIV(1) NAZWA setpriv - uruchamia program z innymi ustawieniami przywilejow linuksowych SKLADNIA setpriv [opcje] program [argumenty] OPIS Ustawia lub odpytuje rozne ustawienia przywilejow linuksowych, dziedziczonych poprzez execve(2). W porownaniu do su(1) i runuser(1), setpriv nie uzywa PAM, ani nie pyta o haslo. Jest to proste opakowanie wokol execve(2), niekorzystajace z set-user-ID, ktorym mozna obnizyc uprawnienia w ten sam sposob jak za pomoca setuidgid(8) z daemontools, chpst(8) z runit i podobnymi narzedziami dostarczanymi przez inne menedzery uslug. OPCJE --clear-groups Usuwa (czysci) grupy dodatkowe. -d, --dump Zrzuca aktualny stan przywilejow. Opcje mozna podac wiecej niz raz aby pokazac dodatkowe, w wiekszosci bezuzyteczne, informacje. Niekompatybilna ze wszystkimi innymi opcjami. --groups grupa... Ustawia grupy dodatkowe. Argument jest lista identyfikatorow lub nazw grup, rozdzielonych przecinkami. --inh-caps (+|-)przywilej..., --ambient-caps (+|-)przywilej..., --bounding-set (+|-)przywilej... Ustawia zbiory przywilejow dziedzicznych, tla lub ograniczajacych. Zob. capabilities(7). Argument jest lista, rozdzielonych przecinkiem, wpisow +przywilej i -przywilej, odpowiednio, dodajacych lub usuwajacych wpis. Przywilej moze byc czytelna dla czlowieka nazwa widoczna w podreczniku systemowym capabilities(7), bez przedrostka cap_ albo w postaci cap_N, gdzie N jest wewnetrznym indeksem przywileju uzywanym przez Linuksa. Aby dodac lub usunac wszystkie przywileje, mozna zastosowac +all lub -all. Zbior przywilejow zaczyna sie jako biezacy zbior dziedziczny w przypadku --inh-caps, biezacy zbior tla w przypadku --ambient-caps oraz biezacy zbior ograniczajacy w przypadku --bounding-set. Prosze zauwazyc, ze wystepuja nastepujace ograniczenia (opisane szczegolowo w capabilities(7)) odnoszace sie do modyfikacji tych zbiorow przywilejow: o Mozna dodac przywilej do zbioru dziedzicznego tylko wtedy, gdy jest obecny w zbiorze ograniczajacym. o Mozna dodac przywilej do zbioru tla tylko wtedy, gdy jest obecny w zbiorze dozwolonym i dziedzicznym. o Pomimo oferowania odpowiedniej skladni przez setpriv, jadro nie pozwala na dodawanie przywilejow do zbioru ograniczajacego. Usuniecie przywileju ze zbioru ograniczajacego, bez usuwania go ze zbioru dziedzicznego, moze wprowadzic w konfuzje. Nie nalezy tego robic. --keep-groups Zachowuje grupy dodatkowe. Przydatne tylko w polaczeniu z --rgid, --egid lub --regid. --init-groups Inicjuje grupy dodatkowe za pomoca initgroups3. Przydatne tylko w polaczeniu z --ruid lub --reuid. --list-caps Wypisuje wszystkie znane przywileje. Opcje mozna podac tylko samodzielnie. --nnp, --no-new-privs Ustawia bit no_new_privs. Z tym bitem execve(2) nie bedzie nadawalo nowych przywilejow. Na przyklad bity set-user-ID i set-group-ID oraz przywileje plikowe beda wylaczone (uruchomienie plikow wykonywalnych z taki ustawionymi bitami wciaz bedzie dzialalo, jednak nie pozyskaja one przywilejow. Niektore linuksowe moduly bezpieczenstwa (LSM), szczegolnie AppArmor, moga spowodowac niemoznosc uruchomienia pewnych programow). Bit jest dziedziczony przez procesy potomne i nie mozna go usunac. Wiecej informacji w prctl(2) oraz pliku Documentation/prctl/no_new_privs.txt w zrodlach jadra Linux. Bit no_new_privs jest obslugiwany od Linuksa 3.5. --rgid gid, --egid gid, --regid gid Ustawia rzeczywisty, efektywny lub oba identyfikatory grup. Argument gid mozna podac jako tekstowa nazwe grupy. Ze wzgledow bezpieczenstwa, konieczne jest podanie jednej z opcji --clear-groups, --groups, --keep-groups lub --init-groups, jesli ustawia sie podstawowy gid. --ruid uid, --euid uid, --reuid uid Ustawia rzeczywisty, efektywny lub oba identyfikatory uzytkownika. Argument uid mozna podac jako tekstowa nazwe loginu. Ustawienie uid lub gid nie zmienia przywilejow, choc koncowe wywolanie exec moze je zmienic. Oznacza to, ze bedac rootem prawdopodobnie zechce sie wykonac cos takiego jak: setpriv --reuid=1000 --regid=1000 --inh-caps=-all --securebits (+|-)securebit... Ustawia lub czysci securebity. Argument jest lista uzywajaca przecinka jako separatora. Prawidlowe securebity to: noroot, noroot_locked, no_setuid_fixup, no_setuid_fixup_locked i keep_caps_locked. keep_caps jest czyszczony przez execve(2), dlatego nie jest tu dozwolony. --pdeathsig keep|clear| Utrzymuje, czysci lub ustawia sygnal smierci rodzica. Niektore linuksowe moduly bezpieczenstwa (LSM), w szczegolnosci SELinux i AppArmor, czyszcza sygnal, gdy poswiadczenia procesu ulegna zmianie. Zastosowanie --pdeathsig keep przywroci sygnal smierci rodzica po zmianie poswiadczen, aby pomoc w takiej sytuacji. --ptracer pid|any|none Gdy dziala ograniczony tryb ptrace Yama (tj. gdy /proc/sys/kernel/yama/ptrace_scope jest ustawiony na 1), pozwala na sledzenie za pomoca ptrace(2) przez: proces o podanym PID, dowolny proces lub zaden proces. Zob. PR_SET_PTRACER(2const) (prosze zauwazyc, ze nie jest to dziedziczone przez procesy potomne, choc jest zachowywane poprzez execve(2)). Opcja nie odnosi skutku, gdy Yama nie jest wlaczone albo jest w innym trybie niz ograniczone ptrace. --selinux-label etykieta Zada okreslonego przejscia SELinux (korzystajac z przejscia przy wykonaniu, nie za pomoca dynamicznego dyntrans). Zawiedzie i przerwie dzialanie setpriv, jesli SELinux nie jest uzywany; ponadto przejscie moze byc zignorowane lub spowodowac niepowodzenie execve(2) w zaleznosci od kaprysu SELinux (w szczegolnosci prawdopodobnie nie zadziala w polaczeniu z no_new_privs). Podobne do runcon(1). --apparmor-profile profil Zada okreslonego profilu AppArmor (korzystajac z przejscia przy wykonaniu). Zawiedzie i przerwie dzialanie setpriv, jesli AppArmor nie jest uzywany; ponadto przejscie moze byc zignorowane lub spowodowac niepowodzenie execve(2) w zaleznosci od kaprysu AppArmor. --landlock-access dostep Wlacza ograniczenia typu landlock do okreslonego typu dostepu systemowego. Aby pozwolic na okreslona podgrupe dostepu, mozna uzyc --landlock-rule. Blokowanie wszelkiego dostepu do systemu plikow: setpriv --landlock-access fs Blokowanie usuwania wszystkich plikow i tworzenia katalogow: setpriv --landlock-access fs:remove-file,make-dir Pelen zbior obslugiwanych kategorii dostepu pokaze opcja setpriv --help. Ogolny symbol zastepczy "fs" moze sie zmienic i ulec rozszerzeniu w kolejnych wersjach, aby obsluzyc nowe typy dostepu. --landlock-rule regula Dozwala na jeden dostep z kategorii blokowanych przez --landlock-access. Skladnia jest nastepujaca: --landlock-rule $typ-reguly:$dostep:$argument-reguly Na przyklad, aby nadac dostep do odczytu wszystkiego pod katalogiem /boot: --landlock-rule path-beneath:read-file:/boot --seccomp-filter plik Laduje surowy kod filtra seccomp BPF z pliku. Filtry mozna tworzyc na przyklad za pomoca enosys. --reset-env o czysci wszystkie zmienne srodowiskowe z wyjatkiem zmiennej srodowiskowej TERM o inicjuje zmienne srodowiskowe HOME, SHELL, USER, LOGNAME zgodnie z wpisem passwd uzytkownika o zmienna srodowiskowa SHELL domyslnie przyjmuje wartosc /bin/sh, jesli zadnej nie podano we wpisie passwd uzytkownika. o resetuje zmienna srodowiskowa PATH zgodnie z ustawieniami w pliku /etc/login.defs (zmienne ENV_PATH, ENV_SUPATH lub ENV_ROOTPATH) albo przyjmuje wartosc domyslna /usr/local/bin:/bin:/usr/bin w przypadku zwyklego uzytkownika oraz /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin dla roota. Zmienna srodowiskowa PATH moze byc odmienna w systemach, w ktorych /bin i /sbin polaczono z /usr. -h, --help Wyswietla ten tekst i wychodzi. -V, --version Wyswietla wersje i wychodzi. UWAGI Jesli zastosowanie ktorejs z podanej opcji nie powiedzie sie, program nie zostanie uruchomiony, a setpriv powroci ze statusem zakonczenia 127. Nalezy byc ostroznym przy uzywaniu niniejszego narzedzia -- moze spowodowac nieprzewidziane konsekwencje zwiazane z bezpieczenstwem. Na przyklad ustawienie no_new_privs, a nastepnie wykonanie programu objetego ograniczeniami SELinux (jak zrobiloby to narzedzie) moze uniemozliwic zastosowanie restrykcji SELinux. PRZYKLADY Note that setpriv is not a 1:1 replacement for su(1), runuser(1), or sudo(8). Unlike those tools, setpriv does not use PAM, does not prompt for a password, and does not perform session or accounting setup. The examples below provide a starting point for common privilege-dropping scenarios. If you want to switch UIDs/GIDs similarly to runuser(1) (without --login), try: setpriv --reuid=1000 --regid=1000 --inh-caps=-all --init-groups To also reset the environment (as sudo(8) does by default), add --reset-env: setpriv --reuid=1000 --regid=1000 --inh-caps=-all --init-groups --reset-env For a more restrictive setup that also limits the bounding set and prevents gaining new privileges (more restrictive than runuser or sudo): setpriv --reuid=1000 --regid=1000 --init-groups --inh-caps=-all --bounding-set=-all --no-new-privs --reset-env Nastepujace polecenie odtworzy zachowanie setuid(8) z daemontools: setpriv --reuid=1000 --regid=1000 --clear-groups AUTORZY Andy Lutomirski ZOBACZ TAKZE runuser(1), su(1), prctl(2), capabilities(7), landlock(7) ZGLASZANIE BLEDOW Problemy nalezy zglaszac w systemie sledzenia bledow . DOSTEPNOSC Polecenie setpriv jest czescia pakietu util-linux, ktory mozna pobrac ze strony Archiwum jadra Linux . util-linux 2.42.3 2026-09-02 SETPRIV(1)