Jika ini adalah biner normal, Anda dapat mengaturuid dengan menjalankan
# chmod u+s /path/to/binary
Sayangnya, skrip tidak dapat disetuid. (Yah, Anda bisa, tapi itu diabaikan). Alasan untuk ini adalah bahwa baris pertama dari skrip memberitahu OS apa penerjemah untuk menjalankan skrip di bawah. Misalnya jika Anda memiliki skrip dengan:
#!/bin/bash
Anda benar-benar berakhir berlari
/bin/bash /path/to/script
Tentunya, Anda membutuhkan penerjemah untuk menjadi setuid, yang kemudian berarti semua skrip akan menjadi setuid. Ini akan menjadi buruk.
Anda dapat melakukan ini dengan sudo dengan meletakkan yang berikut ini di file / etc / sudoers Anda dengan menjalankan visudo.
ALL ALL=NOPASSWD: /path/to/script
Dan sekarang setiap pengguna dapat berjalan
$ sudo /path/to/script
Ini memungkinkan mereka untuk menjalankan skrip tanpa mengetik kata sandi mereka.
Ada alternatif yang tidak memerlukan sudo dalam perintah, yang mengharuskan membuat biner setuided kecil yang mengeksekusi skrip Anda, tetapi setiap biner setuid tambahan menambah potensi masalah keamanan.
ALL
dengan nama pengguna untuk memungkinkan hanya satu sudoer yang dapat dijalankan tanpa memasukkan kata sandi.Saya perlu menyisipkan baris itu DI AKHIR / etc / sudoers:
ALL ALL = NOPASSWD: <filename>
Rupanya,%admin ALL=(ALL) ALL
penggantian yang kemudian membutuhkan kata sandi untuk pengguna admin.Tidak ada masalah keamanan yang memungkinkan skrip dijalankan sebagai root selama skrip melakukan tindakan yang ditentukan dengan baik, tidak berbahaya, diizinkan dan, jika nilai untuk parameter apa pun tidak dapat menyebabkan skrip tersebut berperilaku salah.
Tapi ada gotcha ...
Selalu gunakan path lengkap dalam nama perintah dan file. Jika Anda menulis sesuatu seperti
echo Hello world!
dimyrootscript
, seseorang mungkin menulis~/bin/echo script
danmyrootscript
akan mengeksekusi sebagai root apa pun yang ada di dalamnya./bin/echo "Hoping this will keep you safe"
:-)sumber
Secara default, anggota
wheel
grup diizinkan untuksudo
perintah apa pun sebagairoot
. Ini mungkin cara Anda menggunakansudo
sampai saat ini.Untuk mengizinkan pengguna lain, Anda harus membuat
sudoers
aturan. Sebagai contoh:Akan memungkinkan pengguna
mickey.mouse
untuk menjalankan perintah/usr/local/bin/test.sh
sebagairoot
tanpa memerlukan password yang cepat tambahan.Anda harus membaca dokumen ini untuk informasi lebih lanjut.
sumber
Gunakanchmod +s <filename>
untuk melihat bit suid. Ini berarti bahwa ketika file dieksekusi, itu berjalan dengan izin dari pemilik file (jadi chown ke root untuk membuatnya berjalan seperti itu).Namun, ini bisa SANGAT berbahaya dengan sesuatu seperti skrip bash, karena pengguna menemukan cara untuk mengubahnya, mereka dapat dengan mudah mendapatkan shell root. Pastikan itu tidak dapat ditulis oleh siapa pun kecuali root.Linux tidak memungkinkan Anda untuk mengatur cair pada skrip, untuk melakukan ini Anda harus mengkompilasinya sebagai sebuah program. Sebagai gantinya, Anda dapat menggunakan file sudoers (/ etc / sudoers), dan menambahkan baris seperti ini.
<username> ALL = NOPASSWD: /path/to/script
sumber
Alternatif lain: Anda dapat melakukan pembungkus setuid C kecil di sekitar skrip itu
Jenis suka subset Anda sendiri dari beberapa kemampuan
sudo
.sumber