Ubuntu, “bash: ./program İzni reddedildi” diyor [kapalı]


206

Bilgisayar 1 ve bilgisayar 2 üzerinde Ubuntu çalıştırıyorum. Bilgisayar 1 üzerinde bir C ++ programı derledim ve kullanarak terminalden çalıştırabilirsiniz ./program_name. İyi çalışıyor.

Ancak, bunu bilgisayar 2'de yapmaya çalıştığımda şöyle diyor: bash: ./program_name: permission denied

Sorun nedir ve bu konuda ne yapabilirim?


7
Yürütme izniniz var progam_namemı?
fedorqui 'SO zarar vermeyi kes'

1
Programı bilgisayar 1'den bilgisayar 2'ye nasıl aldınız? Yürütülebilir dosyayı kopyaladınız veya kaynak kodu yeniden derlediniz mi? “Ls -l program_name” komutunun çıktısı nedir?
Eric Postpischil

2
Bu SO için konu dışı gibi görünüyor, çünkü programlama değil Linux'ta hak yönetimi ile ilgili
nijansen 23:13

4
deneyinbash program_name
Nadjib Mami

10
Bir .shdosya yazdım . Bu hata mesajı ile çalıştırmayı reddetti. Bu kesinlikle StackOverflow için konu olduğunu söyleyebilirim. Yeniden açılış için aday gösterdim.
ArtOfWarfare

Yanıtlar:


392

chmod u+x program_name. Sonra yürütün.

Bu işe yaramazsa, programı USB aygıtından sistemdeki yerel bir birime kopyalayın. Sonra chmod u+x program_nameyerel kopya üzerinde ve yürütmek.

Unix ve Unix benzeri sistemler, yürütme izni ile işaretlenmedikçe genellikle bir programı yürütmezler. Dosyayı bir sistemden diğerine kopyalama şekliniz (veya harici bir birimi takma) yürütme iznini kapatmış olabilir (güvenlik özelliği olarak). Komut chmod u+x name, dosyanın sahibi olan kullanıcının dosyayı yürütmesine izin verir.

Bu komut yalnızca dosyayla ilişkili izinleri değiştirir; tüm birimle ilişkili güvenlik denetimlerini değiştirmez. Birimin yürütmeyi engelleyen güvenlik denetimleridir (örneğin, noexecbirimdeki fstabdosyalar için yürütme iznine izin vermediğini söyleyen Unix dosyasındaki bir birim için bir seçenek belirtilebilir ), o zaman birimi yeniden bağlayabilirsiniz. yürütme izin seçenekleri ile. Ancak, dosyayı yerel birime kopyalamak daha hızlı ve kolay bir çözüm olabilir.


3
Bunun sadece FAT32 gibi Unix / Linux yerel olmayan bölümlerinde olacağını ve olmayacağını düşünürdüm /tmp. Benim tmpfs /tmpaynı sorunu muzdarip çıkıyor ve ben yürütülebilir dosyayı gerçek bir yerel birim, yani bir ext4 bölümünde benim ana klasör ~ kopyalamak zorunda.
RayLuo

13
Bugün bu sorunla karşılaştım, bu yüzden ilk arama sonucu mor renkte, yani daha önce okuduğum anlamına geliyor. "Bu umut vaat eden bir işaret", kendi kendime konuştum ve o arama sonucunu tıkladım. Beni bu sayfaya, benim durumumda işe yaramayan bu yanıtı ve nihayet yukarıdaki işe yarayan yorumu getirdi. Ve sonra yorumun 2 ay önce yazdığımı fark ettim. Vay, ne hayat ama.
RayLuo

5
Maalesef bu Q / A bindirme için ... de düşünüyorum lütfen belki noexec olduğunu fstab ... "Bazı insanlar" o arayan zaman biraz kaybetti "Duydum" Herhangi yürütme ayrıcalıkları olmadan sürücüyü takar. ..
Simon Opelt

1
@Webman: chmodkalıcı bir değişiklik yapar. İzinleri chmodetkinleştirmek için kullandıktan sonra izinler değişirse , başka bir şey onları değiştirir. (Bu, dosyayı silen ve yeniden oluşturan veya dosyanın sökülüp yeniden takıldığı birimi içerebilir. Birim yeniden takılıyorsa, harici birimlerdeki dosyalar için varsayılan izinleri belirtmenin yolları vardır, ancak bu kapsamın dışındadır Şimdi cevap verebilirim.)
Eric Postpischil

2
@SimonOpelt "diğer insanlar" minnettar
Matt Jacobsen

32

Bunu dene:

sudo chmod +x program_name
./program_name 

Tavsiyen için teşekkürler. Ben sadece denedim - ama şimdi bash diyor: ./program_name ikili dosya çalıştıramaz
Kian

Bilgisayar 2 32bit ve bilgisayar 1 64bit olabilir mi? Sanırım belki de bilgisayar 2'de derlemeliyim. Yardımlarınız için herkese teşekkürler.
Kian

Evet, 64 bitlik bir program derlerseniz ve 32 bitlik bir sistemde çalıştırmayı denerseniz, çalışmaz. bilgisayardaki kaynak kodu yeniden derlemeniz gerekir 2.
Vitor Villar

sudoProgram yazma izniniz olmayan bir dizinde olmadığı sürece genellikle gerekli değildir (bu durumda, oraya ilk etapta nasıl
yüklediniz

10

Dosya izinlerinde yürütme bayrağı ayarlanmamış gibi görünüyor:

chmod u+x program_name
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.