'\" t .\" Title: setpriv .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-09-02 .\" Manual: Polecenia użytkownika .\" Source: util-linux 2.42.3 .\" Language: English .\" .TH "SETPRIV" "1" "2026-09-02" "util\-linux 2.42.3" "Polecenia użytkownika" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "NAZWA" setpriv \- uruchamia program z innymi ustawieniami przywilejów linuksowych .SH "SKŁADNIA" .sp \fBsetpriv\fP [opcje] \fIprogram\fP [\fIargumenty\fP] .SH "OPIS" .sp Ustawia lub odpytuje różne ustawienia przywilejów linuksowych, dziedziczonych poprzez \fBexecve\fP(2). .sp W porównaniu do \fBsu\fP(1) i \fBrunuser\fP(1), \fBsetpriv\fP nie używa PAM, ani nie pyta o hasło. Jest to proste opakowanie wokół \fBexecve\fP(2), niekorzystające z set\-user\-ID, którym można obniżyć uprawnienia w ten sam sposób jak za pomocą \fBsetuidgid\fP(8) z \fBdaemontools\fP, \fBchpst\fP(8) z \fBrunit\fP i podobnymi narzędziami dostarczanymi przez inne menedżery usług. .SH "OPCJE" .sp \fB\-\-clear\-groups\fP .RS 4 Usuwa (czyści) grupy dodatkowe. .RE .sp \fB\-d\fP, \fB\-\-dump\fP .RS 4 Zrzuca aktualny stan przywilejów. Opcję można podać więcej niż raz aby pokazać dodatkowe, w większości bezużyteczne, informacje. Niekompatybilna ze wszystkimi innymi opcjami. .RE .sp \fB\-\-groups\fP \fIgrupa\fP.\|.\|. .RS 4 Ustawia grupy dodatkowe. Argument jest listą identyfikatorów lub nazw grup, rozdzielonych przecinkami. .RE .sp \fB\-\-inh\-caps\fP (\fB+\fP|\fB\-\fP)\fIprzywilej\fP.\|.\|., \fB\-\-ambient\-caps\fP (\fB+\fP|\fB\-\fP)\fIprzywilej\fP.\|.\|., \fB\-\-bounding\-set\fP (\fB+\fP|\fB\-\fP)\fIprzywilej\fP.\|.\|. .RS 4 Ustawia zbiory przywilejów dziedzicznych, tła lub ograniczających. Zob. \fBcapabilities\fP(7). Argument jest listą, rozdzielonych przecinkiem, wpisów \fB+\fP\fIprzywilej\fP i \fB\-\fP\fIprzywilej\fP, odpowiednio, dodających lub usuwających wpis. \fIPrzywilej\fP może być czytelną dla człowieka nazwą widoczną w podręczniku systemowym \fBcapabilities\fP(7), bez przedrostka \fIcap_\fP albo w postaci \fBcap_N\fP, gdzie \fIN\fP jest wewnętrznym indeksem przywileju używanym przez Linuksa. Aby dodać lub usunąć wszystkie przywileje, można zastosować \fB+all\fP lub \fB\-all\fP. .sp Zbiór przywilejów zaczyna się jako bieżący zbiór dziedziczny w przypadku \fB\-\-inh\-caps\fP, bieżący zbiór tła w przypadku \fB\-\-ambient\-caps\fP oraz bieżący zbiór ograniczający w przypadku \fB\-\-bounding\-set\fP. .sp Proszę zauważyć, że występują następujące ograniczenia (opisane szczegółowo w \fBcapabilities\fP(7)) odnoszące się do modyfikacji tych zbiorów przywilejów: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} Można dodać przywilej do zbioru dziedzicznego tylko wtedy, gdy jest obecny w zbiorze ograniczającym. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} Można dodać przywilej do zbioru tła tylko wtedy, gdy jest obecny w zbiorze dozwolonym i dziedzicznym. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} Pomimo oferowania odpowiedniej składni przez \fBsetpriv\fP, jądro nie pozwala na dodawanie przywilejów do zbioru ograniczającego. .RE .sp Usunięcie przywileju ze zbioru ograniczającego, bez usuwania go ze zbioru dziedzicznego, może wprowadzić w konfuzję. Nie należy tego robić. .RE .sp \fB\-\-keep\-groups\fP .RS 4 Zachowuje grupy dodatkowe. Przydatne tylko w połączeniu z \fB\-\-rgid\fP, \fB\-\-egid\fP lub \fB\-\-regid\fP. .RE .sp \fB\-\-init\-groups\fP .RS 4 Inicjuje grupy dodatkowe za pomocą initgroups3. Przydatne tylko w połączeniu z \fB\-\-ruid\fP lub \fB\-\-reuid\fP. .RE .sp \fB\-\-list\-caps\fP .RS 4 Wypisuje wszystkie znane przywileje. Opcję można podać tylko samodzielnie. .RE .sp \fB\-\-nnp\fP, \fB\-\-no\-new\-privs\fP .RS 4 Ustawia bit \fIno_new_privs\fP. Z tym bitem \fBexecve\fP(2) nie będzie nadawało nowych przywilejów. Na przykład bity set\-user\-ID i set\-group\-ID oraz przywileje plikowe będą wyłączone (uruchomienie plików wykonywalnych z taki ustawionymi bitami wciąż będzie działało, jednak nie pozyskają one przywilejów. Niektóre linuksowe moduły bezpieczeństwa (LSM), szczególnie AppArmor, mogą spowodować niemożność uruchomienia pewnych programów). Bit jest dziedziczony przez procesy potomne i nie można go usunąć. Więcej informacji w \fBprctl\fP(2) oraz pliku \fIDocumentation/prctl/no_new_privs.txt\fP w źródłach jądra Linux. .sp Bit \fIno_new_privs\fP jest obsługiwany od Linuksa 3.5. .RE .sp \fB\-\-rgid\fP \fIgid\fP, \fB\-\-egid\fP \fIgid\fP, \fB\-\-regid\fP \fIgid\fP .RS 4 Ustawia rzeczywisty, efektywny lub oba identyfikatory grup. Argument \fIgid\fP można podać jako tekstową nazwę grupy. .sp Ze względów bezpieczeństwa, konieczne jest podanie jednej z opcji \fB\-\-clear\-groups\fP, \fB\-\-groups\fP, \fB\-\-keep\-groups\fP lub \fB\-\-init\-groups\fP, jeśli ustawia się podstawowy \fIgid\fP. .RE .sp \fB\-\-ruid\fP \fIuid\fP, \fB\-\-euid\fP \fIuid\fP, \fB\-\-reuid\fP \fIuid\fP .RS 4 Ustawia rzeczywisty, efektywny lub oba identyfikatory użytkownika. Argument \fIuid\fP można podać jako tekstową nazwę loginu. .sp Ustawienie \fIuid\fP lub \fIgid\fP nie zmienia przywilejów, choć końcowe wywołanie exec może je zmienić. Oznacza to, że będąc rootem prawdopodobnie zechce się wykonać coś takiego jak: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-inh\-caps=\-all\fP .RE .sp \fB\-\-securebits\fP (\fB+\fP|\fB\-\fP)\fIsecurebit\fP.\|.\|. .RS 4 Ustawia lub czyści securebity. Argument jest listą używającą przecinka jako separatora. Prawidłowe securebity to: \fInoroot\fP, \fInoroot_locked\fP, \fIno_setuid_fixup\fP, \fIno_setuid_fixup_locked\fP i \fIkeep_caps_locked\fP. \fIkeep_caps\fP jest czyszczony przez \fBexecve\fP(2), dlatego nie jest tu dozwolony. .RE .sp \fB\-\-pdeathsig keep\fP|\fBclear\fP|\fB\fP .RS 4 Utrzymuje, czyści lub ustawia sygnał śmierci rodzica. Niektóre linuksowe moduły bezpieczeństwa (LSM), w szczególności SELinux i AppArmor, czyszczą sygnał, gdy poświadczenia procesu ulegną zmianie. Zastosowanie \fB\-\-pdeathsig keep\fP przywróci sygnał śmierci rodzica po zmianie poświadczeń, aby pomóc w takiej sytuacji. .RE .sp \fB\-\-ptracer\fP \fIpid\fP|\fBany\fP|\fBnone\fP .RS 4 Gdy działa ograniczony tryb ptrace Yama (tj. gdy \fI/proc/sys/kernel/yama/ptrace_scope\fP jest ustawiony na 1), pozwala na śledzenie za pomocą \fBptrace\fP(2) przez: proces o podanym PID, dowolny proces lub żaden proces. Zob. \fBPR_SET_PTRACER\fP(2const) (proszę zauważyć, że nie jest to dziedziczone przez procesy potomne, choć jest zachowywane poprzez \fBexecve\fP(2)). Opcja nie odnosi skutku, gdy Yama nie jest włączone albo jest w innym trybie niż ograniczone ptrace. .RE .sp \fB\-\-selinux\-label\fP \fIetykieta\fP .RS 4 Żąda określonego przejścia SELinux (korzystając z przejścia przy wykonaniu, nie za pomocą dynamicznego dyntrans). Zawiedzie i przerwie działanie \fBsetpriv\fP, jeśli SELinux nie jest używany; ponadto przejście może być zignorowane lub spowodować niepowodzenie \fBexecve\fP(2) w zależności od kaprysu SELinux (w szczególności prawdopodobnie nie zadziała w połączeniu z \fIno_new_privs\fP). Podobne do \fBruncon\fP(1). .RE .sp \fB\-\-apparmor\-profile\fP \fIprofil\fP .RS 4 Żąda określonego profilu AppArmor (korzystając z przejścia przy wykonaniu). Zawiedzie i przerwie działanie \fBsetpriv\fP, jeśli AppArmor nie jest używany; ponadto przejście może być zignorowane lub spowodować niepowodzenie \fBexecve\fP(2) w zależności od kaprysu AppArmor. .RE .sp \fB\-\-landlock\-access\fP \fIdostęp\fP .RS 4 Włącza ograniczenia typu landlock do określonego typu dostępu systemowego. Aby pozwolić na określoną podgrupę dostępu, można użyć \fB\-\-landlock\-rule\fP. .sp Blokowanie wszelkiego dostępu do systemu plików: .sp \fBsetpriv \-\-landlock\-access fs\fP .sp Blokowanie usuwania wszystkich plików i tworzenia katalogów: .sp \fBsetpriv \-\-landlock\-access fs:remove\-file,make\-dir\fP .sp Pełen zbiór obsługiwanych kategorii dostępu pokaże opcja \fBsetpriv \-\-help\fP. .sp Ogólny symbol zastępczy "fs" może się zmienić i ulec rozszerzeniu w kolejnych wersjach, aby obsłużyć nowe typy dostępu. .RE .sp \fB\-\-landlock\-rule\fP \fIreguła\fP .RS 4 Dozwala na jeden dostęp z kategorii blokowanych przez \fB\-\-landlock\-access\fP. .sp Składnia jest następująca: .sp \fB\-\-landlock\-rule $typ\-reguły:$dostęp:$argument\-reguły\fP .sp Na przykład, aby nadać dostęp do odczytu wszystkiego pod katalogiem \fB/boot\fP: .sp \fB\-\-landlock\-rule path\-beneath:read\-file:/boot\fP .RE .sp \fB\-\-seccomp\-filter\fP \fIplik\fP .RS 4 Ładuje surowy kod filtra seccomp BPF z pliku. .sp Filtry można tworzyć na przykład za pomocą \fBenosys\fP. .RE .sp \fB\-\-reset\-env\fP .RS 4 .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} czyści wszystkie zmienne środowiskowe z wyjątkiem zmiennej środowiskowej \fBTERM\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} inicjuje zmienne środowiskowe \fBHOME\fP, \fBSHELL\fP, \fBUSER\fP, \fBLOGNAME\fP zgodnie z wpisem passwd użytkownika .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} zmienna środowiskowa \fBSHELL\fP domyślnie przyjmuje wartość \fB/bin/sh\fP, jeśli żadnej nie podano we wpisie passwd użytkownika. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} resetuje zmienną środowiskową \fBPATH\fP zgodnie z ustawieniami w pliku \fI/etc/login.defs\fP (zmienne \fBENV_PATH\fP, \fBENV_SUPATH\fP lub \fBENV_ROOTPATH\fP) albo przyjmuje wartość domyślną \fI/usr/local/bin:/bin:/usr/bin\fP w przypadku zwykłego użytkownika oraz \fI/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\fP dla roota. .sp Zmienna środowiskowa \fBPATH\fP może być odmienna w systemach, w których \fI/bin\fP i \fI/sbin\fP połączono z \fI/usr\fP. .RE .RE .sp \fB\-h\fP, \fB\-\-help\fP .RS 4 Wyświetla ten tekst i wychodzi. .RE .sp \fB\-V\fP, \fB\-\-version\fP .RS 4 Wyświetla wersję i wychodzi. .RE .SH "UWAGI" .sp Jeśli zastosowanie którejś z podanej opcji nie powiedzie się, \fIprogram\fP nie zostanie uruchomiony, a \fBsetpriv\fP powróci ze statusem zakończenia 127. .sp Należy być ostrożnym przy używaniu niniejszego narzędzia \(em może spowodować nieprzewidziane konsekwencje związane z bezpieczeństwem. Na przykład ustawienie \fIno_new_privs\fP, a następnie wykonanie programu objętego ograniczeniami SELinux (jak zrobiłoby to narzędzie) może uniemożliwić zastosowanie restrykcji SELinux. .SH "PRZYKŁADY" .sp Note that \fBsetpriv\fP is not a 1:1 replacement for \fBsu\fP(1), \fBrunuser\fP(1), or \fBsudo\fP(8). Unlike those tools, \fBsetpriv\fP 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. .sp If you want to switch UIDs/GIDs similarly to \fBrunuser\fP(1) (without \fB\-\-login\fP), try: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-inh\-caps=\-all \-\-init\-groups\fP .sp To also reset the environment (as \fBsudo\fP(8) does by default), add \fB\-\-reset\-env\fP: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-inh\-caps=\-all \-\-init\-groups \-\-reset\-env\fP .sp For a more restrictive setup that also limits the bounding set and prevents gaining new privileges (more restrictive than \fBrunuser\fP or \fBsudo\fP): .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-init\-groups \-\-inh\-caps=\-all \-\-bounding\-set=\-all \-\-no\-new\-privs \-\-reset\-env\fP .sp Następujące polecenie odtworzy zachowanie \fBsetuid\fP(8) z daemontools: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-clear\-groups\fP .SH "AUTORZY" .sp .MTO "luto\(atamacapital.net" "Andy Lutomirski" "" .SH "ZOBACZ TAKŻE" .sp \fBrunuser\fP(1), \fBsu\fP(1), \fBprctl\fP(2), \fBcapabilities\fP(7), \fBlandlock\fP(7) .SH "ZGŁASZANIE BŁĘDÓW" .sp Problemy należy zgłaszać w \c .URL "https://github.com/util\-linux/util\-linux/issues" "systemie śledzenia błędów" "." .SH "DOSTĘPNOŚĆ" .sp Polecenie \fBsetpriv\fP jest częścią pakietu util\-linux, który można pobrać ze strony \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "Archiwum jądra Linux" "."