Çalışan komut dosyası: Yürütülebilir bit ve kök haklarına rağmen «İzin reddedildi»


17

Debian'ı VirtualBox'a yükledim (genellikle sistemimi bozan çeşitli deneyler için) ve VirtualBox konuk addon betiğini başlatmaya çalıştım. Kök olarak oturum açtım ve başlatmaya çalıştım autorun.sh, ama «İzin verilmedi». ls -lkomut dosyasının yürütülebilir haklara sahip olduğunu gösterir.

Maalesef, çıktıyı kopyalayamıyorum - VirtualBox kesinlikle eklenti olmadan hiçbir faydası yok, ne paylaşılan bir dizin ne de paylaşılan bir pano çalışıyor. Ama sadece emin olmak için, hakları el ile kopyaladım:

#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh

İlk başta betiğin hata veren bir şey yürüttüğünü düşündüm. /bin/shGibi bir şey ile değiştirmeye çalıştım #/pathtorealsh/sh -xv, ancak çıktı almadım - senaryo bile çalıştırılamıyor gibi görünüyor.

Neye sebep olabileceği hakkında bir fikrim bile yok.


2
Çalışması gerektiği anlaşılıyor. Açıkça bash ile çalıştırmayı deneyin: `` bash -x ./autorun.sh ".Bu belki de ek bir ipucu verir.
nobar

2
Çıktısı nedir mount | grep noexec?
cuonglm

1
@Gnouc, haklısın, takılı «cdrom» noexecseti var. Muhtemelen cevap olarak gönderebilirsiniz; bu arada bir exec hakları ile yeniden takmaya çalışıyorum. Hmm, dosya sisteminin böyle bir niteliğe sahip olabileceğini bile bilmiyordum.
Hi-Angel

Ve eğer onu çalıştırarak çalıştırırsan sh ./autorun.shne olur?
sabitlendikten

Yanıtlar:


29

Dosya sisteminiz noexecseçenek kümesi ile bağlanmıştır, bu nedenle yürütülebilir dosyaları çalıştıramazsınız. Gönderen montaj belgeler:

noexec

Bağlı dosya sisteminde herhangi bir ikili dosyanın doğrudan yürütülmesine izin vermeyin. (Yakın zamana kadar /lib/ld*.so / mnt / binary gibi bir komut kullanarak ikili dosyaları zaten çalıştırmak mümkün oldu. Bu hile Linux 2.4.25 / 2.6.0'dan beri başarısız.)

Deneyin:

mount | grep noexec

Ardından dosya sisteminizin çıktıda listelenip listelenmediğini kontrol edin.

Evetse, dosya sistemini execseçeneği ile yeniden monte ederek bu sorunu çözebilirsiniz :

mount -o remount,exec filesystem

Bu benim için işe yaramadı. Çıkarmam ve sonra normal şekilde yeniden takmam gerekiyordu. Sonra iyi çalıştı.
datakid

@datakid: FS'niz nedir?
cuonglm

Ben debian 9 ile bu sorunu yaşıyorum, komut dosyaları kök olarak çalışıyorsa bazı dosyalar izin reddedildi, ama kök olarak tanımlayın ... bir pencere davranışı gibi, ben kaldırırsanız ve komut dosyası çalıştı! = [
Luciano Andress Martini

Ben çok garip bir mesaj alıyordum, çünkü şu oldu noexec: "sh: 75: script.sh: İzin reddedildi"
tmm1

2

bash -x ./filename.filetypeçalışmalı. Kök kullanıcısı olarak izin verilmediğinde benim için çalıştı.


Hayır, sonuçta sorunun noexecbağlama seçeneği olduğu ortaya çıktı , bu işe yaramaz, çünkü yürütülmesi gereken daha fazla dosya olabilir; yani, filename.filetypeaynı dosya sistemindeki diğer dosyaları yürütmeye çalışırken soluğu kesilir. Basitleştirilmiş bir testle kolayca kontrol edebilirsiniz: "merhaba" yazdıran iki satırlı bir komut dosyası oluşturun, sonra tekrar kendisini çağırır, ancak yürütülebilir hakları ayarlamaz. İle çalıştırırsanız -x, "merhaba" yazdıracak, ancak yinelemeli çağrı hattı bir hata tetikleyecektir.
Hi-Angel

1

Bu soruna çözümüm kaynağı kullanmaktır . Çok önemli veri depolama hacmindeydim. Bu birim noexec olarak monte edilir. Yürütülebilir ancak izin sorunu var basit bir kabuk komut dosyası var.

./fixsamplesheet.sh # this guy is executable
-bash: ./fixsamplesheet.sh: Permission denied

source fixsamplesheet.sh # worked fine

Sadece Ubuntu cihazımda test edildi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.