Bagaimana cara mengkonfigurasi file sudoers dengan benar, pada debian wheezy?

10

Saya telah melihat banyak posting blog yang mengatakan, itu sudah cukup untuk dilakukan

aptitude install sudo
su root
adduser USERNAME sudo

Tapi itu hanya melindungi aptitude, dengan kata lain:

  • aptitude install sendmailakan meminta kata sandi, Anda harus sudomenjalankanaptitude

  • apt-get install sendmailtidak akan meminta kata sandi, tidak sudodiperlukan hak istimewa

  • Jika Anda mengedit file yang dilindungi, seperti file di etcdalamnya tidak akan meminta kata sandi, tidak sudodiperlukan hak istimewa

  • Anda dapat menjalankan dan menghentikan layanan seperti apache, tidak akan meminta kata sandi, tidak sudodiperlukan hak istimewa

Bagaimana cara memperbaikinya? Ini adalah file sudoers 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:$

# Host alias specification

# User alias specification

# Cmnd alias specification

Ini adalah output dari sudo -l:

Matching Defaults entries for root on this host:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User root may run the following commands on this host:
    (ALL : ALL) ALL
    (ALL : ALL) ALL
Lynob
sumber
3
Setelah itu su root, Anda masuk sebagai rootpengguna, sehingga Anda memiliki akses penuh ke semuanya. Untuk kembali menjadi penggunaan biasa yang harus digunakan sudountuk operasi istimewa, logout dari shell berjalan sebagai root.
depquid
Saya baru di Linux tetapi kata Debian wiki - adduser username sudo wiki.debian.org/sudo
AntiCZ

Jawaban:

16

Anda belum menambahkan aturan sudo, jadi Anda tidak bisa menggunakan sudo untuk apa pun.

Perintah adduser USERNAME sudomenambahkan pengguna yang ditentukan ke grup yang dipanggil sudo. Grup dengan nama itu harus ada; buat dengan addgroup sudojika tidak. Setelah menambahkan pengguna ke grup, pengguna harus keluar dan kembali agar keanggotaan grup berlaku.

sudobukan nama grup khusus. Ini adalah konvensi untuk memungkinkan pengguna dalam grup yang dipanggil sudountuk menjalankan perintah sebagai root melalui sudoutilitas. Ini membutuhkan baris berikut dalam sudoersfile:

%sudo ALL = (ALL) ALL

Jalankan visudountuk mengedit file sudoers, jangan pernah mengeditnya secara langsung.

Saya tidak tahu mengapa Anda percaya bahwa "itu hanya melindungi bakat". Tidak ada yang istimewa tentang bakat. Setelah Anda mengizinkan pengguna untuk menjalankan perintah sebagai root, pengguna itu dapat menjalankan sudo aptitude …atau sudo apt-get …atau sudo service …, atau sudoeditmengedit file yang memerlukan izin root untuk mengedit. Berada di file sudoers tidak secara langsung mengubah hak pengguna Anda, yang dilakukannya adalah memungkinkan Anda menjalankan sudountuk menjalankan perintah sebagai root. Perintah dijalankan sebagai root hanya ketika Anda menjalankannya sudo. Beberapa program dapat melakukannya secara otomatis, terutama program GUI di mana antarmuka pengguna berjalan tanpa hak istimewa dan hanya backend yang berjalan sebagai root, tetapi perintah yang dijalankan sebagai root selalu dijalankan oleh sudo.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Dia telah dijalankan sudo -lsebagai root. Bahkan jika ada definisi yang berguna untuk pengguna, mereka tidak akan ditampilkan. Jadi tebakan Anda "Anda belum menambahkan aturan sudo" mungkin salah.
Hauke ​​Laging
@ HaukeLaging Saya tidak mengerti komentar Anda. "Anda belum menambahkan aturan sudo" bukan dugaan: sudoersfile ada dalam pertanyaan.
Gilles 'SO- stop being evil'
Saya hampir mengalami depresi, menyadari bahwa saya terlalu fokus pada sudo -loutput tetapi untungnya ... Tampaknya konten pertanyaan tidak boleh seluruh file karena tidak konsisten dengan output. Setidaknya sudoversi saya tidak mengklaim "Root pengguna dapat menjalankan perintah berikut" dengan sudoerstanpa definisi perintah (seperti yang ada di pertanyaan).
Hauke ​​Laging
@ HaukeLaging Anda benar, saya memeriksa dengan wheezy dan memang sudo -lhanya mengatakan "User root tidak diizinkan menjalankan sudo di darkstar.". Dan sudogrup tersebut ada dalam file sudoers secara default saat mengi. Entri yang diperlukan mungkin telah dipindahkan ke file di bawah /etc/sudoers.d. Bagaimanapun, apa pun file sudoers berisi, itu tidak akan melakukan apa yang diasumsikan Fischer.
Gilles 'SO- stop being evil'
4

Apa yang mungkin terjadi adalah: sudo sedang caching kata sandi Anda. Jadi, setelah Anda menyelesaikan implementasi sudo dengan benar di sistem Anda, Anda harus memasukkan kata sandi untuk perintah pertama , dan setelah itu di-cache untuk beberapa waktu. Jika itu terjadi dan Anda menjalankan urutan

sudo aptitude install sendmail
sudo apt-get install sendmail

Maka Anda harus memberikan kata sandi pada perintah pertama, tetapi tidak pada perintah kedua (setidaknya saat Anda masih dalam batas waktu). Ini mungkin terasa seperti hanya melindungi perintah pertama, tetapi bukan yang kedua. Tanpa informasi lebih lanjut (transkrip shell lengkap), tidak ada cara untuk memberi tahu ...

Josef
sumber
Iya. Yang satu tidak mengecualikan yang lain. Jawaban yang benar tidak menjelaskan bagaimana mengatur sudo dengan benar, dan dalam arti itu, ia menjawab pertanyaan. Itu tidak menjelaskan mengapa, dalam kata-kata pertanyaan, "itu hanya melindungi bakat". Gilles menulis sendiri: "Saya tidak tahu mengapa Anda percaya bahwa" itu hanya melindungi bakat "". Seperti yang saya katakan, untuk benar-benar memahami fenomena itu, diperlukan lebih banyak informasi. Saya pikir downvote agak keras mengingat bahwa jawaban saya secara faktual benar, menjawab pertanyaan awal dan mengisi celah dalam jawaban yang ada.
Josef
Ide bagus, ini mungkin menjadi sumber kebingungan Fischer.
Gilles 'SO- stop being evil'
0

Jika Anda mengikuti jawaban di atas, Anda berada di jalan yang benar. Paling tidak di Debian Jessie saya, saya membuat tautan lunak ke / usr / bin dari perintah di path / sbin. Sebagai contoh: / sbin / ifup, saya meletakkan tautan lunak (ln -s) ke / usr / bin dan saya dapat menggunakannya.

Hal penting lainnya adalah menempatkan NOPASSWD seperti ini:

User_Alias NET = goviedo
Cmnd_Alias ETH = /sbin/ifup
NET ALL = NOPASSWD:ETH
Gonzalo Oviedo
sumber