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ọ?
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:
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:
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.
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.