Pertanyaan Bagaimana cara mencegah pengguna masuk, tetapi membiarkan "su-user" di Linux?


Bagaimana Anda mengizinkan pengguna untuk masuk menggunakan "su -  pengguna"tetapi mencegah pengguna login menggunakan SSH?

Saya mencoba mengatur shell untuk /bin/false tetapi ketika saya mencoba su itu tidak berhasil.

Apakah ada beberapa cara untuk hanya mengizinkan proses masuk su?

Apakah SSH AllowUser cara untuk pergi? (Bagaimana saya akan melakukan ini jika itu adalah cara untuk pergi)


86
2018-06-09 15:13






Jawaban:


Kamu bisa memakai AllowUsers / AllowGroups jika Anda hanya memiliki beberapa pengguna / grup yang diizinkan untuk masuk melalui ssh atau DenyUsers / DenyGroups jika Anda hanya memiliki beberapa pengguna / grup yang tidak diizinkan untuk masuk. Perhatikan bahwa ini hanya membatasi login melalui ssh, cara lain untuk masuk (konsol, ftp, ...) masih memungkinkan. Anda perlu menambahkan opsi ini ke Anda / etc / ssh / sshd_config file untuk sebagian besar instalasi ssh.

Jika Anda telah mengatur shell login ke / bin / false kamu bisa memakai su -s /bin/bash user (menggantikan / bin / bash dengan cangkang pilihan Anda)


108
2018-06-09 15:40



terima kasih banyak untuk semua. Saya tidak berharap mendapat 2+ upvotes pada pertanyaan saya :) Saya suka "su -s ..." membangun banyak dan konsol / ftp adalah poin yang bagus. Saya benar-benar menginginkan sesuatu seperti "su -s". - NoozNooz42
Trik su-s adalah emas. Saya menggunakannya sepanjang waktu untuk akun sistem Saya perlu menguji izin untuk, mis., Apache, tidak ada, dll. Saya biasanya melakukan su-user -s / bin / bash. Argumen opsional - dapat digunakan untuk menyediakan lingkungan yang serupa dengan apa yang diharapkan pengguna jika pengguna login secara langsung. - dmourati
Jika Anda memerlukan variabel lingkungan (mis. Dari / etc / profile) untuk dimuat, melewati dasbor ekstra akan melakukannya: su - -s /bin/bash user - Leons


Jika Anda masih ingin su bekerja, Anda dapat menggunakan sudo -u [username] atau lulus -s /bin/bash untuk su sebagai shell sementara. Mereka berdua melakukan hal yang sama tanpa adanya shell /etc/passwd.


13
2018-02-18 10:04





Jika akun tidak memiliki kata sandi (passwd -d nama pengguna), mereka tidak bisa login secara interaktif (konsol, SSH, dll.). Jika mereka memiliki cangkang yang valid, su akan tetap berfungsi. Perhatikan "interaktif," meskipun; jika seseorang memutuskan untuk mengatur keypair SSH untuk akun, itu akan bekerja!


7
2018-06-09 15:53



apakah pengguna harus memiliki cangkang yang valid untuk su? Saya cukup yakin Anda masih berada di shell asli yang sama setelah Anda su ke pengguna lain ... Anda tidak benar-benar LOG IN sebagai pengguna lain ... Jadi, hanya mengatur shell ke / dev / null mungkin berfungsi demikian juga. - Brian Postow
Ya, masih perlu shell yang valid: [root @ localhost ~] # su daemon Akun ini saat ini tidak tersedia. [root @ localhost ~] # su - daemon Akun ini saat ini tidak tersedia. (Sistem RHEL, shell daemon adalah / sbin / nologin) - astrostl


Di sshd_config tambahkan baris DenyUser [username]

Perhatikan bahwa ini tidak akan mencegah pengguna masuk melalui konsol.


3
2018-06-09 15:28



Itu seharusnya DenyUsers, dengan 's'. - David G


Selain apa yang telah disebutkan di atas (menonaktifkan dan / atau tidak menyetel kata sandi pengguna), modul pam_access (lihat halaman manual di pam_access dan access.conf) dapat digunakan untuk mengontrol akses masuk.


2
2017-09-27 22:16





seperti yang orang lain katakan;

DenyUser username atau DenyGroup groupname di sshd_config akan mencegah masuk keypair / kata sandi melalui ssh.

meskipun saya biasanya melakukan sesuatu seperti AllowGroup ssh atau sesuatu di sepanjang garis itu, dan secara eksplisit menambahkan orang yang membutuhkan akses ssh ke grup itu.

kemudian, Anda dapat melakukan apa yang dikatakan orang lain: passwd -d username untuk mengosongkan kata sandi pengguna, sehingga mereka tidak dapat masuk di konsol, atau dengan cara lain. atau lebih baik lagi passwd -l username untuk 'mengunci' akun. mungkin ssh akan menolak akses ke akun terkunci, bahkan dengan kunci, tapi saya tidak positif.


1
2018-06-09 16:15



Sebenarnya ssh akan memungkinkan Anda untuk masuk menggunakan otentikasi kunci bahkan ketika kata sandi akun terkunci. - Richard Holloway
Senang mengetahui, terima kasih atas klarifikasi ... - cpbills


Seperti yang saya sebutkan dalam komentar, saya pikir Anda masih dapat memasukkan akun dengan cangkang yang tidak valid. Jadi, jika Anda mengatur shell pengguna ke / dev / null atau apa pun shell dari bin, Anda harus bisa tetap su ke pengguna itu ... tetapi setiap upaya untuk masuk dengan cara apa pun akan menghentikan Anda keluar ...


1
2018-06-09 16:26





sunting / etc / shadow dengan menambahkan! ke awal hash kata sandi.

username:!<hash>:#####:#:#####:#:::

Ketika mengamankan instalasi baru ini adalah hal pertama yang saya lakukan setelah menginstal sudo, jadi tidak ada yang bisa menggunakan pengguna root untuk login atau ssh ke dalam sistem, pengguna sudo tetap dapat mengeksekusi sebagai pengguna root.


1
2017-12-31 01:38





Jangan tentukan kata sandi untuk pengguna yang tidak diizinkan untuk masuk atau menghapusnya.

# passwd -d myuser

0
2018-06-09 15:50





Dengan asumsi Anda hanya ingin su pengguna dari akun root, dan menonaktifkan semua akses lainnya:

Gunakan ini (jalankan sebagai root):

usermod -e 1 -L user

Ini menonaktifkan login kata sandi (seperti banyak jawaban lainnya yang disarankan), tetapi juga kedaluwarsa akun. Anda tidak dapat masuk ke akun yang kedaluwarsa, mis. dengan kunci SSH. Kamu masih bisa su user, meskipun akan menampilkan pemberitahuan bahwa akun telah kedaluwarsa.


0
2017-11-18 13:49