Nonaktifkan login pengguna tanpa menonaktifkan akun

87

Katakanlah saya membuat pengguna bernama "palsu" menggunakan adduserperintah. Bagaimana saya bisa memastikan pengguna ini TIDAK akan menjadi opsi masuk yang layak, tanpa menonaktifkan akun. Singkatnya, saya ingin akun dapat diakses melalui su - bogus, tetapi saya tidak ingin dapat diakses melalui prompt login reguler.

Mencari-cari di sekitar, sepertinya saya perlu menonaktifkan kata sandi pengguna itu, tetapi melakukan passwd -d bogusitu tidak membantu. Bahkan, itu membuat segalanya lebih buruk, karena sekarang saya bisa masuk ke bogus tanpa mengetik kata sandi.

Apakah ada cara untuk menonaktifkan login reguler untuk akun yang diberikan?

Catatan: Agar lebih jelas, saya tahu cara menghapus pengguna dari opsi menu layar masuk grafis seperti gdm, tetapi metode ini hanya menyembunyikan akun tanpa benar-benar menonaktifkan login. Saya mencari cara untuk menonaktifkan login reguler sepenuhnya, termasuk mode teks.

Malabarba
sumber
2
Anda -dadalah bendera untuk menghapus kata sandi. Itu berbeda dari menonaktifkannya (direferensikan sebagai penguncian, lihat jawaban Chad).
Caleb
1
Anda mungkin ingin sepenuhnya menonaktifkannya: unix.stackexchange.com/questions/7690/... Lihat juga ini Tanyakan pertanyaan Ubuntu: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
Simon Woodside

Jawaban:

102
passwd -l user

adalah apa yang kamu inginkan.

Itu akan mengunci akun pengguna. Tapi kamu masih bisa

su - user

tetapi Anda harus su - userroot.

Atau, Anda dapat melakukan hal yang sama dengan menambahkan !kata sandi pengguna di /etc/shadow(ini semua passwd -ldilakukan di belakang layar). Dan passwd -uakan membatalkan ini.

Chad Feller
sumber
27
Dengan menggunakan passwd -lopsi ini, Anda harus menyadari bahwa pengguna dapat masuk menggunakan token otentikasi lain (mis. Kunci SSH).
pl1nk
2
Silakan lihat jawaban saya di bawah ini pada solusi yang disarankan tentang cara menghindari ini.
Jörg Gottschlich
2
Ini tidak berfungsi di ubuntu 16.04. Ini akan mengubah tanggal kedaluwarsa dan tidak lagi mengizinkan pengguna su.
merlin
1
Apakah ini sama dengan --disabled-passwordopsi yang diberikan adduser? Apakah membuat pengguna tanpa --disabled-passworddan kemudian berjalan passwd -lpada pengguna itu mencapai hasil yang sama dengan berlari adduserdengan --disabled-passworddi tempat pertama?
haridsv
39

Halaman manual passwd(1)mengatakan tentang passwd -l:

Perhatikan bahwa ini tidak menonaktifkan akun. Pengguna mungkin masih dapat masuk menggunakan token otentikasi lain (mis. Kunci SSH). Untuk menonaktifkan akun, administrator harus menggunakan usermod - expiredate 1 (ini menetapkan tanggal kedaluwarsa akun menjadi 2 Januari 1970).

Begitu

usermod --expiredate 1 [LOGIN]

Sepertinya saya menyukai cara yang tepat untuk menonaktifkan akun yang seharusnya tidak dapat digunakan pengguna lagi (misalnya karena dia meninggalkan perusahaan).

Jörg Gottschlich
sumber
4
Pada CentOs 6.3 saya, passwd -lapakah memblokir sshkoneksi untuk pengguna, dan usermod --expiredate 1tidak!
fduff
1
Pada CentOS 7.4 saya, passwd -ltidak lagi memblokir sshkoneksi untuk pengguna, dan usermod --expiredate 1 usertidak memblokir. Per man passwdAnda juga dapat menggunakan chage -E 0 useruntuk memblokir pengguna. Setelah mendaftar usermodatau chagesaya bisasudo su user
user12345
usermod --expiredate 0 [LOGIN]juga berfungsi, menetapkan tanggal kedaluwarsa menjadi 1 Januari 1970 sedangkan 1 menetapkan ini menjadi 2 Januari 1970.
slm
"Nilai 0 tidak boleh digunakan karena ditafsirkan sebagai akun tanpa kedaluwarsa, atau sebagai kedaluwarsa pada 1 Januari 1970." - shadow (5)
Johannes
28

Ada dua metode untuk mencegah pengguna dapat masuk:

  1. Anda dapat mengunci pengguna dengan mengedit /etc/passwd
  2. dengan langsung mengeluarkan passwdperintah dengan -lsaklar

Dalam kasus kedua, pengguna dapat masuk menggunakan token otentikasi lain (mis. Kunci SSH).

Metode # 1

  1. Temukan di mana nologin: / bin / nologin atau / bin / sbin / nologin
  2. Buka terminal dan login sebagai root
  3. Tipe vi /etc/passwd

Sekarang Anda berada di passwdfile, tekan Insuntuk mengedit file.

Ubah baris di bawah ini dengan nologinopsi ( /bin/bashberarti pengguna dapat login).

root:x:0:0:root:/root:/bin/bash

untuk ini. nologinberarti pengguna tidak dapat masuk.

root:x:0:0:root:/root:/bin/nologin

(atau dengan / bin / sbin / nologin)

  1. Tutup vi Esc :wq

Metode # 2

Untuk mengunci pengguna: passwd -l username

Untuk membuka kunci pengguna: passwd -u username

Mansur Ul Hasan
sumber
1
Pada sistem Ubuntu 14.04, saya menemukan /usr/sbin/nologinbukan /bin/nologin.
Dennis Williamson
7

Tugasnya cukup mudah, Anda hanya perlu membuat beberapa perubahan pada /etc/passwdfile.

Cukup Anda harus mengubah shell yang umumnya secara default /bin/bashYaitu Anda dapat login menggunakan shell ini untuk /bin/nologinatau /bin/false. Dianjurkan untuk mengubahnya /bin/nologinkarena /bin/falsesudah usang.

PRABHAT PARASHAR
sumber
4

Atur /bin/falsesebagai shell/etc/passwd

danadam
sumber
18
Ketika seseorang mengatur shell untuk /bin/false, ia mencegah menggunakan su untuk bertindak sebagai pengguna itu. Selain itu, menggunakan /bin/falsetidak menghasilkan kesalahan atau petunjuk lain tentang apa yang salah - dalam kasus di mana seseorang ingin mencegah bahkan su dari digunakan untuk mendapatkan shell sebagai pengguna itu, shell harus diubah /sbin/nologinyang memang menghasilkan kesalahan.
HedgeMage
8
Tidak, sumasih mungkin bagi pengguna dengan /bin/falsekerang di passwd- hanya menggunakan opsi --shell: su - --shell /bin/sh bogus.
Matej Kovac
1
/usr/sbin/nologinmemiliki efek yang sama seperti /bin/false, tetapi juga menunjukkan pesan informasi yang bermanfaat.
Rörd
0

Saat kami mengunci pengguna menggunakan passwd -l userperintah, " !!" ditunjukkan dalam /etc/shadowfile. Tetapi kita masih dapat beralih ke shell pengguna dari akun root, tetapi tidak dapat beralih ke akun pengguna oleh shell login pengguna normal lainnya.

Kami juga dapat menonaktifkan akun dengan menyediakan /bin/nologinatau /bin/falseke /etc/passwdfile. Jadi pengguna mungkin tidak dapat masuk.

Sushil Musande
sumber
-1

Anda bisa menggunakan perintah

usermod -s /sbin/nologin username
Hadir Richard Chigonera
sumber