Pada 14,04 di sini. Saya SSH ke mesin saya, menambahkan baris berikut ke /etc/sudoers
:
myuser ALL=NOPASSWD: ALL
Dan kemudian mencoba menjalankan:
sudo mkdir /etc/blah
... dan saya dimintai kata sandi. Mengapa?!?
Saya tidak ingin dimintai kata sandi ketika melakukan operasi ini. Harap dicatat bahwa ketika saya menjalankan ls -ltr /
saya mendapatkan:
drwxr-xr-x 94 root root 4096 Jul 30 13:28 etc
Tapi saya tidak berpikir ini penting karena saya telah mengatur diri saya sebagai "sudoer", kan?
Lebih penting lagi, apa yang harus saya lakukan agar saya dapat berjalan sudo mkdir /etc/blah
sebagai pengguna saya saat ini ( myuser
) tanpa diminta kata sandi?
Inilah seluruh /etc/sudoers
file saya :
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
fizzbuzz ALL=NOPASSWD: ALL
chadmin ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
visudo
namun setiap pengeditan manual untuk file ini bukan pekerjaan copy-n-paste, saya mengetik semuanya apa adanya. Tetapi apakahvisudo
mengedit file lain selain yang ini? Mungkin itu .../etc/sudoers.d/
, mereka mungkin mengesampingkan hal-hal dari/etc/sudoers
Jawaban:
Ini adalah urutan / urutan aturan yang menyebabkan ini. Aturan terakhir mengambil preferensi.
Untuk memperbaiki masalah Anda, cukup pindahkan garis Anda,
dari
sudoers
file keIni adalah pendekatan yang lebih baik daripada mengedit
sudoers
file dengan editor teks biasa. Jika Anda secara tidak sengaja memasukkan kesalahan ke dalam file, Anda mungkin tidak lagi dapat menjalankannyasudo
. Selalu gunakanvisudo
, sehingga sintaks diperiksa dan Anda menerima peringatan tentang kesalahan!Arahan Anda tidak berfungsi karena ditimpa oleh:
Jika Anda menjalankan
groups
perintah, Anda akan melihat bahwa pengguna Anda termasuk dalam grup ini.sumber
nn-somename
, misalnya/etc/sudoers.d/20-myoverrides
Jika myuser berada dalam grup sudo , maka urutan baris ini tidak akan memberikan akses tanpa kata sandi (seperti dicatat oleh Florian Diesch), karena baris ke-3 menimpa yang pertama.
Jadi masukkan saja garis-garis ke dalam urutan ini:
Di bawah myuser penggunaan akun
sudo -l
untuk memeriksa apa hak akses myuser memiliki.sumber
Jika beberapa entri cocok dengan pengguna, yang terakhir digunakan. Jadi jika
fizzbuzz
danchadmin
adalah anggota kelompokadmin
atausudo
mereka masih akan diminta kata sandi.Letakkan dua baris di akhir
sudoers
file setelah#includedir
baris.sumber
#includedir
ini adalah entri terakhirsudoers
secara default.Idealnya jika Anda mengkustomisasi perintah apa yang dapat dijalankan melalui
sudo
Anda harus membuat perubahan ini dalam file terpisah di bawah/etc/sudoers.d/
alih-alih mengeditsudoers
file secara langsung. Anda juga harus selalu menggunakanvisudo
untuk mengedit file. Anda harus PERNAH memberikanNOPASSWD
padaALL
perintah.Contoh:
sudo visudo -f /etc/sudoers.d/mynotriskycommand
Masukkan izin pemberian baris Anda:
myuser ALL= NOPASSWD: /bin/mkdir
Kemudian simpan dan keluar dan
visudo
akan memperingatkan Anda jika Anda memiliki kesalahan sintaksis.Anda dapat berlari
sudo -l
untuk melihat izin yang telah diberikan oleh pengguna Anda, jika adaNOPASSWD
perintah khusus pengguna yang muncul SEBELUM%groupyouarein ALL=(ALL) ALL
perintah apa pun dalam output, Anda akan dimintai kata sandi.Jika Anda menemukan diri Anda membuat banyak file sudoers.d ini, maka mungkin Anda ingin membuatnya bernama per pengguna sehingga lebih mudah untuk divisualisasikan. Perlu diingat bahwa urutan NAMA FILE dan ATURAN dalam file sangat penting, yang TERAKHIR yang dimuat menang, baik LEBIH atau KURANG permisif daripada entri sebelumnya.
Coba jalankan
printf '%s\n' {{0..99},{A-Z},{a-z}} | sort
danprintf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort
untuk melihat apakah bahasa Anda saat ini mencetakAaBbCc
dll atauABC
kemudianabc
untuk menentukan apa awalan huruf "terakhir" terbaik yang akan digunakan.sumber