Halaman ini memberikan tips tentang cara menggunakan utilitas command line sudo
, mengelola
plugin sudoers
, dan mencegah atau memperbaiki masalah yang muncul.
Penyebab masalah
Selama setiap eksekusi perintah sudo
, proses berikut berlangsung
untuk memvalidasi file sudoers
:
- Sintaks diperiksa keakuratannya.
- Konten tersebut dianalisis untuk mengecualikan beberapa error logika.
- Kepemilikan dan izin diperiksa.
Validasi file sudoers
mungkin gagal karena salah satu error
berikut:
Error sintaksis
Anda harus mengikuti aturan sintaksis tertentu saat membuat perubahan pada file
sudoers
. Setiap penyimpangan dari sintaksis ini, termasuk, tetapi tidak terbatas pada,
karakter yang hilang atau tambahan, atau koma yang tidak sesuai, dapat membuat file
tidak valid. File yang tidak valid membuat utilitas sudo
tidak dapat
digunakan.
Solusi
Solusinya adalah menggunakan utilitas visudo
untuk mengedit file sudoers
. Utilitas
ini memvalidasi konten file sebelum menyimpan dan memberi tahu jika ada masalah. Utilitas
visudo
dibuat untuk mengedit file dengan cara yang aman.
Contoh berikut menunjukkan contoh sintaksis yang benar dan salah:
Sintaksis benar
user ALL=(ALL) ALL
Sintaksis salah
user ALL=(ALL), ALL
Contoh error sintaksis
$ sudo useradd username
/etc/sudoers:20:17: syntax error
user ALL=(ALL), ALL
^
Error logika
Error jenis ini dapat disebabkan oleh salah satu hal berikut:
- Kesalahpahaman tentang prinsip-prinsip plugin
sudoers
. - Penyimpangan dari sintaksis yang benar.
Namun, error logis tidak dikenali selama validasi, karena tidak melanggar aturan sintaksis sehingga sulit dideteksi.
Solusi
Anda harus membaca dokumentasi resmi dengan cermat dan mematuhi prinsipnya saat mengedit file.
Google juga merekomendasikan agar Anda menggunakan utilitas visudo
untuk mengedit
file sudoers
, karena utilitas ini dapat mendeteksi beberapa jenis error logika, seperti:
- Alias yang tidak ditentukan atau tidak digunakan
- Referensi siklik
- Entri duplikat
Jika ada masalah yang terdeteksi, Anda akan melihat pesan peringatan.
Contoh berikut menunjukkan contoh yang benar dan salah secara logis:
Benar secara logis
barbara ALL=(ALL:ALL) /usr/bin/ls
Salah secara logis
barbara ALL=(4LL:ALL) /usr/bin/ls
^
barbara ALL=(ALL;ALL) /usr/bin/ls
^
bar6ara ALL=(ALL:ALL) /usr/bin/1s
^ ^
Izin salah
Selain error yang disebabkan oleh konten file sudoers
, izin file
yang berlebihan atau kepemilikan yang salah juga dapat menyebabkan kegagalan
utilitas sudo
.
Solusi
Anda akan melihat deskripsi error ini dalam output perintah sudo
yang gagal. Baca deskripsi pesan error dan buat koreksi yang
diperlukan.
Berikut adalah contoh kepemilikan dan izin file yang benar
$ ls -l /etc/sudoers
-r--r----- 1 root root 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
Contoh berikut menunjukkan error yang ditampilkan ketika ada izin redundan untuk grup izin semua pengguna:
$ ls -l /etc/sudoers
-r--r---w- 1 root root 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: error initializing audit plugin sudoers_audit
Contoh berikut menunjukkan error yang
ditampilkan untuk kepemilikan yang salah. Dalam contoh ini, pengguna dengan ID
yang bukan 0
(atau pengguna yang bukan root
) adalah pemilik file:
$ ls -l /etc/sudoers
-r--r----- 1 user user 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: no valid sudoers sources found, quitting
sudo: error initializing audit plugin sudoers_audit
Untuk mengetahui informasi selengkapnya tentang konfigurasi file sudoers
, baca
Panduan Sudoers.
Untuk mempelajari cara mengelola dan menggunakan editor visudo
, baca
Panduan Visudo.
Konsekuensi masalah
Masalah dalam file sudoers
menyebabkan efek negatif dan dapat memengaruhi
fungsi seluruh sistem.
Perintah
sudo
tidak lagi berfungsi.Ini adalah konsekuensi paling mudah terlihat dari masalah dalam file
sudoers
. Konsekuensi dari hal ini adalah ketidakmampuan untuk menggunakan hak istimewa yang ditingkatkan bagi pengguna, yang memblokir aktivitas mereka di server.Namun, konsekuensi yang lebih merusak dan tidak dapat diprediksi adalah kegagalan aplikasi yang mengandalkan perintah
sudo
. Dalam beberapa kasus, hal ini dapat menyebabkan aplikasi gagal sepenuhnya, sehingga menyebabkan perilaku yang tidak terduga, error, atau kehilangan data. Contoh lainnya adalah saat perintahsudo
dipanggil oleh aplikasi selama urutan booting OS dan gagal. Hal ini dapat menyebabkan kegagalan OS atau menyebabkan urutan booting menjadi macet.Kemungkinan akses yang tidak sah ke sistem.
Konsekuensi berisiko lainnya adalah masalah dalam file
sudoers
dapat menyebabkan akses tidak sah ke sistem. Hal ini dapat terjadi karena error logika, saat aturan dalam filesudoers
memberikan izin yang berlebihan kepada beberapa pengguna atau grup.Hal ini juga dapat terjadi karena pemilik sistem menonaktifkan atau melemahkan pertahanan sistem untuk sementara agar dapat login dan memperbaiki masalah.
Pemulihan jika terjadi masalah
Jika Anda kehilangan hak istimewa pengguna yang ditingkatkan atau tidak dapat menggunakan perintah sudo
karena
ada masalah pada file sudoers
, gunakan akun superuser untuk pemulihan.
Dalam sistem operasi yang mirip dengan Unix, superuser adalah akun pengguna khusus dengan ID
sama dengan 0, yang biasanya disebut root
. Superuser memiliki akses penuh ke
resource sistem, dan dapat melakukan tugas administratif apa pun tanpa batasan.
Meskipun berinteraksi dengan OS atas nama superuser umumnya dianggap
tidak aman, interaksi ini mungkin satu-satunya opsi untuk tugas tertentu seperti pemulihan
file sudoers
.
Login secara langsung sebagai superuser akan menimbulkan risiko terhadap OS. Untuk menghindari risiko ini, Google merekomendasikan agar Anda menggunakan fungsi skrip startup, karena skrip ini dieksekusi atas nama superuser.
Baca skrip startup Compute Engine selengkapnya.
Untuk memulihkan file sudoers
dengan skrip startup, lakukan hal berikut:
Buat salinan cadangan skrip startup saat ini jika sudah digunakan. Pendekatan pencadangan bergantung pada cara skrip startup dikonfigurasi.
startup-script
Jika konten skrip ditetapkan langsung di nilai metadata, Anda dapat menyalin konten skrip ke bucket Cloud Storage, file lokal, atau penyimpanan pribadi sementara lainnya.
startup-script-url
Jika konten skrip sudah berada di penyimpanan jarak jauh dan alamat URL-nya digunakan, Anda dapat menghapus sementara kunci metadata
startup-script-url
untuk menonaktifkan skrip startup saat ini.Perbarui skrip startup dengan urutan perintah berikut:
mv /etc/sudoers /etc/sudoers.backup.$(date +"%s") && echo "%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers && chown 0:0 /etc/sudoers && chmod 0440 /etc/sudoers
Baca selengkapnya tentang fungsi perintah tersebut
-
mv /etc/sudoers /etc/sudoers.backup.$(date +"%s")
-
Perintah ini akan membuat salinan file
/etc/sudoers
dengan nama yang berbeda dan menghapus file aslinya. Nama file baru berisi stempel waktu di bagian akhir untuk keunikan (misalnya,sudoers.backup.1672527600
). -
echo "%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers
-
Perintah ini membuat file
/etc/sudoers
yang sebelumnya dihapus dengan satu aturan yang mengizinkan pengguna Google Cloud yang diberi otorisasi dengan akses ke VM untuk menjalankan perintah apa pun atas nama pengguna sistem mana pun. Aturan ini selalu ada secara default dalam file tambahan/etc/sudoers.d/google_sudoers
. -
chown 0:0 /etc/sudoers
-
Perintah ini menetapkan pemilik file
/etc/sudoers
ke pengguna yang ID-nya adalah0
dan grup pemilik ke grup yang ID-nya adalah0
. -
chmod 0440 /etc/sudoers
-
Perintah ini menetapkan izin bagi file
/etc/sudoers
ke hanya baca dan hanya mengizinkan pemilik dan grup pemilik untuk membaca file tersebut.
-
Hentikan VM, jika sedang berjalan. Mulai ulang VM untuk memicu eksekusi skrip startup.
Hubungkan ke VM dan edit file
sudoers
yang rusak untuk memulihkannya.sudo visudo /etc/sudoers.backup.TIMESTAMP
Simpan perubahan dan ganti file
/etc/sudoers
saat ini dengan file yang baru saja Anda edit.sudo mv /etc/sudoers.backup.TIMESTAMP /etc/sudoers
Pastikan masalah awal terkait penggunaan perintah
sudo
dan hak istimewa yang ditingkatkan telah diperbaiki.Hapus skrip startup sementara dan pulihkan yang asli jika digunakan.
Apa Langkah Selanjutnya?
- Pelajari cara memulihkan VM yang tidak dapat diakses atau rusak.
- Pelajari cara menambahkan disk yang sudah ada ke VM lain.