Bagaimana ubuntu
pengguna pada gambar AWS untuk Ubuntu Server 12.04 tidak memiliki kata sandi sudo
untuk semua perintah saat tidak ada konfigurasi untuknya /etc/sudoers
?
Saya menggunakan server Ubuntu 12.04 di Amazon. Saya ingin menambahkan pengguna baru yang memiliki perilaku yang sama dengan pengguna default Ubuntu. Secara khusus saya ingin tanpa kata sandi sudo
untuk pengguna baru ini.
Jadi saya telah menambahkan pengguna baru dan mulai mengedit /etc/sudoers
(menggunakan visudo tentu saja). Dari membaca file itu sepertinya default ubuntu
pengguna mendapatkan itu tanpa kata sandi sudo
dari menjadi anggota admin
kelompok. Jadi saya menambahkan pengguna baru saya untuk itu. Yang tidak berfungsi. Lalu saya mencoba menambahkan NOPASSWD
direktif ke sudoers
. Yang juga tidak berfungsi.
Bagaimanapun, sekarang aku hanya ingin tahu. Bagaimana ubuntu
pengguna mendapatkan hak akses tanpa kata sandi jika mereka tidak didefinisikan /etc/sudoers
. Apa mekanisme yang memungkinkan ini?
Oke, saya telah menemukan jawabannya jadi mungkin juga taruh di sini untuk kelengkapan. Pada akhir /etc/sudoers
ada yang saya pikir hanya komentar:
#includedir /etc/sudoers.d
Namun ini sebenarnya termasuk isi direktori itu. Di dalamnya ada file
/etc/sudoers.d/90-cloudimg-ubuntu
. Yang memiliki konten yang diharapkan
# ubuntu user is default user in cloud-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL
Jadi itulah letak konfigurasi sudo untuk pengguna ubuntu default.
Anda harus mengedit file ini menggunakan visudo. Perintah berikut akan membiarkan Anda mengedit file yang benar dengan visudo.
sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu
Dan tambahkan baris seperti:
aychedee ALL=(ALL) NOPASSWD:ALL
Pada akhirnya.
Saya menemukan bahwa hal yang paling lurus ke depan untuk dilakukan, agar mudah mereplikasi perilaku ini di beberapa server, adalah sebagai berikut:
sudo visudo
Ubah baris ini:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
ke baris ini:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD:ALL
Dan pindahkan itu dibawah garis ini:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
Anda seharusnya sudah memiliki ini:
# 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
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD:ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
kemudian untuk setiap pengguna yang membutuhkan akses sudo DENGAN kata sandi:
sudo adduser <user> sudo
dan untuk setiap pengguna yang membutuhkan akses sudo TANPA kata sandi:
sudo adduser <user> admin
dan akhirnya, jalankan ini:
sudo service sudo restart
Dan itu dia!
Edit: Anda mungkin harus menambahkan grup admin karena saya tidak menganggapnya ada secara default.
sudo groupadd admin
Anda juga dapat menambahkan AWS default ubuntu
pengguna ke admin
grup melalui perintah ini:
sudo usermod ubuntu -g admin
Jawaban singkat tanpa menggunakan editor apa pun (diuji pada bash, sangat berisiko untuk dijalankan pada host jarak jauh).
Konfigurasikan sudo agar berfungsi tanpa kata sandi untuk pengguna saat ini:
echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers
Periksa hasil edit dengan:
sudo visudo -c
Verifikasi apakah Anda dapat menggunakan sudo tanpa kata sandi:
sudo cat /etc/sudoers | grep "$USER"
... atau coba saja dengan:
sudo <apa saja>