Saya memiliki baris skrip ini dari ISP saya:
sudo bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
Ini berfungsi jika saya menempelkan baris demi baris ke Terminal. Saya ingin membuat file * .command dan menjalankannya dengan mengklik dua kali. Tapi yang saya dapatkan hanyalah bisikan kata sandi dan kemudian kosongkan jendela bash. File "opsi" yang dihasilkan kosong.
Saya mencoba ini:
#!/bin/bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
Saya mendapat:
/ etc / ppp / options: Izin ditolak
Saya pikir saya perlu menggunakan beberapa perintah untuk mendapatkan hak akses root dari dalam bash.
Jawaban:
Ambil skrip yang Anda buat:
Simpan di direktori home Anda, atau direktori 'scripts' di dalam direktori home Anda, seperti l2tp.sh. Izinkan itu dijalankan (tulis perintah ini di Terminal):
Untuk menjalankan file menggunakan sudo (hak akses root):
Metode # 1. Dalam jenis Terminal:
Metode # 2. Buat file run_l2tp.command dengan konten ini:
Izinkan itu dijalankan:
Ketika Anda mengklik dua kali run_l2tp.command dan memasukkan kata sandi file l2tp.sh akan dieksekusi dengan hak akses root.
Beberapa catatan:
sumber
Simpan ini:
ke Desktop Anda dalam file bernama
script.sh
.Buka jendela Terminal dan ketik:
Masukkan kata sandi Anda ketika diminta dan semua perintah dalam file akan berjalan dengan hak pengguna super.
sumber
Jika untuk tujuan keamanan, Anda tidak ingin pengguna sistem Anda dapat menjalankan skrip, tetapi Anda ingin diminta kata sandi administratif, solusi alternatifnya adalah menyimpan skrip shell dan kemudian menggunakan program Editor AppleScript untuk membuat AppleScript.
AppleScript akan menjadi one-liner, kata
do shell script «your script's name here» with administrator privileges
. Simpan skrip itu sebagai Aplikasi. Kemudian, ketika Anda mengkliknya, ia akan meminta Anda kata sandi administrator, kemudian jalankan skrip shell dengan hak istimewa administrator.Jelas, ganti
«your script's name here»
dengan jalur ke skrip Anda.sumber
Masalahnya adalah ketika Anda melakukannya dari baris perintah, apa yang Anda lakukan mulai di
bash
bawahsudo
, dan kemudian mengirim dua perintah berikutnyabash
, bukan shell asli. (pertanda bahwa Anda perluexit
dua kali)Saat Anda melakukannya dalam skrip,
bash
perintah tidak pernah keluar, jadi dua perintah berikutnya tidak pernah berjalan.Ini tidak seanggun solusi AppleScript, tetapi jika Anda akan melakukan ini sebagai skrip dari baris perintah, yang setara adalah:
Jika kita tidak memerlukan pengalihan io (
>>
bit), kita bisa langsung memanggil perintah melaluisudo
tanpa perlusudo sh -c
trik. (dan perhatikan bahwa saya harus mengutip argumensh -c
agar tidak menjalankan echo sebagai root, tetapi file menambahkan sebagai pengguna asli.)Ini akan berfungsi sebagai
.command
file dari Finder, tetapi akan memunculkan jendela terminal, menanyakan kata sandi Anda, dan jika dimasukkan dengan benar, akan menjalankan perintah. (dengan asumsi Anda belum diautentikasi untuksudo
... jika sudah, itu akan berjalan tanpa diminta)sumber