Làm thế nào một người dùng có thể thay đổi mật khẩu nếu nologin


0

Tôi muốn có một số người dùng cơ sở dữ liệu trên máy chủ RHEL6 của tôi. Vì người dùng DB chỉ là người dùng DB, tôi không muốn cung cấp cho họ đăng nhập shell.

Nếu vậy, làm thế nào những người dùng có thể thay đổi mật khẩu của họ?

Câu trả lời:


1

Tuyên bố miễn trừ trách nhiệm: Bạn đang thực hiện nó theo trách nhiệm của riêng bạn, việc nhầm lẫn với mật khẩu luôn là điều nguy hiểm. Để bảo mật tốt hơn, bạn nên cân nhắc sử dụng LDAP hoặc một cái gì đó tương tự để tách các tài khoản đó khỏi tài khoản hệ thống. Bất cứ điều gì dưới đây là về việc triển khai tính năng được yêu cầu bằng xác thực Unix thuần túy và không áp dụng cho LDAP.

Bạn sẽ cần:

  • một máy chủ HTTP hỗ trợ PHP
  • một trình nền PHP chạy dưới quyền root (hoặc bất kỳ người dùng nào có quyền thay đổi mật khẩu)

Thiết lập bảng điều khiển dựa trên web đơn giản cho phép người dùng nhập thông tin đăng nhập, mật khẩu hiện tại và yêu cầu mật khẩu mới hai lần (giống như biểu mẫu đăng nhập và biểu mẫu thay đổi mật khẩu). Khi người dùng gửi biểu mẫu, chuyển nó đến daemon thông qua các ổ cắm luồng . Daemon nên kiểm tra xem người dùng đó có đặc quyền thay đổi mật khẩu thông qua giao diện web hay không, sau đó xác minh xem mật khẩu hiện tại có hợp lệ cho tên người dùng được chỉ định hay không và nếu có, hãy thay đổi mật khẩu.

Bạn có thể thực hiện nó theo nhiều cách. Nếu bạn đang sử dụng xác thực Unix mặc định, gói PAM PHP sẽ có ích. Bạn có thể tìm thấy nhiều hướng dẫn về kiểm tra và thay đổi mật khẩu bằng PHP thông qua các sshkết nối hoặc với expect, nhưng đó là một ý tưởng rất tồi - thoát khỏi các đối số đúng cách sẽ khó khăn và bạn có thể bỏ lỡ một lỗ hổng bảo mật nghiêm trọng; mô-đun PAM an toàn hơn nhiều. Chỉ cần chắc chắn sử dụng nó trong một daemon, KHÔNG phải ứng dụng PHP máy chủ web của bạn, bởi vì chạy PHP có thể truy cập bên ngoài như root là rất nguy hiểm.

Tất nhiên bạn có thể thực hiện nó theo bất kỳ cách nào khác, ví dụ như trong Python hoặc với máy chủ dựa trên bash (sử dụng netcat). Tôi đang sử dụng PHP làm ví dụ vì tôi đã từng phải thực hiện tính năng giống hệt nhau trong PHP.


Mừng vì tôi có thể giúp. Bạn cũng có thể nói "cảm ơn" bằng cách nâng cao câu trả lời nếu bạn thấy nó hữu ích :)
gronostaj

1

Tôi đã tìm ra một cách nhanh chóng và bẩn thỉu để làm điều đó.

Chạy các lệnh sau:

$ sudo useradd -m -d /home/username -s /usr/bin/passwd -c "login is forbidden for this user" username -N -g users
$ chown root:users /home/username
$ chmod 555 /home/username  

Bây giờ 'tên người dùng' có thể thay đổi mật khẩu của anh ấy / cô ấy. Anh ấy / cô ấy không thể làm gì khác hơn là thay đổi mật khẩu của mình.

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.