Portál AbcLinuxu, 18. července 2025 21:25


Dotaz: Binárka se musí spouštět pod rootem, jinak nejede

11.9.2015 10:22 luděk
Binárka se musí spouštět pod rootem, jinak nejede
Přečteno: 788×
Odpovědět | Admin
Zkompiloval sem pomocí gcc zdroják napsaný v C a pro binárku platí:

Owner: user
Access: Read & Write
Allow this file to run as a program

Ale binárku sem musel dát do /bin a spouštět jako root, jinak nejede.

Nechci, aby běžela pod rootem, není to třeba. A chci ji mít v domovském adresáři. Co s tím udělat?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.9.2015 10:25 Carth_Onasi
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co dělá ta binárka? Jde přesunout do /usr/bin?
13.9.2015 15:30 luděk
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Binárka přesunuta do /usr/bin a jde konečně spustit i z domácího adresáře, ale bohužel jen pod rootem.
11.9.2015 10:41 trubicoid2
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Odpovědět | | Sbalit | Link | Blokovat | Admin
nebo do ~/bin ? jinak do /bin ani do /usr/bin nic svyho nedavej, to uz radeji /usr/local/bin
11.9.2015 11:00 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Odpovědět | | Sbalit | Link | Blokovat | Admin
To kde je binárka uložená nemá vliv na její běh.

Takže soukromé binárky bych do adresářů OS necpal, nech si je v soukromém adresáři.

A jinak pokud jsou správně nastavená práva na tom binárním souboru musí jít spustit jako běžný uživatel - pokud teda binárka nešahá do OS kde potřebuje práva.

Asi by chtělo popsat co má dělat - dát odkaz na zdrojový kod a pod.... a napsat přesně tu chybovou hlášku co napíše.
11.9.2015 11:31 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Odpovědět | | Sbalit | Link | Blokovat | Admin
To kde je binárka je nepodstatné. Co to znamená "nejede"? Systém ji nespustí? Spustí, ale spadne? Vypíše nějakou hlášku? Je to tvoje binárka nebo něco staženého? pokud staženého tak proč nenapíšeš, co to spouštíš? Pokud tvoje, tak nějaký seznam funkcí OS, který používá?

Jsou v podstatě dvě možnosti proč binárka nejede. Jedna jsou přístupová práva binárky jako celku. Druhá možnost je použití interně funcí jádra, které potřebují i privilegovaný přístup. Klasický jednoduchý příklad, je program traceroute, který vyžaduje změnu TTL u IP paketů, což je v privilegovaném prostoru, a proto jede buď pod rootem nebo s nastaveným SUID bitem.
13.9.2015 15:45 luděk
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Původní zdroják zjednodušen na minimum, aby jen zobrazil na terminálu "Ahoj", takže snad není potřeba žádný privilegovaný přístup.

Po přesunutí do /usr/bin jde binárka spouštět i z /home/ludek, ale jen pod rootem. Bez roota hlásí "Operation not permitted". Uživatel ludek má plná přístupová práva k binárce a soubor je spustitelný.

13.9.2015 16:08 MadCatX
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Po přesunutí do /usr/bin jde binárka spouštět i z /home/ludek,
Tohle nedává žádný smysl. /usr/bin obyčejně bývá a $PATH, takže stačí do terminálu napsat mojebinarka a program se spustí. Pokud se má něco spustit z místa, které není v $PATH, je nutné uvést buď plnou cestu (/home/me/bin/mojebinarka) - cesta může být i relativní - nebo se přepnout do adresáře obsahujícího ten program a zadat ./mojebinarka.

Pro vyřešení druhé část problému asi budete muset poslat zdroják.
Jendа avatar 13.9.2015 18:27 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Pro vyřešení druhé část problému asi budete muset poslat zdroják.
Dále by se hodilo: ls -l na binárku, ldd na binárku a ls -l na knihovny, které to vypíše.
13.9.2015 18:31 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
A pak je tu samozřejmě možnost, že tu hlášku vypisuje ten program, takže pokud není problém v právech té binárky, tak ještě strace.
13.9.2015 18:03 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
to je zase povídání, jak s nedoslýchavou babkou. místo přesných kopií zpráv z terminálu jakési přepisy. Kdo hlásí "Operation not permitted" ?! Tedy jaká je přesná hláška?! Tipl bych že to je bash: /usr/bin/program: Operation not permitted a pak to budou přistupová práva souboru. Jaký je přesný long výpis adresáře pro ten soubor?!
Jendа avatar 11.9.2015 16:08 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ale binárku sem musel dát do /bin
Já jsem si do $PATH přidal ~/bin (a další adresáře z ~), kde mám skripty a programy na kterých pracuju a které se z nějakých důvodů nehodí instalovat do celého systému.
Allow this file to run as a program
Udělej nad ní ls -l, je možné, že tohle znamená, že má X práva jenom pro jejího vlastníka. A taky by bylo dobré napsat, jestli "nejede" opravdu znamená "permission denied".
13.9.2015 00:36 evzen
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kdysi davno se mi delo neco podobneho. /home mel svuj oddil a bylo na nem zakazano spousteni souboru.
13.9.2015 00:55 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
To by se vztahovalo i na roota. IMHO nemá smysl naslepo hádat, dokud tazatel jasně nenapíše, co přesně udělal a co přesně se stalo. Takhle to klidně může být něco úplně nesmyslného jako že aktuální adresář není v cestě.
14.9.2015 08:28 Hugo
Rozbalit Rozbalit vše Několik otázek pro upřesnění
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak se jmenuje ten spustitelný soubor? Nekoliduje jeho jméno s nějakým existujícím programem/skriptem? Jak vypadá nastavení proměnné $PATH pro uživatele ludek? Jde program z aktuálního umístění spustit příkazem ./nazev_spustitelneho_souboru ?
H0ax avatar 14.9.2015 08:42 H0ax | skóre: 36 | blog: Odnikud_nikam
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Odpovědět | | Sbalit | Link | Blokovat | Admin
bych vypnul selinux a svět se zas o něco zjednoduší :-D
uid=0(root) gid=0(root) skupiny=0(root)
14.9.2015 16:38 Andy | skóre: 18 | NMnMet
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
taky me to napadlo :)
Válka je vůl ... a já taky ;) | Chaotic state of my influence.
14.9.2015 14:39 Radek Isa | skóre: 14
Rozbalit Rozbalit vše Re: Binárka se musí spouštět pod rootem, jinak nejede
Odpovědět | | Sbalit | Link | Blokovat | Admin
napis do terminalu
ls -la /cesta/mojebinarka
a napiš výsledek a budem hned všichni moudřejší. Ono stačí se podívat na ostatní binárky jaká mají práva a nastavi stejná. A práva read & write nejsou execute. Takže počítam že stačí napsat
chmod +x /cesta/mojebinarka
Pro binárky mimo domovský adresář není vhodné aby mel jakýkoliv uživatel právo write (kromě roota), a byl jiný vlastní jako root.

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.