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

Dotaz: Po přestěhování systému nefunguje spouštění skriptů přes ./

13.12.2007 22:45 Začátečník
Po přestěhování systému nefunguje spouštění skriptů přes ./
Přečteno: 650×
Odpovědět | Admin
Přestěhoval jsem systém Suse 10.2 na nový disk a nyní lze spouštět skripty jen pomocí sh. Ten samý skript, přestože se ho pokouším spustit jako root, dá při zadání v konzoli hlášku
 ./startpeki.sh: /bin/sh: bad interpreter: Permission denied
/bin/sh je normálně tam, kde má být. Ve vlastnostech je, že je to odkaz na bash ( spustitelný soubor). Systém jsem stěhoval přes cp -a. Dá se s tím něco dělat? Předem děkuji za odpovědi.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.12.2007 23:04 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
Odpovědět | | Sbalit | Link | Blokovat | Admin
Na oddílu kde je startpeki.sh lze spouštět skripty? (Nemá noexec?)

Jinak Google TFEM jste už zkoušel?
15.12.2007 22:16 Začátečník
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
Děkuji. Googlovat jsem samozřejmě zkoušel, ale nic kloudného jsem nenašel. Můj /etc/fstab vypadá nějak takhle
/dev/sda3            /                    reiserfs   defaults              1 1
/dev/fd0             /media/floppy        auto       noauto,user,sync      0 0
/dev/sda1            /windows/C           vfat       users,gid=users,umask=0002,utf8=true 0 0
/dev/sda5            swap                 swap       default               0 0
/dev/sda6            /home                auto       auto,user           0 0
/dev/sda7            /windows/D           vfat       users,gid=users,umask=0002,utf8=true 0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
proc                 /proc                proc       defaults              0 0
usbfs                /proc/bus/usb        usbfs      noauto                0 0
Noexec tam nikde není. Odkaz v Googlu, který máte asi na mysli, jsem už taky prošel a exec to nespravilo. Možná jsem měl hledat důkladněji, ale řešení jsem tam nenašel. Nebo se ztratilo v tom množství.

Taky mě napadlo smazat ten link a vytvořit ho znovu, ale protože ukazuje nejspíše dobře, asi by to taky nebylo k ničemu. Prostě nevím.

15.12.2007 23:00 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
A co udělá /bin/sh ./startpeki.sh
15.12.2007 23:48 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
Hm, exec máte v podstatě jen na root partition, čili předpokládám že se ten link (i soubor na který linkuje) nachází tam, ano?

Kdyžtak k defaults zkuste přidat ještě exec (i když dle man by to mělo být defaults ok).

Zkontrolujte si důkladně ty shelly:
bash$ ls -l /bin/*sh
-rwxr-xr-x 1 root root 640720 Jul 24 17:08 /bin/bash
lrwxrwxrwx 1 root root      9 Nov 23 09:46 /bin/csh -> /bin/tcsh
lrwxrwxrwx 1 root root      4 Nov 23 09:46 /bin/rbash -> bash
lrwxrwxrwx 1 root root      4 Nov 23 09:46 /bin/sh -> bash
-rwxr-xr-x 1 root root 340096 Mar  7  2006 /bin/tcsh
Josef Kufner avatar 26.12.2007 22:53 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
/home máš mountnutý s volbou "noexec". Odstraň "user". Viz man mount:
user   Allow an ordinary user to mount  the  file  system.   The
       name  of  the mounting user is written to mtab so that he
       can unmount the file system again.  This  option  implies
       the  options noexec, nosuid, and nodev (unless overridden
       by  subsequent   options,   as   in   the   option   line
       user,exec,dev,suid).
Na mountování /home by ti mělo vyhovovat "defaults".
Hello world ! Segmentation fault (core dumped)
21.1.2008 20:48 Josef Kubin
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
Take jsem s podobnym problemem chvilku bojoval. Vtip je ukryty v casti vety "... by subsequent options ...".

Volbu "user" je potreba hodit na zacatek, a pak to lze mountnout a programy spoustet i pod obyc uzivatelem.

$ grep user /etc/fstab

...

172.16.200.1:/home/kb/cvs /home/rhel5/cvs nfs user,exec,noauto,rw 0 0

...
22.1.2008 01:06 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
Kolegovi tam hlavně úplně chybělo to "exec". Jinak předpokládám, že ne pořadí voleb nezáleží... nebo jste tímto chtěl říct že ano?
22.1.2008 01:11 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
Aha, ono za "by subsequent options" nenásleduje dvojtečka a výčet, ale příklad :) To pak ta věta opravdu dostává jiný rozměr :)
16.12.2007 18:33 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
Odpovědět | | Sbalit | Link | Blokovat | Admin
1) Súbor asi nemá nastavené práva na spúšťanie. Čo vypíše
ls -l startpeki.sh
2) Súborový systém je mountovaný v "noexec" rezime. V akom adresári je umiestnený ten skript? Čo vypíše
mount -p
3) Za "#!/bin/sh" v hlavičke skriptu je windowsový koniec riadku. Nie je pri otvorení skriptu pomocou
vim -b startpeki.sh
na prvom radku
#!/bin/sh^M
? Ak áno, treba ^M zmazať.
26.12.2007 21:35 Začátečník
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
Děkuji za odpovědi.
ls -l /bin/*sh
-rwxr-xr-x 1 root root 114744 Nov 25  2006 /bin/ash
-rwxr-xr-x 1 root root 557704 Nov 25  2006 /bin/bash
lrwxrwxrwx 1 root root      4 Sep 22 21:26 /bin/csh -> tcsh
lrwxrwxrwx 1 root root     12 Sep 22 21:26 /bin/ksh -> /lib/ast/ksh
-rwxr-xr-x 1 root root  11369 Nov 25  2006 /bin/rescan-scsi-bus.sh
-rwxr-xr-x 1 root root 641596 Nov 26  2006 /bin/sash
lrwxrwxrwx 1 root root      4 Sep 22 21:26 /bin/sh -> bash
-rwxr-xr-x 1 root root 318356 Nov 25  2006 /bin/tcsh
-rwxr-xr-x 1 root root 502840 Nov 28  2006 /bin/zsh
ls -l startpeki.sh
-rwxr-xr-x 1 novak users 52 Sep 27 20:23 startpeki.sh
mount -- p
mount: can't find p in /etc/fstab or /etc/mtab
#!/bin/sh
cd /windows/D/Peki/data
java -jar peki.jar
do /etc/fstab jsem doplnil k /dev/sda6 exec. Začalo fungovat spouštění v dřívějším rozsahu. Jen u Wine se mi zdá, že se nespustí jeden program, který dříve spustit šel, ale nevím to určitě. Spouštěcí skripty jsou všechny v /home. Spouštěné soubory ve /windows/D a /home. Asi vám výpisy řeknou víc mě. S tím exec je to nějaká záhada. Díval jsem se do /etc/fstab u Debianu, a ani tam jsem nic podobného nenašel. Začalo mi tedy fungovat spouštění, ale netuším, proč, když exec asi není úplně není ten problém. Jiný systém ho neobsahuje a taky funguje.
26.12.2007 22:11 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
A co zkusmo z /etc/fstab odstranit parametr exec a script upravit takto:
#!/bin/bash
26.12.2007 23:13 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
To je šumák, takto snadno obejít absenci možnosti spouštět programy určitě nelze.
26.12.2007 23:10 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
Začalo mi tedy fungovat spouštění, ale netuším, proč, když exec asi není úplně není ten problém.

Ale jo, chybějící exec byl určitě problém :) Měl jste ho čistě pouze a jen na svazku root, nikoliv třeba pro /home, /windows/D atd. Pro /home už jste ho jak říkáte přidal, a pro /windows/D to udělejte také.
26.12.2007 23:15 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Po přestěhování systému nefunguje spouštění skriptů přes ./
Jo jestli ho jiný systém neobsahuje, tak tam bude nejspíš defaults nebo tam nebude user(s) a pod.

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.