Saya ingin perintah untuk membuat daftar semua pengguna yang memiliki hak akses root yaitu sudo?
Misalkan saya adalah pengguna sudoer. Bagaimana saya bisa tahu semua pengguna sudoer lainnya?
command-line
sudo
Maythux
sumber
sumber
sudo
izin dan siapa yang tidak .... jika pengguna dalamsudo
grup tetapisudoers
file tersebut tidak disebutkan untuksudo
grup, kemudian?Jawaban:
Jika Anda hanya perlu membuat daftar sudoer yang tercantum dalam
sudo
grup, saya pikir cara terbaik untuk melakukannya adalah dengan menjalankan perintah ini (yang seharusnya lebih ringan secara komputasi daripada perintah lain dalam jawaban ini):Juga seperti yang disarankan dalam komentar oleh muru, format entri
/etc/group
dapat dengan mudah ditangani olehcut
:Juga lagi seperti yang disarankan dalam komentar oleh muru, seseorang dapat menggunakan
getent
di tempatgrep
:Salah satu dari perintah ini akan mencetak semua pengguna yang terdaftar dalam
sudo
grup di/etc/group
(jika ada).Rincian perintah # 1:
grep
: Mencetak semua baris yang cocok dengan regex dalam file-P
: membuatgrep
pertandingan dengan regex gaya Perlo
: membuatgrep
hanya mencetak string yang cocok'^sudo.+:\K.*$'
: membuatgrep
cocokkan dengan regex antara tanda kutipRegex # 1 kerusakan:
^
: mulai dari garis.+
: satu atau lebih karakter\K
: buang pertandingan sebelumnya.*
: nol atau lebih karakter$
: akhir barisRincian perintah # 2:
grep
: Mencetak semua baris yang cocok dengan regex dalam file'^sudo.+:\K.*$'
: membuatgrep
cocokkan dengan regex antara tanda kutipcut
: Mencetak hanya bagian tertentu dari setiap baris dalam file-d:
: menjadikancut
interpretasikan:
sebagai pembatas bidang-f4
: membuatcut
cetak hanya bidang keempatRincian Regex # 2:
^
: mulai dari garis.*
: nol atau lebih karakter$
: akhir barissumber
getent group sudo | cut -d: -f4
, atau gunakan awk, tetapi ingatlah bahwa grup dan passwd memiliki format tetap, dengan pembatas.getent group
- Anda tidak perlu grep sama sekali.getent group foo
sepertigrep foo /etc/group
, tetapi lebih mampu.getent
sama sekali, ada pemikiran tentang bagaimanagrep
dangetent
membandingkan komputasi? Apakah lebih ringan untuk dijalankangetent
?sudo
grup. Beberapa unix memiliki grup lain sepertiwheel
. Jawaban oleh @muru akan mencakup semua sudoer, apa pun kelompoknya.Seperti yang dinyatakan di sini saya menganggap cara paling sederhana untuk menemukan
-l
&-U
opsi bersama-sama, cukup ketikusers
itu akan daftar misalnya:John
lalu:Jika pengguna memiliki
sudo
akses, itu akan mencetak tingkatsudo
akses untuk pengguna tertentu:Jika pengguna tidak memiliki akses sudo, itu akan mencetak bahwa pengguna tidak diizinkan berjalan
sudo
di localhost:sumber
for u in $(awk -F'[/:]' '{if($3>=1000&&$3!=65534) print $1}' /etc/passwd); do sudo -lU "$u" ; done
. hack cepat tidak ada yang dijamin :)"%domain [email protected]" ALL=(ALL) ALL
maka itu berfungsi. Anda menghemat banyak waktu, karena saya tidak tahu ini juga berfungsi untuk pengguna non-lokal.Seperti yang telah dinyatakan, jawabannya dapat ditemukan di Unix & Linux Stack Exchange :
Satu-satunya perbedaan adalah bahwa grup di Ubuntu tidak
wheel
, tetapisudo
(atauadmin
dalam versi Ubuntu yang lebih lama). Jadi perintahnya menjadi:sumber
geten group
dan saya melihat banyak angka yang berbeda. Pertanyaan awal saya adalah, bagaimana cara mengetahui apakah pengguna adalah pengguna sistem (dibuat denganuseradd -r
)Memperluas pada
sudo -l -U
tes, satu dapat menggunakangetent passwd
untuk menentukan pengguna yang dapat menggunakansudo
. Menggunakangetent
memungkinkan kita untuk mengakses pengguna yang mungkin tidak ada dalampasswd
file, seperti pengguna LDAP:sudo -U
tidak mengembalikan nilai keluar non-nol yang dapat kita manfaatkan, jadi kita direduksi untuk menangkap output.sumber
sudo
.Pada kebanyakan sistem mirip Unix, yang memiliki perintah sudo, dan memiliki file konfigurasi sudo; menjalankan visudo sebagai root:
atau
akan memungkinkan administrator untuk memeriksa dan mengubah hak-hak kelompok yang dapat menggunakan perintah sudo.
Pada sistem mirip Unix berbasis Debian, seperti Ubuntu, grup 4 dan 27 umumnya memiliki hak akses ke hak akses sudo.
Grup 4 adalah grup administrator (adm) dan grup 27 adalah sudo gid.
Untuk melihat pengguna apa yang saat ini ditugaskan ke grup-grup ini, file / etc / group seperti yang ditunjukkan di bawah ini:
Output sampel, pada Ubuntu (tetapi tidak berbasis Redhat, berbasis Oracle Solaris / Solaris, atau sistem berbasis BSD) akan menghasilkan ini:
Seperti yang kami ketahui, pengguna Anda adalah administrator sistem, dan anggota grup 4 (adm). Tetapi pengguna Anda dan kakak saya keduanya anggota grup 27, yang merupakan nomor gid (identifikasi grup) dari sudo grup. Jadi kakak saya juga bisa mendapatkan hak akses root (pengguna super).
Banyak sistem linux seperti Fedora dan Slackware, menggabungkan grup wheel gid = 10. Yang memungkinkan hak administrator ketika perintah sudo diterapkan. Pada sistem berbasis BSD (mis. FreeBSD), pengguna root adalah anggota dari grup wheel yang gid 0.
Juga dengan menggunakan perintah id setiap pengguna dapat menemukan informasi grup pengguna lain yang diketahui ke sistem.
Sebagai contoh:
Output sampel
sumber
Perintah ini mengembalikan daftar pengguna dengan hak sudo:
Outputnya adalah (mis.):
Jika hanya nama pengguna yang akan ditampilkan, maka perintah ini:
sumber
Perintah:
Keluaran:
Tom, Stacy adalah pengguna dengan hak istimewa sudo.
sumber
cat
.Saya bingung tentang bagaimana
vagrant
pengguna dapat menggunakansudo
bahkan tanpa disebutkan/etc/sudoers
atau/etc/group
tidak ditemukangetent
.Ternyata
sudo
juga membaca entri dari semua file di bawah/etc/sudoers.d/
. Jadi, jika Anda belum melihat-lihat direktori itu, Anda mungkin tidak menyadari berapa banyak pengguna yang benar-benar memilikisudo
akses.sudo
Akses semacam ini dapat dideteksi oleh jawaban JoKeR menggunakansudo -l -U vagrant
tetapi tidak terdeteksi oleh jawaban lain di sini yang semuanya bergantung pada salah satugetent
atau/etc/group
.sumber