Làm cách nào tôi có thể cung cấp cho người dùng một mật khẩu để sử dụng bình thường khi đăng nhập và một mật khẩu khác để quản trị hệ thống và truy cập sudo ? Tôi muốn một người dùng có hai mật khẩu.
sudo usermod -d /path/to/new/home
Làm cách nào tôi có thể cung cấp cho người dùng một mật khẩu để sử dụng bình thường khi đăng nhập và một mật khẩu khác để quản trị hệ thống và truy cập sudo ? Tôi muốn một người dùng có hai mật khẩu.
sudo usermod -d /path/to/new/home
Câu trả lời:
Có một cách để làm điều này bằng cách ghi đè cài đặt PAM (Mô đun xác thực có thể cắm) cho dịch vụ sudo. Làm điều này có nguy cơ lớn đối với máy của bạn - không chỉ sao chép và dán trừ khi bạn hiểu lệnh đó làm gì và luôn luôn mở thiết bị đầu cuối gốc - kiểm tra thử nghiệm! - trước khi đăng xuất, trong trường hợp bạn cần quay lại và sửa một cái gì đó.
Tôi khuyên bạn nên đọc một số thông tin về cách PAM hoạt động để bạn biết phải làm gì nếu nó bị hỏng. Tôi cũng khuyên hầu hết người dùng tiếp cận vấn đề này từ một góc độ khác (tạo một tài khoản người dùng riêng để quản trị) vì giải pháp có thể dễ bị tấn công bảng băm vào mật khẩu của bạn nếu bạn không đặt quyền chính xác.
Nếu bạn quyết tâm tiến hành, bạn sẽ cần cài đặt một mô-đun PAM mới. pam_pwdfile sử dụng tệp loại cũ / etc / passwd để xác thực, rất phù hợp để sử dụng các mật khẩu khác nhau cho các dịch vụ khác nhau. Nó không cung cấp nhận dạng tài khoản - bạn có thể tạo cặp tên người dùng / mật khẩu cho người dùng không tồn tại trên hệ thống. Vì chúng tôi sẽ sử dụng nó cho sudo, nên không vấn đề gì, vì chúng tôi sẽ để sudo kiểm tra tài khoản tồn tại theo cách thông thường.
sudo apt-get install libpam-pwdfile
Tôi cũng khuyên bạn nên lấy một trình soạn thảo tập tin htpasswd tiện dụng. Benjamin Schweizer đã tạo ra một trình soạn thảo tiện dụng trong python hoạt động tốt. Lấy nó từ http://benjamin-schweizer.de/htpasswd_editor.html và cài đặt phần phụ thuộc của nó:
sudo apt-get install python-newt
Tạo tệp định dạng htpasswd bằng công cụ - sudo python htpasswd_editor sudo.passwd
. Đặt tên người dùng và mật khẩu bằng cùng tên người dùng mà bạn sẽ sử dụng cho sudo - một tên cho mỗi người dùng sẽ sử dụng nó. Sao chép nó vào một nơi an toàn (khi kiểm tra điều này, tôi đặt nó vào /etc/sudo.passwd) và làm cho nó không thể đọc được đối với người dùng thông thường: chmod 660 /etc/sudo.passwd
là root.
Đảm bảo tệp được sở hữu bởi root và không thể đọc được cho người dùng khác. Đây là một lỗ hổng vì tệp chứa mật khẩu băm và nếu người dùng khác có thể đọc hoặc ghi được, nó sẽ phá vỡ bảo mật của bạn. Vì lý do này, tôi không khuyên dùng phương pháp này trên máy phải được bảo mật.
Cuối cùng, chỉnh sửa /etc/pam.d/sudo
tập tin. Thêm dòng sau trên các @include ...
dòng khác :
auth required pam_pwdfile.so pwdfile /etc/sudo.passwd
Rõ ràng thay thế đối số cuối cùng bằng đường dẫn đến tệp htpasswd được tạo của bạn. Nhận xét dòng tiếp theo: #@include common-auth
để đảm bảo rằng nó đang sử dụng phương thức xác thực mới.
Lưu ý - bạn sẽ cần chỉnh sửa /etc/pam.d/sudo
tệp từ thiết bị đầu cuối gốc. Đừng đóng cái này mà không thử! Nếu bạn làm như vậy, bạn có thể không đăng nhập lại được (nếu bạn bị hỏng thứ gì đó) và sẽ phải khởi động từ đĩa Recovery để sửa chữa hệ thống của bạn. Kiểm tra trước khi đăng xuất bằng cách mở một thiết bị đầu cuối mới và thử sử dụng sudo
. Bạn sẽ thấy rằng nó sẽ không còn hoạt động với mật khẩu đăng nhập thông thường của bạn, mà thay vào đó yêu cầu mật khẩu mới bạn đã sử dụng khi bạn tạo tệp passwd. Để cập nhật tệp, sử dụng lại công cụ hữu ích.
Có một giải pháp đơn giản hơn nhiều cho câu hỏi ban đầu và là cách tôi chạy:
Luôn đăng nhập với tư cách là người dùng không phải quản trị viên và bất cứ khi nào người dùng không phải quản trị viên cần làm bất cứ điều gì "adminy", chỉ cần:
fab-user@fab-ux:/media/Data/Temp
$ su - fab-root
Password:
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc
Vâng, đó không phải là những gì bạn muốn mà là những gì bạn thực sự cần