Làm thế nào chúng ta có thể thay đổi mật khẩu root?


39

Nếu chúng ta không biết mật khẩu root và không có quyền truy cập root vào máy, làm thế nào chúng ta có thể thay đổi mật khẩu root?


Đây là một câu hỏi thường được hỏi, hãy xem Askubfox.com/questions/24006/ trên
Archemar



Câu trả lời:


63

Dưới đây là một vài cách tôi có thể nghĩ ra, từ ít xâm phạm nhất đến xâm phạm nhất.

Không cần khởi động lại

Với sudo: nếu bạn có sudoquyền chạy passwd, bạn có thể làm:

sudo passwd root

Nhập mật khẩu của bạn , sau đó nhập mật khẩu mới để root hai lần. Làm xong.

Chỉnh sửa file : công trình này trong trường hợp không chắc bạn không có đầy đủ sudoquyền truy cập, nhưng bạn làm có quyền truy cập để chỉnh sửa /etc/{passwd,shadow}. Mở /etc/shadow, hoặc với sudoedit /etc/shadow, hoặc với sudo $EDITOR /etc/shadow. Thay thế trường mật khẩu của root (tất cả các ký tự ngẫu nhiên giữa dấu hai chấm thứ hai và thứ ba :) bằng trường mật khẩu của chính người dùng của bạn. Tiết kiệm. Các địa phương có cùng mật khẩu với bạn. Đăng nhập và thay đổi mật khẩu để một cái gì đó khác.

Đây là những người dễ dàng.

Yêu cầu tái thiết lập

Chế độ một người dùng : Điều này vừa được Renan giải thích. Nó hoạt động nếu bạn có thể truy cập GRUB (hoặc bộ tải khởi động của bạn) và bạn có thể chỉnh sửa dòng lệnh Linux. Nó không hoạt động nếu bạn sử dụng Debian, Ubuntu và một số thứ khác. Một số cấu hình bộ tải khởi động yêu cầu mật khẩu để làm như vậy và bạn phải biết điều đó để tiếp tục. Nếu không có thêm rắc rối:

  1. Khởi động lại.
  2. Nhập mật khẩu thời gian khởi động, nếu có.
  3. Nhập trình đơn khởi động của bạn.
  4. Nếu chế độ một người dùng khả dụng, hãy chọn chế độ đó (Debian gọi đó là mode Chế độ khôi phục ').
  5. Nếu không, và bạn chạy GRUB:
    1. Làm nổi bật tùy chọn khởi động bình thường của bạn.
    2. Nhấn eđể vào chế độ chỉnh sửa. Bạn có thể được yêu cầu nhập mật khẩu GRUB ở đó.
    3. Đánh dấu dòng bắt đầu bằng kernelhoặc linux.
    4. Nhấn e.
    5. Thêm từ 'độc thân' ở cuối. (đừng quên để thêm một khoảng trống!)
    6. Nhấn Entervà khởi động khổ thơ đã chỉnh sửa. Một số GRUB sử dụng Ctrl- X, một số sử dụng b. Nó nói cái nào ở dưới cùng của màn hình.

Hệ thống của bạn sẽ khởi động trong chế độ người dùng. Một số bản phân phối sẽ không yêu cầu bạn nhập mật khẩu gốc vào thời điểm này (những bản phân phối dựa trên Debian và Debian). Bây giờ bạn đã root. Thay đổi mật khẩu của bạn:

mount / -o remount,rw
passwd # Enter your new password twice at the prompts
mount / -o remount,ro
sync # some people sync multiple times. Do what pleases you.
reboot

reboot, hoặc, nếu bạn biết runlevel bình thường của bạn, hãy nói telinit 2(hoặc bất cứ điều gì).

Thay thếinit : bề ngoài tương tự như thủ thuật chế độ người dùng đơn lẻ, với phần lớn các hướng dẫn tương tự, nhưng đòi hỏi nhiều năng lực hơn với dòng lệnh. Bạn khởi động kernel của bạn như trên, nhưng thay vì single, bạn thêm init=/bin/sh. Điều này sẽ chạy /bin/shthay thế init, và sẽ cung cấp cho bạn một vỏ rất sớm mà hầu như không có tiện nghi. Tại thời điểm này, mục tiêu của bạn là:

  1. Gắn khối lượng gốc.
  2. Hãy passwdchạy đi.
  3. Thay đổi mật khẩu của bạn với passwdlệnh.

Tùy thuộc vào thiết lập cụ thể của bạn, chúng có thể là tầm thường (giống với hướng dẫn cho chế độ người dùng đơn) hoặc không tầm thường: tải mô-đun, khởi tạo phần mềm RAID, mở khối lượng mã hóa, bắt đầu LVM, et cetera. Nếu không init, bạn không chạy dons hoặc bất kỳ quy trình nào khác ngoài /bin/shcon của nó, vì vậy bạn tự mình thực sự xinh đẹp. Bạn cũng không có kiểm soát công việc, vì vậy hãy cẩn thận với những gì bạn nhập. Một vị trí sai catvà bạn có thể phải khởi động lại nếu bạn không thể thoát ra khỏi nó.

Cứu đĩa : cái này dễ. Khởi động một đĩa cứu hộ của sự lựa chọn của bạn. Gắn hệ thống tập tin gốc của bạn. Quá trình này phụ thuộc vào cách khối lượng của bạn được xếp lớp, nhưng cuối cùng sẽ nắm rõ:

 # do some stuff to make your root volume available.
 # The rescue disk may, or may not do it automatically.
 mkdir /tmp/my-root
 mount /dev/$SOME_ROOT_DEV /tmp/my-root
 $EDITOR /tmp/my-root/etc/shadow
 # Follow the `/etc/shadow` editing instructions near the top
 cd /
 umount /tmp/my-root
 reboot

Rõ ràng, $SOME_ROOT_DEVlà bất cứ tên thiết bị khối nào được gán cho hệ thống tập tin gốc của bạn bằng đĩa cứu hộ và $EDITORlà trình soạn thảo yêu thích của bạn (có thể phải vinằm trong hệ thống cứu hộ). Sau khi reboot, cho phép máy khởi động bình thường; mật khẩu của root sẽ là mật khẩu của chính người dùng của bạn. Đăng nhập bằng root và thay đổi nó ngay lập tức.

Những cách khác

Rõ ràng, có vô số biến thể ở trên. Tất cả đều sôi xuống hai bước:

  1. Nhận quyền truy cập root vào máy tính (Catch-22 - và mẹo thực sự)
  2. Thay đổi mật khẩu của root bằng cách nào đó.

Dù sao để làm điều này từ xa? Giả sử rằng SSH đã tắt máy.
CMCDragonkai

1
Nếu không có SSH (hoặc, giả sử bất kỳ phương pháp nào khác, không an toàn như rsh hoặc telnet), bạn không có quyền truy cập từ xa vào máy, vì vậy bạn không thể thay đổi mật khẩu. Tất nhiên, trừ khi máy tính mục tiêu có một vấn đề có thể khai thác từ xa có thể giúp bạn bằng cách nào đó sinh ra một cái vỏ. Ý nghĩ đó làm tôi sợ hơn cả một daemon telnet chạy trên nó. :)
Alexios

Vì vậy, tôi sẽ phải dịch chuyển tức thời đến đó để sửa chữa nó?
CMCDragonkai

WRT "Thay đổi mật khẩu của root bằng cách nào đó", xem tại đây: unix.stackexchange.com/a/168422/25985
goldilocks

7

Điều này sẽ làm việc trên bất kỳ distro, tôi nghĩ.

Nếu bạn có thể truy cập phân vùng gốc từ một hệ thống khác, ví dụ như đĩa CD trực tiếp, bạn có thể root từ đó chỉnh sửa /etc/shadow; đầu tiên bạn phải chmod u+w shadow. Tìm mục cho root, đây có thể là mục đầu tiên và trông giống như thế này:

root:$6$asdG0[..etc...]ae/:15666:0:99999:7:::

Xóa mọi thứ giữa hai dấu hai chấm đầu tiên để bạn kết thúc với:

root::15666:0:99999:7:::

Sau đó chmod u-w shadow. Bây giờ bạn có thể khởi động lại hệ thống và root sẽ không có mật khẩu. Bạn chỉ có thể gõ roottại dấu nhắc đăng nhập và nó sẽ không yêu cầu. Sau đó bạn có thể sử dụng passwdđể thiết lập một.

Cẩn thận hơn:

  • Tạo một bản sao lưu /etc/shadowđầu tiên.
  • Không đăng nhập với tư cách bất kỳ ai trừ root cho đến khi bạn đặt mật khẩu mới. Điều này không quan trọng, nhưng những người bảo vệ chống lại khả năng về mặt lý thuyết của phần mềm độc hại không có đặc quyền khiến cho một số loại mưa đá đi qua ("Này, có lẽ không có mật khẩu gốc ..."). IMO rất xa.

Điều đó sẽ làm việc, nhưng cậu bé làm cho tôi * co rúm * để xóa mật khẩu trên tài khoản root. Tôi mang nó Ubuntu không thả bạn trong một vỏ gốc trong runlevel 1? Hay là một ý tưởng tốt hơn là chạy passwdtrong môi trường chroot từ CD trực tiếp?
Thủy thủ

Nếu bạn cảm thấy an toàn hơn khi thử những phương pháp khác trước, hãy tiếp tục. Nhưng miễn là bạn không rời khỏi hệ thống mà không có mật khẩu root, điều này sẽ ổn thôi. Sẽ không có điểm nào trong phần mềm độc hại đã cố gắng khai thác điều này, bởi vì nếu nó đang chạy khi khởi động, thì dù sao nó cũng đã có quyền root. Vì vậy, trước tiên, đừng đăng nhập như bất kỳ ai khác, tôi đoán (có thể là sự cố trên các hệ thống không cho phép root thông qua trình quản lý hiển thị, trừ khi bạn có thể chuyển sang bảng điều khiển). Ngay cả sau đó có vẻ như không thể.
goldilocks

@SailorCire ^^ ^
goldilocks

Tôi rất nghi ngờ về khả năng phần mềm độc hại là tốt. Tuy nhiên, ý tưởng đằng sau những gì tôi đề xuất là nó cấm kiểu "Ồ tôi sẽ thay đổi nó sau, bởi vì nó hoạt động ngay bây giờ" mà rất nhiều người trong chúng ta rơi vào.
Thủy thủ

Bạn cũng có thể tham khảo câu trả lời này để biết cách tạo mật khẩu thủ công cho/etc/shadow
NullUser

4

Đánh giá từ các thẻ tôi cho rằng bạn đang sử dụng RHEL, nhưng giải pháp này sẽ hoạt động tốt như nhau cho tất cả các bản phát hành.

Nếu mật khẩu gốc bị quên, bạn có thể khởi động ở chế độ một người dùng và sử dụng mật khẩu này để thay đổi mật khẩu. Cách tiếp cận này được mô tả trong hướng dẫn từng bước của Red Hat :

  1. Vào menu GRUB và nhấn e.
  2. Chọn dòng bắt đầu bằng kernel, nhấn elại.
  3. Vào cuối dòng này, đặt single. Sau đó nhấn ENTERboot từ nó.

Cuối cùng, bạn sẽ nhận được một dấu nhắc nơi bạn có thể nhập passwd rootvà thay đổi mật khẩu. Sau đó gõ rebootđể khởi động lại hệ thống.


1
Điều này sẽ chỉ hoạt động nếu bạn không có bất kỳ mật khẩu khởi động.
pradeepchhetri

1
Và nếu bạn không sử dụng / sbin / sulogin cho trình bao một người dùng (nó sẽ nhắc nhập mật khẩu của root).
James O'Gorman

Nếu bạn có thể truy cập hệ thống tệp, bạn có thể chỉnh sửa /boot/grub/grub.confđể xóa mật khẩu bộ nạp khởi động và /etc/inittabthay đổi trình bao người dùng đơn thành một cái gì đó như / bin / sh (cc @pradeepchhetri)
NullUser
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.