Saya menjalankan Ubuntu pada komputer 1 dan komputer 2. Saya mengkompilasi program C ++ pada komputer 1, dan saya dapat menjalankannya dari terminal menggunakan ./program_name
. Ini berjalan dengan baik.
Namun, ketika saya mencoba melakukan ini di komputer 2, dikatakan: bash: ./program_name: permission denied
Apa yang salah dan apa yang bisa saya lakukan?
progam_name
?bash program_name
.sh
file. Itu menolak untuk mengeksekusi dengan pesan kesalahan ini. Saya akan mengatakan ini pasti pada topik untuk StackOverflow. Saya telah dinominasikan untuk membuka kembali.Jawaban:
chmod u+x program_name
. Kemudian jalankan.Jika tidak berhasil, salin program dari perangkat USB ke volume asli pada sistem. Kemudian
chmod u+x program_name
pada salinan lokal dan jalankan itu.Sistem Unix dan Unix like umumnya tidak akan menjalankan program kecuali jika ditandai dengan izin untuk mengeksekusi. Cara Anda menyalin file dari satu sistem ke sistem lainnya (atau memasang volume eksternal) mungkin telah mematikan izin eksekusi (sebagai fitur keamanan). Perintah
chmod u+x name
menambahkan izin untuk pengguna yang memiliki file untuk menjalankannya.Perintah itu hanya mengubah izin yang terkait dengan file; itu tidak mengubah kontrol keamanan yang terkait dengan seluruh volume. Jika itu adalah kontrol keamanan pada volume yang mengganggu eksekusi (misalnya,
noexec
opsi dapat ditentukan untuk volume difstab
file Unix , yang mengatakan tidak mengizinkan izin eksekusi untuk file pada volume), maka Anda dapat mengirim kembali volume dengan opsi untuk memungkinkan eksekusi. Namun, menyalin file ke volume lokal mungkin merupakan solusi yang lebih cepat dan mudah.sumber
/tmp
. Ternyata tmpfs saya/tmp
mengalami masalah yang sama, dan saya harus menyalin file yang dapat dieksekusi ke volume asli asli, yaitu folder rumah saya ~ di partisi ext4.chmod
membuat perubahan yang tahan lama. Jika izin berubah setelah Anda gunakanchmod
untuk mengaktifkannya, maka ada hal lain yang mengubahnya. (Ini mungkin termasuk sesuatu yang lain menghapus file dan membuatnya kembali atau volume file sedang di-undount dan remounted. Jika volume sedang di-remount, ada cara untuk menentukan izin default untuk file pada volume eksternal, tetapi itu di luar ruang lingkup Saya bisa menjawab sekarang.)Coba ini:
sumber
sudo
umumnya tidak diperlukan, kecuali jika program tersebut berada dalam direktori di mana Anda tidak memiliki izin menulis (dalam hal ini, bagaimana Anda menginstalnya di sana?)Kedengarannya Anda tidak memiliki flag eksekusi yang ditetapkan pada izin file, coba:
sumber