Saya perlu mengedit /etc/sudoers
dari skrip untuk menambah / menghapus barang dari daftar putih.
Dengan asumsi saya memiliki perintah yang akan berfungsi pada file normal, bagaimana saya bisa menerapkannya /etc/sudoers
?
Dapatkah saya menyalin dan memodifikasinya, kemudian visudo
mengganti yang asli dengan salinan yang dimodifikasi? Dengan menyediakan skrip saya sendiri di $EDITOR
?
Atau bisakah saya menggunakan kunci yang sama dan cp
?
Pertanyaannya lebih tentang masalah potensial daripada hanya menemukan sesuatu yang berhasil.
echo "$USER ALL=NOPASSWD:/usr/bin/rsync" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/rsync')
.echo "$CONFIGLINE" | (EDITOR="tee -a" visudo)
-a
bendera keEDITOR="tee"
: ini akan menambahkan baris ke file, tidak hanya menimpa baris pertama. Saya tidak mengerti perbedaannya pada awalnya dan saya tidak tahu cara untuk menambahkannya. Saya harap saya dapat menemukan beberapa orang suatu saat dengan menunjukkannya secara langsung ;-)Gunakan visudo untuk ini dengan editor khusus. Ini menyelesaikan semua kondisi balapan dan masalah "hack" dengan solusi Brian.
Skrip ini akan menambahkan baris "# Dummy change to sudoers" di akhir sudoers. Tidak ada peretasan dan tidak ada kondisi balapan.
Versi beranotasi yang menjelaskan cara kerjanya:
sumber
--enable-env-editor
, jika tidak maka hanya akan menggunakan menghormati variabel editor jika itu adalah salah satu dari sekumpulan kecil nilai yang diketahui.sudo -E
dari perintah pertama.Anda harus mengedit file sementara, lalu gunakan visudo -c -f sudoers.temp untuk mengonfirmasi bahwa perubahan tersebut valid dan kemudian menyalinnya di atas / etc / sudoers
sumber
Di Debian dan turunannya, Anda dapat memasukkan skrip kustom ke dalam
/etc/sudoers.d/
direktori, dengan hak0440
- untuk info lebih lanjut lihat /etc/sudoers.d/README .Mungkin bisa membantu.
sumber
visudo seharusnya menjadi antarmuka manusia untuk mengedit
/etc/sudoers
. Anda dapat mencapai hal yang sama dengan mengganti file secara langsung, tetapi Anda harus berhati-hati dengan pengeditan bersamaan dan validasi sintaks. Perhatikanr--r-----
izinnya.sumber
Jika Anda
sudo
mengizinkan menambahkan entri dalam/etc/sudoers.d
, maka Anda dapat menggunakan jawaban ini dengan @ dragon788:https://superuser.com/a/1027257/26022
Pada dasarnya Anda menggunakan
visudo
untuk memverifikasi file sebelum Anda menyalinnya/etc/sudoers.d
, sehingga Anda dapat yakin Anda tidak membobolsudo
siapa pun.Ini memeriksanya dan mengembalikan sukses (0) jika valid, sehingga Anda dapat menggunakannya dengan
if
,&&
dan operasi boolean skrip lainnya. Setelah Anda memvalidasi, cukup salin ke/etc/sudoers.d
dan itu akan berfungsi. Pastikan itu dimiliki oleh root dan tidak dapat ditulis oleh orang lain.sumber
Siapkan editor khusus. Pada dasarnya ini akan menjadi skrip yang menerima nama file (dalam hal ini /etc/sudoers.tmp), dan memodifikasi serta menyimpannya di tempatnya. Jadi Anda bisa menulis ke file itu. Setelah selesai, keluar dari skrip, dan visudo akan mengurus modifikasi file sudoers yang sebenarnya untuk Anda.
sumber
#!/bin/sh; echo "# my changes to sudoers" >> $1; exit 0
Sepertinya berhasil untuk saya.Banyak jawaban, telah bekerja dengan sudo untuk yonks tetapi tidak perlu mengotomatiskan konfigurasi penyiapan sampai sekarang. Saya menggunakan campuran dari beberapa jawaban di atas, menulis baris konfigurasi saya ke /etc/sudoers.d include location jadi saya tidak perlu memodifikasi file sudoers utama, lalu memeriksa file itu untuk sintaks, contoh sederhana di bawah ini:
Tulis baris Anda ke sudoers include file:
Periksa apakah sudoers Anda termasuk file lulus pemeriksaan sintaksis visudo:
sumber
Hanya untuk menambahkan opsi lebih lanjut ke jawaban di atas, jika kondisi balapan bukan masalah utama, maka perintah berikut dapat digunakan untuk menghindari penyalinan file yang dimodifikasi secara manual ke
/etc/sudoers
Ini akan memastikan bahwa file baru divalidasi dan diinstal dengan benar dengan pembaruan izin.
Perhatikan bahwa jika ada kesalahan pada
/tmp/sudoers.new
file makavisudo
akan meminta input pengguna sehingga disarankan untuk memeriksanyavisudo -c -f /tmp/sudoers.new
terlebih dahulu.sumber
Menurut saya solusi paling mudah adalah:
Buat skrip addudoers.sh
dan sebut dengan pengguna yang ingin Anda tambahkan sebagai:
Untuk penjelasan lengkapnya lihat jawaban ini: Menambahkan pengguna ke sudoers melalui skrip shell
Salam!
sumber
Cobalah untuk mengulanginya. Anda harus menjalankannya di subkulit. Contoh:
sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"
sumber
Ini berhasil untuk saya berdasarkan apa yang diposting orang lain di sini. Ketika saya menggunakan skrip orang lain, itu akan terbuka untuk saya tetapi tidak akan mengedit. Ini membuat pengeditan yang saya perlukan untuk mengizinkan semua pengguna, termasuk pengguna standar, menginstal java 7u17 untuk safari / firefox.
Ini menambahkan% semua orang blah blah blah ke bagian bawah file sudoers. Saya harus menjalankan skrip seperti ini.
Semoga berhasil: D
sumber