Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: mr.p 03 Května 2013, 13:37:48

Název: sudo a bash script pod aliasem
Přispěvatel: mr.p 03 Května 2013, 13:37:48
Pěkný den přeji :)

vytvořil jsem si něžný script, kterým chci vytvořit symlink do složky, pro kterou potřebuji rootovský přístup. Pro ten script jsem vytvořil alias, tedy:
Kód: [Vybrat]
alias script="/cesta/ke/scriptu.sh"ale když chci zavolat svůj script dostanu odpověď command not found.

Poraďte prosím :)
Název: Re:sudo a bash script pod aliasem
Přispěvatel: pacholik 03 Května 2013, 13:54:19
Co not found? Alias nebo ten skript?
Název: Re:sudo a bash script pod aliasem
Přispěvatel: mr.p 03 Května 2013, 14:30:52
Mno to prave nevim. Dokoncuju ten script tabulatorem, takze ten alias vidi. Kdyz ho napisu bez sudo, tak se normalne vykona, až na to, že bez rootovskyho prava nemuze vytvorit ten symlink, a kdyz přidam sudo tak mi to řekne:
Kód: [Vybrat]
sudo: script: command not found
Název: Re:sudo a bash script pod aliasem
Přispěvatel: pacholik 03 Května 2013, 14:52:59
Ten alias musíš vytvořit pod rootem (resp. přidat do /root/.bashrc).
Název: Re:sudo a bash script pod aliasem
Přispěvatel: mr.p 03 Května 2013, 16:01:17
Mno mám to uložený v .bash_aliases a vytvořený symlink do /root/.bash_aliases. A dočetl jsem se, že co se toho suda týče, že ho nemůžu požít na alias, který odkazuje na soubor se skriptem.

Ale našel jsem řešení: http://stackoverflow.com/questions/9448920/how-can-i-execude-bash-function-using-sudo
Název: Re:sudo a bash script pod aliasem
Přispěvatel: pacholik 03 Května 2013, 16:41:47
> co se toho suda týče, že ho nemůžu požít na alias, který odkazuje na soubor se skriptem.
? Proč by ne?

To na Stack Overflow se týká něčeho jinýho, tady bych si tipnul že /root/.bashrc (na rozdíl od ~/.bashrc) nespouští .bash_aliases.
Název: Re:sudo a bash script pod aliasem
Přispěvatel: Myrmica 03 Května 2013, 21:47:27
Jen pro doplnění, existuje možnost spustit příkaz ve skriptu pomocí sudo bez ručního vkládání hesla:
Kód: [Vybrat]
echo heslo | sudo -S příkaz
např:
Kód: [Vybrat]
echo heslo | sudo -S apt-get update
třeba ti to pomůže.
Nevýhodou je, že heslo musí být zapsáno ve skriptu.
Název: Re:sudo a bash script pod aliasem
Přispěvatel: Cuore 03 Května 2013, 21:58:32
to je prasárna, od toho je tady sudoers
Název: Re:sudo a bash script pod aliasem
Přispěvatel: Myrmica 03 Května 2013, 22:19:16
Máš pravdu, je to prasárna. Rozumné nastavení sudoers (povolit vytváření linků bez zadání root hesla) by mohlo vyřešit tazatelův problém.

Tu výše uvedenou prasárnu používám v programu, který spouští některé příkazy pod root právy a příkazový řádek se generuje se na základě požadavků obsluhy.
Název: Re:sudo a bash script pod aliasem
Přispěvatel: mr.p 05 Května 2013, 16:31:47
Mno to co jsem vlastně hledal je odpověď proč když vytvořím symlink na spouštěcí soubor pro sublime text v adresáři /usr/bin tak mi ho v konzoli nabídne, ale symlink na soubor s bashem mi to už nenabídne, tak jsem zkusil alias na ten soubor, ale ten zas nevidí sudo.

Mno tak nebudu línej a budu to psát ručně. Díky za rady.
Název: Re:sudo a bash script pod aliasem
Přispěvatel: mr.p 05 Května 2013, 16:39:50
> co se toho suda týče, že ho nemůžu požít na alias, který odkazuje na soubor se skriptem.
? Proč by ne?
Proč ne to nevim, prostě to tak je :)

To na Stack Overflow se týká něčeho jinýho, tady bych si tipnul že /root/.bashrc (na rozdíl od ~/.bashrc) nespouští .bash_aliases.
Jinak .bashrc ma stejný obsah pro roota i pro uživatele, koukal jsem dovnitř.
Název: Re:sudo a bash script pod aliasem
Přispěvatel: pacholik 05 Května 2013, 17:16:37
a máš na tom skriptu spustitelný příznak (http://wiki.ubuntu.cz/spustitelný_příznak)
Název: Re:sudo a bash script pod aliasem
Přispěvatel: mr.p 06 Května 2013, 09:26:56
Ooo ano mám :)

Každopádně ještě mě napadlo jestli to není tím, že v tý složce /usr/bin jsou ty soubory binární. A ten script, který ti pak nabízí doplňování hledá pouze binární soubory.
Název: Re:sudo a bash script pod aliasem
Přispěvatel: pacholik 06 Května 2013, 14:12:23
Aha!
Jenom první slovo je testováno jestli je alias. Dá se to vynutit tím, že si uděláš alias na sudo a za ním mezeru. (Tohle i všechny aliasy mít u uživatele, k rootovi se vůbec nekouká.)
Kód: [Vybrat]
alias sudo='sudo '
http://www.shellperson.net/using-sudo-with-an-alias/
http://askubuntu.com/questions/22037/aliases-not-available-when-using-sudo


V /usr/bin jsou binárky, skripty v bashi, pythonu, perlu, ruby a nevim co ještě.
Název: Re:sudo a bash script pod aliasem
Přispěvatel: mr.p 07 Května 2013, 08:27:37
No super, tak jsem jen špatně hledal :P Tohle je přesně ono. Díky

offtopic jak náročný je převést bash script do binární podoby a k čemu to je dobrý?
Název: Re:sudo a bash script pod aliasem
Přispěvatel: pacholik 07 Května 2013, 11:08:45
Podle toho jak dobře zvládáš C/C++ nebo jiný kompilovaný jazyk :)
Název: Re:sudo a bash script pod aliasem
Přispěvatel: beer 07 Května 2013, 11:59:37
No super, tak jsem jen špatně hledal :P Tohle je přesně ono. Díky

offtopic jak náročný je převést bash script do binární podoby a k čemu to je dobrý?

Jsou minimálně 2 možnosti:
1) přespat ručně
2) SHC (http://www.datsi.fi.upm.es/~frosal/sources/shc.html)

K čemu je to dobré?

a) za svůj skript se stydíš, chceš ho dál distribuovat, ale nestojíš o to, aby tě ostatní pořád upozorňovali, že je to sračka
b) své dílo chceš prodat a chceš zatajit, že je postaveno na programech pod svobodnou licencí
c) možná vyšší rychlost, ale v případě že konvertuješ sračku, nečekej žádné zázraky, navíc tě čekají problémy, až se programy, které skript používá, aktualizují, nebo změní

nevýhoda: nepřehlednost, nemožnost editace a oprav, pokud by si prodával a nedodával zdrojové kódy, porušoval bys zřejmě GPL.