Câu trả lời:
TL; DR: Không, mật khẩu được lưu dưới dạng băm có thể (nói chung) không thể được phục hồi.
Linux không lưu trữ mật khẩu văn bản đơn giản ở bất cứ đâu theo mặc định . Chúng được băm hoặc mã hóa thông qua một loạt các thuật toán. Vì vậy, nói chung, không, điều này là không thể với dữ liệu được lưu trữ.
Nếu bạn có mật khẩu được lưu trữ ở nơi nào khác ngoài /etc/passwd
cơ sở dữ liệu, chúng có thể được lưu trữ theo cách cho phép điều này. htpasswd
các tệp có thể chứa mật khẩu được mã hóa rõ ràng và các ứng dụng khác có thể lưu trữ băm yếu hơn hoặc mật khẩu văn bản đơn giản vì nhiều lý do (thường là xấu).
Ngoài ra, các tệp cấu hình người dùng có thể chứa mật khẩu không được mã hóa hoặc mật khẩu được bảo vệ yếu vì nhiều lý do - lấy nội dung lấy từ dịch vụ khác .netrc
hoặc những thứ tự động đơn giản có thể bao gồm mật khẩu.
Nếu mật khẩu được băm hoặc mã hóa bằng thuật toán cũ, yếu (3DES, MD5), bạn có thể tìm ra mật khẩu một cách hợp lý / rẻ tiền - mặc dù thông qua việc tấn công dữ liệu thay vì chỉ đảo ngược chuyển đổi. (ví dụ: những thứ như http://project-rainbowcrack.com/ hoặc http://www.openwall.com/john/ )
Vì bạn đã root nên cũng có thể tấn công mật khẩu người dùng ở cấp độ khác - thay thế nhị phân đăng nhập, hoặc sudo, hoặc một phần của PAM, v.v., bằng thứ gì đó sẽ chiếm được mật khẩu khi được nhập.
Vì vậy, cụ thể, không, nhưng nói chung việc có quyền truy cập root sẽ giúp dễ dàng lấy thông tin chi tiết của người dùng thông qua các kênh bên khác nhau.
Ngược lại với một số câu trả lời khác ở đây, tôi muốn nói rằng câu trả lời đơn giản cho câu hỏi này và nhiều câu hỏi khác kết thúc bằng "nếu bạn có root" là CÓ.
Về cơ bản, root có thể làm bất cứ điều gì trên máy mà chính hệ thống có thể làm. Hệ thống có thể chấp nhận mật khẩu của bạn, vì vậy root có thể chấp nhận mật khẩu của bạn hoặc của chính anh ấy thay cho mật khẩu của bạn, với đủ nỗ lực. Quan trọng hơn, anh ta có thể chỉ cần thay đổi mật khẩu của bạn, hoặc TRỞ THÀNH bạn.
Cụ thể, mật khẩu thường được mã hóa. Đây thường là một loại thuật toán được gọi là "một chiều", tạo ra một số (hàm băm) có thể được sử dụng để kiểm tra mật khẩu, nhưng thường không đảo ngược số và lấy lại mật khẩu. Vì vậy, không chỉ là đọc một tập tin để lấy mật khẩu của ai đó.
Điều đó nói rằng, bạn CÓ THỂ đọc lịch sử shell của họ và lịch sử đăng nhập, nơi họ rất có thể đã nhập mật khẩu của họ thay vì tên người dùng của họ tại một thời điểm nào đó, hoặc nhập nó vào một vỏ thay vì tại một dấu nhắc mật khẩu. Trong trường hợp đó, nó sẽ là văn bản đơn giản. Điều này là đáng lo ngại phổ biến trên các thiết bị đầu cuối dựa trên văn bản, không có giải pháp tốt mà tôi biết.
Tuy nhiên, ngay cả đặt vấn đề đó sang một bên, mã hóa "một chiều" không thực sự là một chiều. Có rất nhiều công cụ xung quanh sẽ trải qua nhiều tổ hợp cụm mật khẩu, mã hóa chúng theo cùng một quy trình một chiều, cho đến khi bạn tìm thấy một công cụ phù hợp. Sau đó, họ biết mật khẩu sẽ có quyền truy cập (mặc dù là root, họ CRENG CÓ quyền truy cập, trên máy THAT).
Tồi tệ hơn, có các bảng cầu vồng, là câu trả lời được tính toán trước cho quy trình trên: mọi người đã tạo mật khẩu gốc xuất phát từ mật khẩu được mã hóa đã cho. Sử dụng những thứ này, đó là một tra cứu đơn giản - không yêu cầu bẻ khóa tốn thời gian.
Một lần nữa, truy cập cấp gốc là điều cần bảo vệ. Với sự thỏa hiệp đó, toàn bộ máy và mọi thứ trên đó đều bị xâm phạm. Đã đến lúc bắt đầu lại, bao gồm thông báo cho tất cả người dùng của bạn rằng doanh nghiệp của bạn không còn có thể tin cậy để bảo vệ quyền riêng tư của họ. Và, vâng, điều đó có thể có nghĩa là đi ra khỏi kinh doanh.
Nếu bạn có root
thì bạn có thể chạy trình bẻ khóa mật khẩu /etc/shadow
(giả sử mật khẩu cục bộ chứ không phải LDAP hoặc Kerberos, v.v.). Điều này có thể không hiệu quả nếu họ chọn mật khẩu tốt và hệ thống được cấu hình để sử dụng băm mật khẩu mạnh. Nhưng mật khẩu hệ thống không được lưu trữ trong bản rõ; mật khẩu không có sẵn trực tiếp ngay cả để root
.
Tất cả các mật khẩu được lưu trữ trong /etc/shadow
tập tin. Bạn có thể mở tệp này bằng quyền truy cập root và xem hash value
các mật khẩu này cho mỗi người dùng (ngay cả người dùng root).
Trừ khi bạn có bất kỳ loại phần mềm giải mã mật khẩu nào, bạn không thể chuyển đổi các giá trị băm này thành văn bản bình thường.
Nhưng nếu bạn có quyền truy cập vào người dùng root, bạn có thể thay đổi bất kỳ mật khẩu người dùng thông thường nào bằng cách sử dụng lệnh sau và truy cập vào tài khoản của họ.
root@localhost$ passwd pradeep
Điều này sẽ hỏi bạn về mật khẩu mới mà bạn muốn đặt cho người dùng pradeep
. Bằng cách này bạn có thể thay đổi passwd cho pradeep.
Bây giờ bạn có thể truy cập từ tài khoản của mình bằng cách:
root@localhost$ su pradeep
Điều này sẽ dẫn đến việc chuyển sang người dùng pradeep và bạn sẽ nhận được một thiết bị đầu cuối như thế này:
pradeep@localhost$