Thay đổi mật khẩu của người dùng trong / etc / bóng


9

Tôi muốn thay đổi mật khẩu của người dùng trong /etc/shadow. Tôi không thể sử dụng các chương trình thay đổi mật khẩu như passwd. Nó phải được thực hiện bằng cách chỉnh sửa /etc/shadow. Cái /etc/shadownày nằm trên ổ cứng gắn và chroot không hoạt động.

Ví dụ:

root:$asdf.1AH.MJ3sivd4$YFoFnasdf4cZW9H6G6cbT4.1VBmasdfmv.a0wCU/i3zEFasdfasdf4W.:15843:0:99999:7:::
otheruser:$asdf.1AH.MJ3sivd4$YFoFnasdf4cZW9H6G6cbT4.1VBmasdfmv.a0wCU/i3zEFasdfasdf4W.:15843:0:99999:7:::

Ai có thể cung cấp cho tôi một kịch bản để thay đổi mật khẩu của gốc với sedhoặc awkhoặc một cái gì đó như thế?


2
Vì tò mò, tại sao bạn không thể sử dụng các công cụ thay đổi mật khẩu?
Bratchley

Câu trả lời:


12

Bạn có thể sử dụng công cụ mkpasswd để làm điều này. Có một kiến ​​thức tốt về cách sử dụng nó trên cyberciti.biz, có tiêu đề: Linux / UNIX: Tạo mật khẩu ngẫu nhiên với mkpasswd .

Thí dụ

mkpasswd --char=10 --crypt-md5

Gói thường được gọi makepasswd, nhưng công cụ thường được gọi mkpasswd.

Xem trang người đàn ông để biết thêm chi tiết.

Tạo nội dung /etc/shadowtrực tiếp

Lệnh python sau đây sẽ tạo ra phần đi vào /etc/shadowtệp:

Con trăn

$ python -c "import crypt, getpass, pwd; \
         print crypt.crypt('password', '\$6\$SALTsalt\$')"

Perl

$ perl -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'

Tạo ra đầu ra sau:

$6$SALTsalt$UiZikbV3VeeBPsg8./Q5DAfq9aj7CVZMDU6ffBiBLgUEpxv7LMXKbcZ9JSZnYDrZQftdG319XkbLVMvWcF/Vr/

Thay đổi / etc / bóng

Đây là một lệnh sẽ thay đổi mục nhập hiện có với trường mật khẩu mới được tạo từ lệnh trên.

perl -pe 's|(root):(\$.*?:)|\1:\$6\$SALTsalt\$UiZikbV3VeeBPsg8./Q5DAfq9aj7CVZMDU6ffBiBLgUEpxv7LMXKbcZ9JSZnYDrZQftdG319XkbLVMvWcF/Vr/:|' /etc/shadow > /etc/shadow.new

LƯU Ý: Đây là một ví dụ thô nhưng hoạt động. Bạn sẽ cần lấy kết quả từ lệnh đã tạo mật khẩu băm và thoát dấu đô la ($) bằng dấu gạch chéo (\ $).

Các kết quả được lưu trữ trong một tệp mới /etc/shadow.new. Khi bạn đã xác nhận kết quả, bạn có thể thay thế /etc/shadowbằng tệp mới , /etc/shadow.new.


Cảm ơn, nhưng tôi cần một lệnh để chỉnh sửa chuỗi trong tệp bóng.
John Smithv1

Xem thông tin cập nhật của tôi, đó là những gì bạn đang theo đuổi?
slm

Xin chào, bạn cũng có thể cung cấp cho tôi lệnh thay thế mật khẩu hiện có của người dùng trong tệp / etc / Shadow bằng mật khẩu đã tạo không?
John Smithv1

1
Tại sao bạn không thể sử dụng thay đổi chương trình mật khẩu? @JoelDavis cũng hỏi câu hỏi như một nhận xét về câu hỏi của bạn. Chỉ tò mò thôi.
slm

@slm, trong trường hợp của tôi, tôi không muốn đăng nhập vào máy của người dùng và để lại bất cứ thứ gì trong nhật ký historyhoặc lastnhật ký của họ .
Qian Chen

1

Giải pháp đơn giản nhất, nếu có mật khẩu trống không phải là vấn đề đối với bạn, là thay đổi tệp / etc / passwd chứ không phải / etc / bóng.

Một dòng ví dụ của tệp / etc / passwd là:

root: x: 0: 0: root: / root: / bin / bash

'X' trong dòng này có nghĩa là mật khẩu thực sự được lưu trữ băm trong tệp bóng. Một điều mà bạn có thể làm là chỉ cần loại bỏ nó như thế này:

root :: 0: 0: root: / root: / bin / bash

Sau đó, bạn thực sự có thể đăng nhập với tên người dùng gốc và với một mật khẩu trống.

Mong rằng sẽ giúp


0

Xóa tất cả mật khẩu cho người dùng trong / etc / bóng, khởi động hệ thống, đăng nhập mà không có mật khẩu, sau đó sử dụng lệnh passwd. Nếu có thể, đừng mang hệ thống lên mạng cho đến khi hoàn thành.


2
Xóa hàm băm mật khẩu /etc/shadowsẽ ngăn người dùng đăng nhập bằng bất kỳ mật khẩu nào vì không có gì bạn nhập có thể dẫn đến hàm băm khớp với chuỗi trống.
n.st

2
@ n.st Lời khuyên này có vẻ hợp lệ với tôi. Xem bài đăng này: stackoverflow.com/a/11700775/870150
Alex

1
Cũng có vẻ là lời khuyên trên tại Askubfox.com/a/84697/178596
Wilf
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.