Mengedit file sudoers untuk membatasi perintah pengguna

8

Apakah mungkin untuk mengedit file sudoers sehingga pengguna dapat menggunakan sudo untuk perintah apa pun kecuali untuk yang ditentukan? Saya membalikkan benar, saya percaya, bahwa file sudoers dapat diatur sehingga pengguna hanya dapat menjalankan daftar perintah yang diberikan.

Suntingan: perintah yang ingin saya ambil dihentikan dan reboot ... ini membuat saya berpikir ada panggilan sistem khusus untuk berhenti dan reboot. Bisakah Anda mengambil panggilan sistem dari pengguna? Jika tidak, apakah itu karena sistem izin unix mengaburkan panggilan sistem mengabaikannya?

devin
sumber

Jawaban:

5

Cara lain untuk melihatnya adalah bahwa jika pengguna memiliki akses root sebagian besar tidak dibatasi, mereka dapat dengan mudah mendapatkan akses root penuh.

Meskipun Anda mungkin bisa melakukan sesuatu, itu akan mudah dielakkan.

SElinux adalah cara yang mungkin, meskipun perlu banyak belajar.

LapTop006
sumber
3

Untuk melakukan apa yang Anda inginkan (biarkan formulir pengguna tetap berjalan, reboot dan shutdown), Anda harus melihat ke dalam hal-hal SElinux untuk mencegah pengguna membuat syscalls tersebut. Kalau tidak, pengguna hanya akan menjalankan / bin / sh pertama dan kemudian menjalankan / bin / berhenti tanpa melalui sudo.

pjz
sumber
2
Atau salah satu dari sejuta program yang bisa Anda peroleh dari shell, atau skrip mereka sendiri.
Ronald Pottol
3

Catat semua yang mereka lakukan melalui sudo, mungkin, Anda memiliki beberapa cara untuk menyampaikan maksud agar tidak melakukannya lagi.

Defaults logfile=/var/log/sudolog 

akan mencatat semua perintah yang mereka jalankan, google sedikit untuk info lebih lanjut.

Ronald Pottol
sumber
Anda perlu log terpusat dan Anda perlu meneriaki mereka jika mereka menjalankan shell. Shell dapat diperoleh dari editor misalnya. atau lelaki dll.
James
3

Ya dan tidak ... Anda dapat mencegah pengguna menjalankan file tertentu dengan mendahului file dengan bang (!), Namun Anda tidak dapat menghentikan pengguna dari menyalin file ke lokasi lain dan kemudian menjalankannya dari sana.

User_Alias    ADMINS = peter, bob, bunny, %operator

ADMINS        ALL    = !/usr/bin/su, !SHELLS

Memberikan Akses ke File Tertentu sebagai Pengguna Lain

Jeremy Viet
sumber
Contoh cara mengatur "SHELLS" di atas: Cmnd_Alias ​​SHELLS = / bin / sh, / bin / ksh, / bin / bash, / bin / zsh, \ / bin / csh, / bin / tcsh, \ / usr / bin / login, / usr / bin / su
pulcher
Sekelompok utilitas akan memungkinkan Anda menjalankan perintah sebagai root (tar, tautan, dan nmap di atas kepala saya), jadi saya jujur ​​berpikir solusi sebenarnya adalah dengan salah satu) perintah daftar putih yang ingin Anda jalankan sebagai root atau b) sewa saja seseorang yang Anda percaya
Some Linux Nerd
2

Jika pengguna benar-benar ingin reboot, ia akan menemukan cara. sudo -s, sudo -i, sudo $EDITOR /etc/sudoers... bisa digunakan untuk menghilangkan pembatasan Anda.

Dan pada sistem seperti Unix Anda diizinkan untuk me-reboot sistem selama Anda melakukan root (uid 0). Jika Anda menemukan cara untuk membatasi panggilan sistem itu, orang dapat melakukan ini:

pengguna $ echo b | sudo tee / proc / sysrq-trigger

atau variasi daripadanya. Atau reboot dengan menyebabkan panik kernel. Atau...

Akhirnya, memiliki akses root biasanya memberi Anda kemampuan untuk menghapus batasan apa pun yang ada.

pengguna1686
sumber
Menyebalkan bahwa Linux tidak lagi memiliki keamanan. Mereka tidak sempurna, tetapi manusia mudah diatur. Mereka tidak mencegah reboot, tetapi mencegah banyak hal lainnya. Dan karena mudah, Anda dapat menggunakannya di semua sistem. Tidak perlu mengubah dan seperti itu.
Thomas
Bukankah mereka di BSD, bukan Linux?
user1686
1

yakin, sebagai panggilan root visudo dan mencegah 'pengguna' dari menjalankan / sbin / halt:

user ALL=(ALL) NOPASSWD: !/sbin/halt
ThorstenS
sumber
Saya percaya bahwa permintaan itu untuk daftar perintah bahwa pengguna tidak diperbolehkan untuk run
Wayne
1

Ada risiko dalam melakukan hal ini: sering kali ada cara untuk melakukan tindakan yang sama. Sebagai contoh, telnit 6 atau init 6 melakukan reboot juga. Mungkin ada cara untuk memaksa kernel ke core dump dan reboot juga.

Julien
sumber
1

Baris berikut harus membiarkan pengguna "jim" menjalankan semuanya kecuali / usr / bin / kill dan / usr / bin / su.

jim          ALL= !/usr/bin/kill,!/usr/bin/su
Jeff Atwood
sumber
0

Ini belum teruji dan YMMV tetapi bagaimana dengan mengatur cmd_list dari perintah yang tidak ingin Anda jalankan dan kemudian gunakan! Cmd_list untuk grup / pengguna yang ditentukan?

Saya tidak memiliki akses untuk menguji ini dan hanya melihat halaman manual online di Sudoers Manual sehingga beberapa ahli akan memperbaiki saya di sini jika saya salah

Wayne
sumber