Portál AbcLinuxu, 12. května 2025 12:42

Dotaz: Jak spustit příkaz jako root?

23.10.2020 15:59 MareK
Jak spustit příkaz jako root?
Přečteno: 258×
Odpovědět | Admin
Ahoj, můžete mi prosím poradit?

Přihlásím se jako uživatel marek, 

v home dir mám v souboru 

.bashrc 

vytvořný alias 

mapama='/root/mujnazevprogramu/go.sh'

Když zavolám 

mapama 

tak mi to napíše 

Permission denied 

což je správně, jenže pokud zavolám 

sudo mapama 

tak to napíše 

sudo: mapama: command not found

Mám špatně vytvořený alias? jak to můžu opravit? Díky

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.10.2020 16:19 X
Rozbalit Rozbalit vše Re: Jak spustit příkaz jako root?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Bash hleda alias podle prvniho prikazu, ale prvni prikaz je sudo..
23.10.2020 16:25 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: Jak spustit příkaz jako root?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Daj si skrip do /usr/local/bin a prava 755.
debian.plus@protonmail.com
23.10.2020 16:31 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: Jak spustit příkaz jako root?
Odpovědět | | Sbalit | Link | Blokovat | Admin

Možnost 1 – alias

Vytvořte alias i stím sudo:

.bashrc:
alias mapama='sudo /root/mujnazevprogramu/go.sh
Aliasy jesou čistě jen záležitostí bashe v interaktivním módu. Pokud je vkládáte do .bashrc ve svém domovském adresáři, nemůže ovlivnit cizí shelly a už vůbec sudo, které hledá „skutečný“ spustitelný soubor.

Možnost 2 – Spustitelný soubor

Jinou možností by bylo vytvořit symlink/skript uložený v /usr/local/sbin/název. Pak bude příkaz dostupný pro všechny.

Varianta se symlinkem

Vytvořte symlink, který ukazuje na soubor, který chcete spustit v /usr/local/bin (pokud chcete mít tento příkaz v PATH i jako běžný uživatel), nebo v /usr/local/sbin (pokud chcete tento příkaz mít v rootově PATH).

Takže tedy:
sudo ln -s /root/mujnazevprogramu/go.sh /usr/local/sbin/mapama
Výhodou tohoto řešení je možnost použití SUID/SGID rogramů. Program uvidí (v argv[0]) cestu k symlinku, ne k programu samotnému.

Varianta se skriptem

Můžete vytvořit také skript, který spustí daný program i se sudo. Buď ho můžete umístit do /usr/local/bin, nebo do Vačeho uživatelského adresáře se spustitelnými programy (např. ~/.local/bin).
#! /bin/bash
exec sudo /root/mujnazevprogramu/go.sh

Pokud Vám to připadá moc složité, vězte, že není. Přijdete na to. ☺
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
23.10.2020 16:46 MareK
Rozbalit Rozbalit vše Re: Jak spustit příkaz jako root?
Díky za návod, 

nevím kterou variantu zvolit

potřebuji aby script v /root/.... fyzicky zůstal a script mohl spustit výhradně a pouze root (sudo) .

23.10.2020 17:54 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: Jak spustit příkaz jako root?
Nejjednodušší je ta první – přidat to do aliasu v .bashrc. V praxi to pak vypadá takhle:
# SystemD aliases
alias sy="sudo systemctl"
alias sys="sudo systemctl start"
alias syx="sudo systemctl stop"
alias syr="sudo systemctl restart"
alias sye="sudo systemctl enable"
alias syd="sudo systemctl disable"
alias syl="sudo systemctl status"

alias aptitude="sudo aptitude"

alias suvim="sudo vim"

alias visudo="sudo visudo"
Pokud to bude něco, co bude používat více uživatelů nebo budete chtít příkaz mapama volat z programů, zvolte poslední. Ten symlink tady nepomůže – to jsem tam asi napsal omylem.
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
23.10.2020 17:03 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Jak spustit příkaz jako root?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Veľmi opatrne.
23.10.2020 17:51 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: Jak spustit příkaz jako root?
Ano, to je pravda.
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.