Theo mặc định, Raspbian được cấu hình để tài khoản root không thể đăng nhập bằng mật khẩu. Điều này được thực hiện bằng cách bắt đầu với một mục trong /etc/password
đó bắt đầu:
root:x:0:0:
Các trường được phân tách bằng dấu hai chấm và được giải thích trong man 5 passwd
(lưu ý 5
, vì man passwd
sẽ cung cấp cho bạn trang man cho lệnh passwd
; phần 5 dành cho các tệp cấu hình và trong trường hợp này chúng có cùng tên). Ở đây, cái đầu tiên là tên ( root
), thứ ba và thứ tư là uid và gid số (cả hai 0
), và cái thứ hai là cho mật khẩu. Đối với hầu hết các mục này sẽ là x
, cho biết mật khẩu thực tế nằm trong một tệp khác , /etc/shadow
.
Lưu ý rằng "mật khẩu thực tế" không thực sự được lưu trữ ở bất cứ đâu. Những gì được lưu trữ trong đó shadow
là hàm băm một chiều của mật khẩu thực tế. Băm một chiều là kết quả của một quá trình sẽ luôn tạo ra cùng một thứ (cho phép mật khẩu của bạn được xác minh), nhưng không thể đảo ngược. Nói cách khác, nếu ai đó có được bàn tay của họ shadow
, không có cách nào để suy ra mật khẩu từ hàm băm. Tuy nhiên, nếu họ có thể sửa đổi shadow
, rõ ràng họ có thể vô hiệu hóa hoặc thay đổi những gì sẽ hoạt động như một mật khẩu. Nhưng họ sẽ không bao giờ có thể khám phá mật khẩu của bạn. Đây là lý do tại sao thậm chí root
không thể làm điều đó (mặc dù root luôn có thể thay đổi chúng thành một thứ khác mà không cần bản gốc).
Trong trường hợp của root, mục nhập shadow
bắt đầu như thế này, giống như đối với hầu hết các tài khoản hệ thống khác:
root:*:
Điều này *
cho thấy hiện tại không có mật khẩu có thể được sử dụng cho tài khoản này.
Người sử dụng root có thể thay đổi điều này, tuy nhiên, bằng cách sử dụng passwd
lệnh để thiết lập một mật khẩu mới, sẽ thay thế *
với giá trị băm đề cập trước đó (những luôn luôn bắt đầu $n$
ở đâu n
là một số giá trị ngẫu nhiên mà được sử dụng như là "muối" cho băm, nhưng bạn không Không cần phải hiểu điều đó).
Dù sao, khi tôi thiết lập một thẻ từ một hình ảnh mới, điều đầu tiên tôi làm là đi vào /etc/passwd
và xóa x
mục nhập gốc để bây giờ bắt đầu:
root::0:0
Thông báo bây giờ không có trường thứ hai. Điều này có nghĩa là không có mật khẩu và tất cả những gì bạn phải làm là gõ root
vào dấu nhắc đăng nhập và bạn đã đăng nhập với tư cách root
. Sau đó bạn có thể sử dụng passwd
để thiết lập một.
Vì vậy, bạn có hai lựa chọn ở đây nhưng cả hai đều yêu cầu bạn lấy thẻ ra khỏi pi và truy cập phân vùng thứ hai từ một hệ thống khác (có thể đọc / ghi phân vùng ext4).
Khôi phục sudoers
. Nếu bạn có một hình ảnh tham khảo thì điều này thật dễ dàng, bạn có thể đặt nó trở lại như cũ bằng cách thay thế nó. Mặt khác, nó là tùy chọn phức tạp hơn vì bạn phải biết những gì bạn đang làm (và hồ sơ theo dõi của bạn sudoers
không tốt lắm ...).
Chỉnh sửa /etc/passwd
và xóa nó x
như được mô tả ở trên, đặt lại thẻ, đăng nhập như root
, tạo mật khẩu. Tất nhiên, bạn vẫn sẽ cần sửa sudoers
, nhưng bản dùng thử và lỗi sẽ được thực hiện dễ dàng hơn vì nếu bạn thực sự root
, bạn sẽ luôn có thể truy cập nó.
Nếu bạn không có một hệ thống có thể truy cập các hệ thống tập tin ext4 ("CD trực tiếp" của Debian là một lựa chọn tốt ở đây), thì bạn đã bị mắc kẹt. Bạn sẽ phải làm lại thẻ và bắt đầu lại.