Saya ingin pengguna baru dapat menjalankan sudo
tanpa permintaan kata sandi, karena pengguna ini memiliki crontab
sebuah .sh
yang menggunakan sudo
untuk beberapa perintah.
Saya membuat pengguna baru di server ubuntu saya 16.04 x64
adduser my-user sudo
gpasswd -a my-user sudo
Kemudian gunakan visuo
saya menambahkan baris ini, berdasarkan pertanyaan ini
my-user ALL=(ALL) NOPASSWD : ALL
Kemudian reboot
Setelah reboot saya login menggunakan my-user
dan mencoba melakukan sudo clear, tetapi menanyakan kata sandi sudo kepada saya.
CATATAN :Saya telah menambahkan crontab menggunakan crontab -e my-user
jadi saya kira skrip saya dieksekusi sebagai my-user
. Faktanya, skrip crontabbed mogok memberi tahu saya di log tentang sudo
permintaan kata sandi. Saya benar-benar perlu menjalankan skrip dengan cara ini untuk dapat membuat file dengan my-suer
sebagai pemilik.
Tolong beri tahu saya jika beberapa langkah/baris tidak diperlukan dan bagaimana membuat my-user
able untuk mengeksekusi sudo
tanpa permintaan kata sandi.
Terima kasih
PS:Saya melihat pertanyaan ini, tetapi saya tidak dapat membuatnya berfungsi sehingga saya memerlukan penjelasan yang lebih tepat, karena situasi saya berbeda:saya menjalankan skrip crontab dan saya membutuhkannya jangan meminta kata sandi Sudo
Jawaban yang Diterima:
Terkadang menjalankan proses dari crontab
root dapat menyebabkan masalah dengan kepemilikan file awal dan rwx
mode; itu mungkin tidak disimpan dengan benar.
Bagaimanapun:
1) untuk membuat pengguna baru, sederhanakan:
$ sudo deluser my-user # if "my-user" is a regular user
$ adduser my-user
$ sudo gpasswd -a my-user sudo
2) untuk memasukkan entri baru dengan NOPASSWD
tag di sudoers atau dalam file (mis. /etc/sudoers.d/60_my-user_rules
), buat tanda titik dua pada tag, yaitu NOPASSWD:
Saya belum pernah melihatnya dengan spasi dan aturan tahun yang diselingi menjadi:
my-user my-host = NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]
Menambahkan (ALL)
sebelum NOPASSWD:
adalah opsional karena aturan default ke (ALL:ALL)
omong-omong. Namun Anda mungkin ingin tidak hanya menjalankan cmd/skrip Anda dengan hak akses root tetapi juga menjalankannya sebagai pengguna tertentu (spec-user
) atau sebagai anggota grup tertentu (spec-group
) atau keduanya. Dalam hal ini, aturannya menjadi:
my-user my-host = ([spec-user][:spec-group]) NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]
Ini sebenarnya akan membatasi disposisi Sudo tanpa kata sandi untuk satu pengguna, satu host, dan satu perintah. Anda dapat mengeraskan aturan ini dengan menentukan parameter opsional untuk perintah itu. Dalam hal ini aturan hanya akan berlaku untuk itu/parameter yang tepat itu.
Untuk skrip, Anda dapat lebih memperkuat aturan ini dengan memastikan bahwa aturan hanya berlaku jika skrip tidak diubah dengan cara apa pun . Ini adalah cara untuk menghindari pembajakan skrip. Ini dilakukan melalui cmd-aliasing dan menentukan SHA-sums di /etc/sudoers.d/60_my-user_rules
.
HTH. Silakan laporkan jika Anda mengalami masalah dengan jawaban itu.
Terkait:Lengkapi cadangan iPhone tanpa iTunes?