Tôi có thể cho phép người dùng không root đăng nhập khi / etc / nologin tồn tại không?


8

Giả sử người dùng không root có quyền sudo thực hiện tắt máy bị trì hoãn ( shutdown +10hoặc bất cứ điều gì) và đăng xuất. Sau đó, trước khi tắt máy xảy ra, anh ta muốn đăng nhập lại và hủy bỏ việc tắt máy. Vấn đề là shutdowntạo /etc/nologinloginchỉ cho phép root đăng nhập khi tệp đó tồn tại ... có thể tạo ngoại lệ từ điều này cho người dùng không?

Nếu không, cách tốt nhất để cho phép người dùng bắt đầu tắt máy bị trì hoãn, sau đó đăng nhập và hủy nó sau đó là gì?


Người ta có thể sử dụng shutdown nowvới bộ lập atlịch như một cách giải quyết.
jw013

Câu trả lời:


14

Nếu hệ thống của bạn sử dụng PAM , từ chối đăng nhập khi /etc/nologintồn tại được kích hoạt bởi pam_nologinmô-đun .

Bạn có thể bỏ qua pam_nologinlời gọi cho người dùng phù hợp với tiêu chí nhất định với pam_succeed_if. Ví dụ: nếu bạn muốn cho phép người dùng trong admnhóm đăng nhập trên bảng điều khiển văn bản ngay cả khi /etc/nologintồn tại, hãy thêm dòng sau vào /etc/pam.d/loginngay trước dòng auth requisite pam_nologin.so:

auth [default=ignore success=1] pam_succeed_if.so quiet user ingroup adm

2

Câu trả lời của Gilles ở trên là rất tốt, nhưng lưu ý rằng bạn phải khớp "loại" với loại của pam_nologin.so. Vì vậy, ví dụ, trên hệ thống RHEL5 của tôi:

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

... Nếu tôi sử dụng auth, như câu trả lời khác được yêu cầu, nó sẽ không hoạt động.


2

Phiên bản câu trả lời của Ryan Novosielski của Vesa K hoạt động với tôi, nhưng các dòng nằm ở:

/etc/pam.d/sshd

không phải:

/etc/pam.d/login

Trong trường hợp của tôi, tôi chỉ muốn UID 1000 trong Ubuntu 14.04 LTS được phép đăng nhập qua 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

1

Tôi không chắc liệu có thể ghi đè việc /etc/nologintạo / sử dụng mà không có thủ đoạn bẩn hay không. Nhưng với mục đích của bạn, bạn có thể sử dụng một chức năng như thế này:

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

Khi đăng nhập lại, xóa tập tin /tmp/GOING-DOWNsẽ ngăn tắt máy.

chỉnh sửa : Đã thêm một cách đơn giản để hủy bỏ tắt máy.


0

Tôi đã thử quy tắc của Ryan ngày hôm nay và phát hiện ra rằng bot câu trả lời của Gils và Ryan có quy tắc thành công / mặc định "đảo ngược", nologin chỉ chặn nhóm nx. Đây là cách tôi thực hiện quy tắc này (nhóm nx không bị chặn bởi nologin).

account [success=1 default=ignore] pam_succeed_if.so quiet user ingroup nx
account required     pam_nologin.so
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.