Bagaimana cara membuat sudo meminta kata sandi root?

25

Ketika saya menjalankan sudosebagai pengguna biasa yang tidak terjangkau, ia meminta kata sandi saya, bukan kata sandi root. Itu sering kali nyaman, tetapi mengurangi jumlah informasi yang harus dimiliki seseorang untuk menjalankan perintah sebagai root. Jadi bagaimana saya bisa sudomeminta kata sandi root alih-alih kata sandi pengguna yang memohon?

Saya tahu itu akan dilakukan dengan satu baris /etc/sudoers, tapi saya sepertinya tidak pernah bisa dengan benar menguraikan tata bahasa BNF di halaman manual untuk mencari tahu apa yang harus ditulis.

David Z
sumber
Saya sarankan Anda membatasi perintah yang diizinkan sebagai pengguna non-root sehingga Anda tidak perlu khawatir mengekspos perintah sewenang-wenang.
Slartibartfast
@slartibartfast: tetapi kemudian apa yang terjadi ketika saya perlu menjalankan perintah sebagai root yang tidak ada dalam daftar yang disetujui sebelumnya?
David Z

Jawaban:

25

Oke, ini dia lagi sehingga Anda bisa mengatur tanda centang.

Di /etc/sudoers, tambahkan baris ini:

Defaults rootpw

untuk mengaktifkan flag rootpw, membuat sudo meminta kata sandi root.

Florian Diesch
sumber
7
Anda harus selalu menggunakan visudoperintah alih-alih mengedit /etc/sudoersfile secara manual . visudomemvalidasi file untuk memastikan itu benar sebelum menyimpan, sehingga Anda tidak terkunci dari sudo jika Anda membuat kesalahan sintaks ... askubuntu.com/a/81054/166411
Colin D Bennett
5

Anda harus mengaktifkan rootpwbendera.

Ignacio Vazquez-Abrams
sumber
Seperti yang saya katakan, saya belum dapat mengerjakan notasi BNF di halaman manual - jadi baris apa yang akan saya masukkan /etc/sudoersuntuk mengaktifkan flag ini?
David Z
2
Defaults rootpw
Florian Diesch
@Florian: whaddya tahu, itu mudah :-) Jika Anda memposting itu sebagai jawaban Anda mendapatkan tanda centang.
David Z
3

Saya tahu pertanyaan ini sudah lama, tetapi ini adalah pertanyaan paling ringkas yang saya temukan untuk kasus penggunaan ini (yang merupakan persentase kecil, benar, namun tetap sah dan membantu dalam skenario yang tepat).

Setelah menyatukan semua langkah dari berbagai sumber - termasuk beberapa jawaban untuk pertanyaan ini, langkah-langkah ini bekerja di Ubuntu-Gnome 16.04 LTS:

  1. Tetapkan kata sandi untuk root
    • Ini KRITIS untuk dilakukan PERTAMA ! (Ubuntu secara otomatis tidak memiliki kata sandi untuk pengguna ROOT karena konfigurasi keamanan standar.
    • Jika Anda tidak melakukan ini terlebih dahulu, Anda akan mengunci diri dari mengakses hak akses root. Ini dapat diatasi dengan boot dengan Live Disk, memasang hard drive, dan mengedit file sudoers, tetapi yang terbaik adalah menghindari itu.
    • Buka terminal dan masukkan: sudo passwd
    • Tetapkan kata sandi baru Anda untuk pengguna ROOT.
  2. Ubah konfigurasi SUDO untuk meminta kata sandi root
    • SUDO membutuhkan pengguna yang meminta hak akses root
    • Mengatur bendera "rootpw" sebaliknya memberitahu SUDO untuk meminta kata sandi bagi pengguna root.
    • Buka terminal dan masukkan: sudo visudo
    • Ini akan membuka file "/ etc / sudoers"
    • Setelah baris "Default" lainnya, tambahkan: Defaults rootpw
    • Simpan itu (dengan asumsi Anda menggunakan nano, yang merupakan default, ini adalah CTRL + O)
    • Tutup file (CTRL + X) & keluar dari terminal
  3. Kamu sudah selesai!

Hanya catatan singkat - Saya juga ingin memastikan bahwa pengguna root tidak dapat digunakan untuk login dari login grafis, dan juga mencari cara untuk dikecualikan. Rupanya, pengguna root dikecualikan secara default, dan tidak dapat digunakan untuk login melalui login grafis Gnome - yang merupakan hal yang sangat bagus!

SRDC
sumber
Bisakah Anda menyarankan perbaikan untuk membalikkan downvote?
SRDC
Sepertinya tidak salah.
Ruslan
1
Mungkin karena konfigurasi sederhana (dan berfungsi): root ALL=(ALL) ALL Defaults targetpw ALL ALL=(ALL) ALL Memungkinkan sudo root untuk setiap pengguna yang mengetahui kata sandi root. Secara naif mengubah dua baris terakhir ke solusi Anda Defaults rootpwmenyebabkan penguncian dari sudo. Anda juga perlu menambahkan pengguna Anda sudoersseperti itu: myusername ALL=(ALL) ALLatau memberikan hak istimewa yang serupa ke grup dan kemudian menambahkan myusernameke grup itu.
Paul Parker
1

Konfigurasi umum yang memerlukan kata sandi target (bukan yang kita inginkan):

Defaults targetpw
ALL ALL=(ALL) ALL

Baris kedua akan berbunyi seperti: "SEMUA pengguna di SEMUA host dapat menyamar sebagai (SEMUA) pengguna saat menjalankan SEMUA perintah." dan Defaults targetpwsarana yang mereka butuhkan untuk mengetahui kata sandi pengguna yang mereka tiru untuk melakukannya.

Secara naif mengubah konfigurasi sederhana ini menjadi:

Defaults rootpw

tidak akan meninggalkan pengguna atau grup mana pun dengan hak istimewa untuk menjalankan perintah sebagai pengguna lain.

Satu kemungkinan kerja adalah:

Defaults rootpw
myuser ALL=(ALL) ALL

Dalam bahasa Inggris biasa, myusersekarang memiliki kemampuan untuk menjalankan perintah SEMUA sebagai pengguna di SEMUA host, selama kata sandi root diketahui.

Kemungkinan kerja lainnya adalah:

Defaults rootpw
%sudousers ALL=(ALL) ALL

Setiap anggota sudousersgrup akan memiliki kemampuan untuk menjalankan perintah SEMUA sebagai pengguna di SEMUA host, selama kata sandi root diketahui. Untuk memungkinkan myusermenjalankan perintah sudo, sudousersperlu ditambahkan ke grup sekundernya.

su
usermod -a -G sudousers myuser
exit
Paul Parker
sumber
Penjelasan yang bagus. Lebih detail daripada langkah-demi-langkah yang saya posting (yang bekerja berdasarkan default Ubuntu).
SRDC
0

Anda bisa mematikan sudo dan menggunakannya su -c.

Nitrodist
sumber
Nyaman karena saya harus memasukkan kata sandi setiap kali menjalankannya. Kasus penggunaan di sini adalah harus menjalankan beberapa perintah sebagai root secara berurutan.
David Z
-1

Menggunakan

sudo su

akan membiarkan Anda menjalankan perintah sebanyak yang Anda inginkan secara berurutan.


sumber
2
Gagasan bagus, tetapi kecuali jika saya berubah sudountuk meminta kata sandi root, ini masih akan memungkinkan seseorang untuk mendapatkan akses root dengan menghadirkan hanya satu kata sandi (bukan kata sandi root). Jadi itu tidak benar-benar mengatasi masalah keamanan yang mendorong pertanyaan saya.
David Z
Alih-alih menggunakan kapasitas sudo untuk membatasi akses oleh pengguna, Anda mengekspos kata sandi root Anda ke sejumlah pengguna. Anda juga menghapus kemampuan mengamankan server Anda dengan menghapus kata sandi dari root.
BillThor