Saya memiliki server tanpa kepala yang login ke jarak jauh oleh banyak pengguna. Tidak ada pengguna lain di file sudoers, sehingga mereka tidak dapat memperoleh root melalui sudo
. Namun, karena izin aktif su
tidak -rwsr-xr-x
ada yang menghentikan mereka dari mencoba memaksa paksa root password.
Orang bisa berargumen bahwa jika pengguna mengetahui kata sandi root, mereka dapat membahayakan sistem, tapi saya rasa ini bukan masalahnya. OpenSSH dikonfigurasi dengan PermitRootLogin no
dan PasswordAuthentication no
, dan tidak ada pengguna lain yang memiliki akses fisik ke server. Sejauh yang saya tahu, dunia mengeksekusi izin /usr/bin/su
adalah satu-satunya jalan bagi pengguna yang mencoba mendapatkan root di server saya.
Apa yang lebih membingungkan bagi saya dalam hal itu bahkan tidak berguna. Ini memungkinkan saya untuk berlari su
secara langsung alih-alih perlu melakukannya sudo su
, tetapi ini bukan ketidaknyamanan.
Apakah saya mengabaikan sesuatu? Apakah dunia mengeksekusi izin di su
sana hanya karena alasan historis? Apakah ada kerugian untuk menghapus izin yang belum saya temui?
sudo
menginstal opsional ? Saya akan mengatakan itu adalah ketidaknyamanan yang cukup besar di sana;)Jawaban:
Satu hal yang hilang dari jawaban ilkkachu adalah bahwa meninggikan ke root hanya satu penggunaan khusus untuk
su
. Tujuan umum su adalah untuk membuka shell baru di bawah akun login pengguna lain. Pengguna lain itu mungkinroot
(dan mungkin paling sering), tetapisu
dapat digunakan untuk mengasumsikan identitas apa pun yang dapat diautentikasi sistem lokal.Misalnya, jika saya masuk sebagai pengguna
jim
, dan saya ingin menyelidiki masalah yangmike
telah dilaporkan, tetapi saya tidak dapat mereproduksi, saya mungkin mencoba masuk sebagaimike
, dan menjalankan perintah yang memberinya masalah.Menggunakan
-l
opsisu
sebab untuk mensimulasikan login penuh (perman
halaman).Namun di atas memerlukan pengetahuan tentang
mike
kata sandi. Jika saya memilikisudo
akses, saya dapat masukmike
bahkan tanpa kata sandi.Singkatnya, alasan hak akses pada
su
eksekusi adalah sebagai Anda menunjukkan, karenasu
merupakan alat tujuan umum yang tersedia untuk semua pengguna pada sistem.sumber
sudo
saya lupa bahwa itusu
bisa digunakan lebih dari sekadarsudo -s
. Dan tanpa menjadi sudoer ini akan menjadi satu-satunya cara untuk beralih pengguna tanpa mengubah kunci ssh. Untuk kasus penggunaan saya, ini adalah alasan lain untuk menghapus izin, tapi saya mengerti sekarang mengapa dunia mengeksekusi izin diatur secara default. Terima kasih!sudo
juga dapat digunakan untuk mengasumsikan identitas pengguna selainroot
. Ini hanya memungkinkan kontrol yang lebih halus atas siapa yang dapat melakukan apa sebagai siapa, termasuk mengasumsikan identitas lain tanpa perlu kata sandi identitas itu.su
kependekan dari "pengguna super", yang ia lakukan, ketika tidak ada pengguna yang ditentukan (atau root ditentukan secara eksplisit) tetapi juga singkatan dari "pengguna beralih".su
Karenanya penggunaan kedua ini mudah dilupakan.Secara historis (pada kesatuan non-GNU), itu tidak, atau setidaknya secara manual memeriksa jika Anda berada dalam grup yang disebut "roda" diizinkan
su
. Versi GNUsu
tidak mereproduksi fungsi ini karena ideologi RMS tentang kontrol akses pada saat itu:Anda dapat menemukan lebih banyak tentang masalah ini dengan Googling "grup roda rms" atau serupa.
sumber
Iya nih. Dengan asumsi sistem Linux Anda biasa,
pam_unix.so
modul tidak menunda upaya otentikasi gagal ~ dua detik, tapi saya tidak berpikir ada sesuatu untuk menghentikan upaya simultan.Upaya gagal dicatat tentu saja:
Memaksa kata sandi dengan kasar akan terlihat jelas di log, jika Anda memiliki sistem untuk memonitornya. Dan jika Anda memiliki pengguna lokal yang tidak dipercaya, mungkin Anda harus melakukannya. Pengguna lokal yang tidak tepercaya juga dapat mencoba menggunakan eksploitasi eskalasi hak istimewa hanya lokal, dan mereka jauh lebih umum daripada eskalasi hak istimewa jarak jauh.
Tentu saja ini berguna, memungkinkan Anda untuk meningkatkan diri
root
, jika Anda tahu kata sandinya.sudo su
agak berlebihan. Tidak perlu menggunakan dua program yang dimaksudkan untuk memungkinkan Anda menjalankan program sebagai pengguna lain, cukup satu saja. Cukup gunakansudo -i
atausudo -s
(atausudo /bin/bash
dll.) Jika Anda ingin menjalankan shell.Lihat di atas. Ya, tidak semua sistem memiliki
sudo
alternatif, saya tidak yakin apakah Anda menganggap itu bersejarah.Tidak juga, tidak sejauh yang saya tahu. Saya pikir beberapa sistem telah
su
ditetapkan sehingga hanya anggota grup tertentu ("wheel
") yang dapat menjalankannya. Anda dapat melakukan hal yang samasudo
jika Anda suka (chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo
).Atau Anda bisa menghapus salah satu atau kedua program jika Anda tidak membutuhkannya. Meskipun di Debian,
su
hadir denganlogin
paket, jadi mungkin bukan ide yang baik untuk menghapus paket secara keseluruhan. (Dan berpasanganlogin
dansu
bersama seperti itu tampaknya agak bersejarah.)sumber
wheel
grup untuk digunakansu
. Ada beberapa sistem BSD (saya hanya bisa berbicara untuk OpenBSD) yang tidak disertakansudo
sama sekali (ini adalah paket pihak ke-3). OpenBSD memilikidoas
yang merupakan implementasi kembali dari dasar-dasarsudo
, tetapi dinonaktifkan secara default saat menginstal sistem baru.wheel
jika inginsu
melakukan root. Setiap akun dapatsu
ke akun non-root yang mereka miliki kata sandinya, terlepas dari keanggotaannya dalamwheel
grup.su
membersihkan lingkungan itu? Tampaknya tidak melakukan itu pada Debian ...Anda sudah memiliki jawaban yang bagus, tetapi ada satu bagian dari posting Anda yang tidak mereka jawab.
Itu asumsi yang berbahaya. Jika Anda telah menetapkan kata sandi yang baik untuk root, maka dalam kebanyakan kasus kemungkinan besar eskalasi hak istimewa yang berhasil akan disebabkan oleh eksploitasi bug di kernel atau binari setuid (Anda tentu saja dapat juga menghapus setuid bit dari itu, tetapi
passwd
setuid, dan jika Anda ingin keamanan tinggi Anda juga harus menawarkan itu kepada pengguna Anda, dan menolak mereka pilihan untuk mengubah kata sandi mereka tidak kompatibel dengan itu).sumber
su harus dapat dieksekusi-dunia agar semua orang dapat menjalankannya. Dalam banyak sistem, ini dapat digunakan untuk berubah ke pengguna lain, dengan memberikan kata sandi mereka.
Jika Anda khawatir tentang seseorang yang memaksakan kata sandi root, Anda bisa menonaktifkannya. (jadikan hash tidak valid sehingga tidak ada kata sandi yang cocok)
Saya tidak tahu tentang konsensus, tetapi saya akan mempertimbangkan untuk dapat login sebagai root langsung masalah keamanan dalam dan dari dirinya sendiri.
sumber
Jawaban lainnya benar mengatakan "su" memungkinkan Anda untuk masuk ke akun selain root.
Satu catatan tentang "sudo su". Ini sebenarnya memungkinkan Anda untuk masuk ke akun root tanpa mengetahui kata sandi root. Anda harus mengetahui kata sandi akun yang Anda jalankan dengan sudo dan juga memiliki akun itu di file sudoers.
sumber
sudoers
memilikitargetpw
ataurootpw
mengatur.su
dieksekusi oleh semua.