GNU/Linux >> Znalost Linux >  >> Linux

Jak zrušit kořenová oprávnění ve skriptech Shell?

Možnost „–nahoru“ v OpenVPN se normálně používá pro směrování atd. A tak je zpracována předtím, než OpenVPN zruší práva roota, aby běželo jako nikdo. Vyvolávám však skripty shellu, které je třeba spouštět jako neprivilegovaný uživatel.

Jak to udělám? Studoval jsem práva Drop Process Privileges, zejména polynomiální a tylerlovy odpovědi, ale nerozumím tomu, jak je implementovat. Pracuji v Centos 6.5 a suid je blokován, jak jako „chmod u+s“, tak jako „setuid()“.

Existuje plugin OpenVPN („openvpn-down-root.so“), který umožňuje, aby skripty vyvolané volbou „–down“ běžely jako root. Mohl by existovat ekvivalent, například „openvpn-up-user.so“, ale nenašel jsem ho.

Upravit0

Podle odpovědi Nikoly Kotura jsem nainstaloval runit-rpm Iana Meyera. Přestože příkaz chpst funguje v terminálu, ve skriptu up selže s „příkaz nenalezen“. Funguje to „sudo chpst“ plus nastavení správného zobrazení a jazyka. Viz Proč můj terminál nevydává znaky Unicode správně? Vzhledem k tomu potřebuje skript up tyto čtyři řádky:

LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo chpst -u user -U user /home/user/unprivileged.sh &

Upravit1

Podle komentáře 0xC0000022L jsem zjistil, že „uživatel sudo -u“ funguje stejně jako „uživatel sudo chpst -u uživatel -U uživatel“:

LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo -u user /home/user/unprivileged.sh &

Budu studovat mužské sudoery a aktualizuji, pokud/až dostanu sudo sám do práce.

Přijatá odpověď:

Používám runit chpst nástroj pro takové úkoly. Například ze skriptu up zavolejte svůj neprivilegovaný skript:

chpst -u nobody /path/to/script

Linux
  1. Jak přizpůsobit uživatelská prostředí Linuxu

  2. Jak zakázat přihlášení uživatele root přes SSH

  3. Jak otestovat shodu skriptů Shell s Posix?

  1. Jak spouštět skripty Pythonu ze shellu

  2. Jak zopakovat nový řádek ve skriptech Bash Shell

  3. Jak správně ukončit relaci KDE ze shellu bez oprávnění root

  1. Jak nastavit oprávnění Sudo pro uživatele v Linuxu

  2. Jak přepnout z uživatele root na jiného uživatele, který má prostředí Nologin?

  3. Jak vytvořit extra uživatele root?