Izin ditolak
Untuk menjalankan skrip file harus memiliki set bit izin yang dapat dieksekusi .
Untuk memahami izin file Linux, Anda dapat mempelajari dokumentasi untuk chmod
perintah tersebut. chmod , singkatan dari mode perubahan , adalah perintah yang digunakan untuk mengubah pengaturan izin file.
Untuk membaca dokumentasi chmod untuk sistem lokal Anda, jalankan man chmod
atau info chmod
dari baris perintah. Setelah membaca dan memahami Anda harus dapat memahami output dari menjalankan ...
ls -l foo.sh
... yang akan mencantumkan izin MEMBACA, MENULIS dan MENGEKSEKUSI untuk pemilik file, pemilik grup, dan semua orang lain yang bukan pemilik file atau anggota grup yang dimiliki file tersebut (grup izin terakhir kadang-kadang disebut sebagai sebagai "dunia" atau "lainnya")
Berikut ringkasan tentang cara memecahkan masalah Izin Ditolak dalam kasus Anda.
$ ls -l foo.sh # Check file permissions of foo
-rw-r--r-- 1 rkielty users 0 2012-10-21 14:47 foo.sh
^^^
^^^ | ^^^ ^^^^^^^ ^^^^^
| | | | |
Owner| World | |
| | Name of
Group | Group
Name of
Owner
Pemilik telah membaca dan menulis akses rw tetapi - menunjukkan bahwa izin yang dapat dieksekusi hilang
The chmod
perintah perbaikan itu. (Grup dan lainnya hanya memiliki izin baca yang ditetapkan pada file, mereka tidak dapat menulis atau menjalankannya)
$ chmod +x foo.sh # The owner can set the executable permission on foo.sh
$ ls -l foo.sh # Now we see an x after the rw
-rwxr-xr-x 1 rkielty users 0 2012-10-21 14:47 foo.sh
^ ^ ^
foo.sh sekarang dapat dieksekusi sejauh menyangkut Linux.
Menggunakan hasil sudo di Command tidak ditemukan
Saat Anda menjalankan perintah menggunakan sudo, Anda menjalankannya secara efektif sebagai superuser atau root.
Alasan bahwa pengguna root tidak menemukan perintah Anda kemungkinan PATH
variabel lingkungan untuk root tidak termasuk direktori di mana foo.sh
berada . Karenanya perintah tidak ditemukan.
Variabel lingkungan PATH berisi daftar direktori yang dicari perintah. Setiap pengguna menetapkan variabel PATH mereka sendiri sesuai dengan kebutuhan mereka. Untuk melihat apa yang sudah diatur untuk dijalankan
env | grep ^PATH
Berikut ini beberapa contoh keluaran dari menjalankan env
perintah di atas pertama sebagai pengguna biasa dan kemudian sebagai pengguna root menggunakan sudo
rkielty@rkielty-laptop:~$ env | grep ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
rkielty@rkielty-laptop:~$ sudo env | grep ^PATH
[sudo] password for rkielty:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Perhatikan bahwa, walaupun serupa, dalam hal ini direktori yang terdapat dalam PATH pengguna yang tidak memiliki hak istimewa (rkielty) dan pengguna super tidak sama .
Direktori tempat foo.sh
tinggal tidak ada dalam variabel PATH dari pengguna root, karenanya perintah tidak ditemukan kesalahan.