Nemožnost spuštění spustitelného souboru

Dobrý den,

byl jsem dlouholetým UŽIVATELEM Ubuntu, nicméně nyní jsem přešel na Fedoru 15. Chci tím říci, že se malinko vyznám v konzoli, trochu programuji, ale nejsem nějaký znalec. Takovéto znalce žádám nyní o pomoc.

Vytvářím programy v céčku, Zdrojový kód přeložím

           gcc mujProgram.c -o mujProgram

Správně vznikne spustitelný soubor mujProgram. Tento pak chci standardně spustit jak jsem zvyklý, tedy

           ./mujProgram

Ale bash mi vypíše

           bash: ./mujProgram: Operace zamítnuta

Po prozkoumání zjistím, že soubor mujProgram nemá atribut spustitelnosti. Opravím to

            chmod u+x mujProgram

ale nic se nestane. Ani když to spustím jak správce, ani když otevřu vlastnosti a tam se snažím odfajfkovat tu spustitelnost. Hned se to odznačí.

Co teď mám dělat? Děkuji za všechny náměty.

důvody mohou být různé, předpokládáme-li, že je program přeložený pro architekturu, na které systém běží, pak např. svazek s binárkou je namontovaný jako “noexec”. Nebo je aktivní selinux a binárka nemá patřičná nastavení. Ale spíše bych to tipl na ten noexec.

Děkuji za odpověď pane mosaic.

Skutečně program by měl být přeložen pro architekturu, na které běží. Předpokládám, že to je defaultní možnost. Nemohl byste mi prosím ještě poradit, jak to namontovat jako “exec”?

Nevím, jestli je to triviální, já jsem teď na to nepřišel.

Tak problém je vyřešen.

Ve vlastnostech jsem dal jako volbu SElinex Context httpd_user_script_exec_t a umožnil spustitelnost. Teď to funguje.

Kdybyste mi někdo poradili, jak udělat tuto volbu automatickou, nebo aspoň z konzole, byl bych rád. Dal bych si to alespoň do nějakého makefile.

Děkuji.

Selinux ma ruzna pravidla podle kterych prideluje kontext. Pokud to mate napr. v http adresarich pak teoreticky jde pouzit neco jako “restorecon” ktery “obnovi” context podle pravidel pro dany adresar. Nastavit kontext z konzole jde pomoci “chcon”. Nutno ovsem upozornit, ze pokud se jedna o soubor na ktery se vztahuji systemova pravidla a pustite “restorecon” nebo pouziva system “restorecond” pak se vam kontext zmeni “samovolne” na ten dany pravidly. Selinux je celkem slozita hydra, pokud s nim nejste kamarad pak doporucuji prepnout do permissive aspon na dobu seznamovani, jinak se budete asi casto a zbytecne divit.

Těžko jsem mohl dát konkrétnější odpověď, když jste neposkytl dost relevantních informací. Ani to, že se jedná o cgi pro httpd a je to pod adresářem /var/www (což nevím ani teď, jen to mohu usuzovat s SElinux contextu, který jste tomu dal). Já mám na http serverech /var i /home (z původního dotazu jsem předpokládal, že programujete ve svém home adresáři) na extra oddílech a /home je například montováno s flagem noexec (v /etc/fstab). To je to, co jsem měl na mysli.
SELinux bych nevypínal, spíše bych se ho, být vámi, naučil.