Làm thế nào một người nào đó nên tạo một mật khẩu được mã hóa cho / etc / bóng?


9

Tôi đang thiết lập một tài khoản mới trên hộp Linux để truy cập kho lưu trữ Subversion và có thể gửi mật khẩu cho người dùng mới. Tuy nhiên, tôi nghĩ rằng có một tiện ích dòng lệnh cho người dùng mới này để mã hóa mật khẩu anh ta thích thành định dạng mà tôi có thể sao chép / dán trực tiếp vào tập tin / etc / Shadow.

Lệnh đầy đủ mà người dùng mới này nên chạy trên bàn điều khiển (ví dụ Bash) để tạo mật khẩu được mã hóa như vậy là gì?

CẬP NHẬT: người dùng sẽ không được phép đăng nhập vào máy và tài khoản sẽ chỉ được sử dụng để truy cập svn + ssh: //. Do đó, người dùng không thể tự thay đổi nó.


Người dùng đang hỏi về kịch bản bash, vì rõ ràng anh ta sẽ không làm điều này bằng tay.
Tim Post

Câu trả lời:


15

người dùng có thể thực thi trên máy tính của mình một cái gì đó như:

echo "password"|openssl passwd -1 -stdin

và sau đó gửi cho bạn đầu ra.


+1 thực hiện chính xác những gì bạn đang tìm kiếm.
Antoine Benkemoun

Tại sao lệnh đó lại cho một giá trị khác nhau mỗi lần tôi gọi nó?
Egon Willighagen

2
Định dạng của đầu ra là $ id $ salt $ được mã hóa. Id khác nhau và muối khác nhau cung cấp cho bạn một chuỗi mã hóa khác nhau. Id là thuật toán được sử dụng: 0-DES, 1-> MD5, 2a-> Blowfish, 5-> SHA-256, 6-> SHA512
Gonzalo

OK, vì vậy tôi cần tìm ra cách kích hoạt một id nhất định (giống nhau mọi lúc) và muối (thay đổi theo từng cuộc gọi) ... có ý nghĩa.
Egon Willighagen

2

Định dạng của mật khẩu trong bóng tối có thể thay đổi. Bạn có thể đặt nó là MD5 hoặc DES3 cũ hoặc ... Bạn tốt khi gửi mật khẩu cho người dùng của mình và buộc cô ấy thay đổi mật khẩu trong lần đăng nhập đầu tiên ( # chage -d 0 username)


1

Thay vì yêu cầu họ mã hóa mật khẩu và gửi nó cho bạn, tại sao bạn không chỉ bảo họ gõ:

passwd

Nó sẽ làm mọi thứ bạn muốn với lợi thế được thêm vào là họ có thể thay đổi mật khẩu mà không cần thêm bất kỳ công việc nào cho bạn.

EDIT: Theo đó , có một lệnh được gọi là makepassword mà bạn có thể nhận được cho Debian / Ubuntu.


Bởi vì điều đó đòi hỏi người dùng phải đăng nhập. OP muốn có một giải pháp để đặt mật khẩu an toàn trước khi người dùng đăng nhập lần đầu tiên.
Daniel Pryden

1
Có vẻ như việc tạo ngẫu nhiên một mật khẩu và yêu cầu họ thay đổi mật khẩu khi họ đăng nhập cũng an toàn như việc họ tạo mật khẩu và thêm mật khẩu theo cách thủ công.
Brendan Long

Người dùng thực sự sẽ không bao giờ đăng nhập (shell: / bin / false) và chỉ cho phép truy cập đọc / ghi SVN ...
Egon Willighagen

2
Bạn có thể đặt shell: / usr / bin / passwd: D
Brendan Long

1
Ý tôi là bình luận cuối cùng như một trò đùa, nhưng rõ ràng nó sẽ hoạt động: markmail.org/message/ekuxvnhdagywy4i5
Brendan Long

0

/ etc / passwd và / etc / Shadow rất dễ dàng token hóa với các công cụ dòng lệnh thông thường (ví dụ: grep, awk, sed, tr, v.v.).

Điều thú vị là trường băm mật khẩu thực tế trong / etc / bóng, tiền tố của nó cho bạn biết mật khẩu đã được mã hóa như thế nào. Từ người đàn ông (5) bóng tối:

The password field must be filled. The encrypted password consists of 13 to 24 characters from the 64 characters alphabet a thru z, A
thru Z, 0 thru 9, \. and /. Optionally it can start with a "$" character. This means the encrypted password was generated using another
(not DES) algorithm. For example if it starts with "$1$" it means the MD5-based algorithm was used.

Làm thế nào nó được mã hóa rộng rãi tùy thuộc vào độ tuổi của hệ điều hành được cài đặt. Điều quan trọng cần chú ý đặc biệt đến trường thứ hai trong / etc / bóng.

Bạn nên thực hiện mọi nỗ lực để theo dõi bất cứ thứ gì băm mà hệ thống đang sử dụng, có thể là DES, MD5, v.v., vì nó rất dễ phát hiện.



0

Có cách nào để tạo mật khẩu này thông qua dòng lệnh không? Có, với gói debian makepasswd (nhưng chỉ dành cho MD5):

echo "mypasswd" | makepasswd --crypt-md5
$1$r2elYKyB$vUr/Ph.brKTldM2h2k8J5.

Nhưng điều này sẽ không hoạt động thông qua sao chép và dán bên trong / etc / bóng Để thay đổi mật khẩu qua tập lệnh trong một số bản phân phối linux, bạn có thể sử dụng:

echo oracle:mypasswd | chpasswd

hoặc là

echo -n mypasswd | passwd --stdin oracle
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.