useradd không mã hóa mật khẩu trong / etc / bóng


20

Tôi đã vấp phải vấn đề này khi cố gắng tạo người dùng FTP mới cho vsftpd. Khi tạo một người dùng mới bằng lệnh sau và thử đăng nhập bằng FileZilla, tôi sẽ gặp lỗi "mật khẩu không chính xác".

useradd f -p pass -d /home/f -s /bin/false

Sau khi làm điều này, / etc / bóng chứa

f:pass:1111:0:99:2:::

Khi tôi chạy lệnh sau và cung cấp cùng một lượt vượt qua

passwd f

/ etc / bóng chứa

f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::

Có vẻ như mã hóa xảy ra khi tôi chạy passwd , nhưng không xảy ra khi useradd

Điều quan trọng sau khi làm điều này, tôi có thể đăng nhập vào FTP với thông tin chính xác tương tự.

Tôi đang sử dụng CentOS 5.11, vsftpd cho FTP và FileZilla để truy cập FTP

/ var / log / safe chứa:

Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, shell=/bin/false

Tại sao nó không hoạt động khi tôi chuyển -p passđến useradd? Tôi cần làm gì để nó hoạt động?


Tôi không thấy một câu hỏi ở đó? - Những thứ như vậy được quản lý thông qua PAM và thường đăng nhập/var/log/secure
HBruijn

@HBruijn Tôi đã cập nhật câu trả lời của mình để hiển thị nội dung được ghi vào / var / log /
safe

2
Có thật không? +12 cho một câu hỏi được trả lời rõ ràng bởi trang người đàn ông có liên quan?
một CVn

Lưu ý rằng trong hàm băm mật khẩu, $1$biểu thị MD5 được sử dụng . MD5, mặc dù không hoàn toàn khủng khiếp đối với mật khẩu, nhưng lại khá yếu về những ngày này. Đó là một câu hỏi hoàn toàn riêng biệt, nhưng tôi hoàn toàn mong muốn bạn xem xét việc chuyển sang một hàm băm mạnh hơn.
một CVn

2
Lưu ý bên lề: mật khẩu /etc/shadowkhông được mã hóa nhưng được băm
Tobias Kienzler

Câu trả lời:


43

Đó là làm việc như dự định. Nếu bạn muốn đặt mật khẩu bằng useraddlệnh, bạn phải cung cấp một phiên bản băm của mật khẩu useradd.

Chuỗi passđáp ứng các tiêu chí định dạng cho trường mật khẩu được băm trong /etc/shadow, nhưng không có mật khẩu thực sự băm vào chuỗi đó. Kết quả là với tất cả ý định và mục đích, tài khoản đó sẽ hoạt động như có mật khẩu, nhưng bất kỳ mật khẩu nào bạn cố gắng sử dụng để truy cập sẽ bị từ chối vì không phải là mật khẩu chính xác.

Xem man useraddhoặc tài liệu hướng dẫn sử dụng :

-p, --password MẬT KHẨU

Mật khẩu được mã hóa, như được trả lại bằng mật mã (3) . Mặc định là vô hiệu hóa mật khẩu.

Lưu ý: Tùy chọn này không được khuyến nghị vì mật khẩu (hoặc mật khẩu được mã hóa) sẽ hiển thị bởi người dùng liệt kê các quy trình.

Bạn nên đảm bảo mật khẩu tôn trọng chính sách mật khẩu của hệ thống.


32

manuseradd :

   -p, --password PASSWORD
       The encrypted password, as returned by crypt(3). The default is to
       disable the password.

Bạn phải truyền mật khẩu băm cho nó.
Không phải là mật khẩu văn bản gốc.


16

useraddhy vọng bạn vượt qua nó băm của mật khẩu, chứ không phải mật khẩu. Bạn có thể sử dụng biến thể sau đây trên lệnh của mình để cung cấp mật khẩu băm cho useraddlệnh:

useradd f -p "$(mkpasswd --method=sha-512 'pass')" -d /home/f -s /bin/false

Để tìm hiểu các phương pháp có sẵn, sử dụng:

mkpasswd --method=help

Để tránh truyền mật khẩu trên dòng lệnh, hãy đặt mật khẩu vào một tệp (sử dụng trình chỉnh sửa và không sử dụng echohoặc tương tự) và thực hiện việc này:

useradd f -p "$(mkpasswd --method=sha-512 --password-fd=0 < filename)" -d /home/f -s /bin/false

Điều này sẽ vượt qua mật khẩu băm trên dòng lệnh, nhưng không phải là mật khẩu.

mkpasswdđi kèm với expectgói.


2
Đừng sử dụng MD5! Sử dụng SHA-2
Josef

9
Xin lưu ý rằng điều này tạm thời làm lộ mật khẩu thông qua các giao diện kernel khác nhau (bất kỳ quy trình nào cũng được phép đọc dòng lệnh của bất kỳ quy trình nào khác) và có thể dẫn đến việc nó được lưu trong văn bản đơn giản vào đĩa thông qua $ HISTORY hoặc các cơ chế tương tự.
một CVn

@ MichaelKjorling: Một điểm rất tốt. Xin vui lòng xem câu trả lời chỉnh sửa của tôi.
Tạm dừng cho đến khi có thông báo mới.

1
Tất nhiên, bạn vẫn đang lưu trữ mật khẩu văn bản đơn giản trên đĩa. Ít nhất, điều này mang lại cho sysadmin một sự lựa chọn. Có thể tại thời điểm này, chúng tôi tốt hơn hết là chỉ nên sử dụng mật khẩu giả lúc đầu và ngay lập tức chạy passwdđể thay đổi nó thành một thứ khác ......
một CVn

2
Hoàn toàn là Dennis, nó tốt hơn nhiều, nhưng mật khẩu vẫn kết thúc trên đĩa ở dạng văn bản thuần túy. Trong một số tình huống và theo các mô hình mối đe dọa nhất định, đó có thể là một vấn đề thực sự. Nó không được.
một CVn
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.