Sử dụng một mật khẩu để quản trị và một mật khẩu khác để đăng nhập hệ thống


10

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.


1
Tại sao không chỉ tạo 2 tài khoản, một tài khoản cho sử dụng bình thường và tài khoản còn lại được phép sử dụng sudo.
Luis Alvarado

không tôi chỉ cần nó trong một tài khoản
Varun Sridharan

Tại sao bạn cần đây là một tài khoản? Bạn có thể tạo một tài khoản riêng với quyền truy cập sudo nhưng không có thư mục nhà riêng sau đó thêm người dùng này vào cùng nhóm với người dùng thông thường và đặt tài khoản đó để sử dụng cùng thư mục nhà vớisudo usermod -d /path/to/new/home
Warren Hill

@SVarun Tôi đã cập nhật câu trả lời của mình với các bước phù hợp với tôi kể từ lần cuối bạn nhận xét. Bạn có thể kiểm tra nó và cho tôi biết nếu nó làm việc cho bạn?
Aaron D

Câu trả lời:


16

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.passwdlà 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/sudotậ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/sudotệ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.


Tôi cần phải chạy trong Ubuntu, còn cách nào khác
Varun Sridharan

Tôi đã cập nhật câu trả lời - Tôi đã thử nghiệm phương pháp này và nó thực hiện những gì bạn muốn, nếu tôi đã hiểu chính xác câu hỏi của bạn. Hãy thử nó.
Aaron D

1
+50 tiền thưởng. @AaronD câu trả lời của bạn đã giải quyết câu hỏi của tôi . Cảm ơn!!!
Robbie Wxyz

Tôi rất vui vì bạn thấy nó hữu ích!
Aaron D

1

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:

  • tạo một người dùng không phải quản trị viên
  • tạo người dùng quản trị

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

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.