Bisakah saya mengizinkan pengguna non-root untuk masuk ketika / etc / nologin ada?

8

Misalkan pengguna non-root dengan hak sudo mengeksekusi shutdown tertunda ( shutdown +10atau apa pun) dan logout. Kemudian, sebelum shutdown terjadi, ia ingin masuk kembali dan membatalkan shutdown. Masalahnya adalah yang shutdownmembuat /etc/nologin, dan loginhanya memungkinkan root untuk masuk ketika file itu ada ... apakah mungkin untuk membuat pengecualian dari ini untuk pengguna?

Jika tidak, apa cara terbaik untuk membiarkan pengguna memulai shutdown yang tertunda, lalu masuk dan membatalkannya di titik selanjutnya?

suszterpatt
sumber
Satu mungkin bisa menggunakan shutdown nowdengan atscheduler sebagai solusi.
jw013

Jawaban:

14

Jika sistem Anda menggunakan PAM , penolakan login saat /etc/nologinada dipicu oleh pam_nologinmodul .

Anda dapat melewatkan pam_nologinpermohonan untuk pengguna yang cocok dengan kriteria tertentu pam_succeed_if. Misalnya, jika Anda ingin mengizinkan pengguna dalam admgrup untuk masuk pada konsol teks bahkan jika /etc/nologinada, tambahkan baris berikut /etc/pam.d/loginsebelum baris dengan auth requisite pam_nologin.so:

auth [default=ignore success=1] pam_succeed_if.so quiet user ingroup adm
Gilles 'SANGAT berhenti menjadi jahat'
sumber
2

Jawaban Gilles di atas sangat bagus, tetapi perhatikan bahwa Anda harus mencocokkan "tipe" dengan tipe pam_nologin.so. Jadi misalnya, pada sistem RHEL5 saya:

account [default=1 success=ignore] pam_succeed_if.so quiet user ingroup nx
account required     pam_nologin.so

... jika saya menggunakan auth, seperti jawaban lain yang diminta, itu tidak akan berhasil.

Ryan Novosielski
sumber
2

Versi Vesa K dari jawaban Ryan Novosielski cocok untuk saya, tetapi kalimatnya ada di:

/etc/pam.d/sshd

tidak:

/etc/pam.d/login

Dalam kasus saya, saya hanya ingin UID 1000 di Ubuntu 14.04 LTS diizinkan masuk melalui SSH.

# Disallow non-root logins when /etc/nologin exists.
account [success=1 default=ignore] pam_succeed_if.so quiet uid eq 1000
account    required     pam_nologin.so
Tony Travis
sumber
1

Saya tidak yakin apakah mungkin untuk menimpa /etc/nologinpembuatan / penggunaan tanpa trik kotor. Tetapi untuk tujuan Anda, Anda dapat menggunakan fungsi seperti ini:

off () { 
   touch /tmp/GOING-DOWN
   sudo sh -c "sleep ${1-1} && [ -f /tmp/GOING-DOWN ] && /sbin/poweroff"
}

Setelah masuk kembali, menghapus file /tmp/GOING-DOWNakan mencegah shutdown.

sunting : Menambahkan cara sederhana untuk membatalkan shutdown.

rozcietrzewiacz
sumber
0

Saya mencoba aturan Ryan hari ini dan menemukan bahwa jawaban Gils dan Ryan tidak memiliki aturan sukses / default "terbalik", nologin hanya memblokir grup nx. Inilah cara saya menerapkan aturan ini (grup nx tidak diblokir oleh nologin).

account [success=1 default=ignore] pam_succeed_if.so quiet user ingroup nx
account required     pam_nologin.so
Vesa K
sumber