Làm thế nào để khôi phục mật khẩu root trên CentOS 7/ RHEL 7
Thông thường, việc đặt lại root password là một tác vụ đơn giản nếu bạn đăng nhập sẵn với quyền root, tuy nhiên nếu bạn quên mật khẩu và cần thay đổi thì có thể sẽ gặp phải một chút khó khăn.
Quá trình này đã thay đổi từ phiên bản 6 sang 7 của CentOS / RHEL (Red Hat Enterprise Linux). Nếu là trước đây bạn sẽ khởi động chế độ single mode và sau đó thay đổi mật khẩu thành root.
Từ phiên bản 7, các chế độ tương đương là các mục tiêu an ninh hoặc khẩn cấp, và chúng yêu cầu mật khẩu gốc trước khi bạn có thể làm bất cứ điều gì, vì vậy chúng tôi sẽ hướng dẫn bạn qua quy trình mới để thay đổi mật khẩu gốc bị mất.
Các thao tác này sẽ được hoàn thành trong giao diện điều khiển của hệ thống Linux, vì vậy hãy chắc chắn rằng bạn có quyền truy cập vào hệ điều hành trước khi bắt đầu. Như với tất cả các tác vụ bảo trì hệ thống, hãy đảm bảo bạn có backup/snapshot hệ thống trước khi tiếp tục.
Thao tác đổi mật khẩu
1. Nếu hệ thống Linux của bạn hiện đang chạy, hãy khởi động lại, còn nếu chưa chạy, hãy khởi động hệ thống. Ở menu khởi động, nhấn phím 'e' để chỉnh sửa mục khởi động đầu tiên.
2. Từ các tùy chọn grub, tìm dòng có bắt đầu với "linux16" và đi đến cuối dòng. Nhập 'rd.break' không có dấu ngoặc kép ở cuối dòng này, như được hiển thị bên dưới.
3. Nhấn "Ctrl x" để khởi động với các tùy chọn này. Nó sẽ khởi động dấu nhắc initramfs với một root shell
4. Ở giai đoạn này, root file system được mount ở chế độ chỉ đọc vào /sysroot và phải được đặt lại với quyền đọc / ghi (rw) để bạn có thể thực sự thực hiện bất kỳ thay đổi nào. Bước này được thực hiện với lệnh 'mount -o remount, rw / sysroot'.
5. Một khi hệ thống tập tin đã được cập nhật, thay đổi thành một chroot jail để /sysroot được sử dụng như là root của hệ thống tập tin. Điều này là bắt buộc để bất kỳ lệnh nào khác mà bạn chạy đều sẽ kết với /sysroot. Bước này được thực hiện bằng cách chạy 'chroot / sysroot'.
6. Từ đây, root password có thể được đặt lại bằng lệnh 'passwd'.
7. Nếu bạn không sử dụng SELinux, bạn có thể khởi động lại vào thời điểm này, tuy nhiên theo mặc định, CentOS / RHEL 7 sử dụng SELinux trong chế độ enforcing, vì vậy chúng ta cần sửa ngữ cảnh của tệp /etc/shadow. Sở dĩ cần làm như vậy là do khi lệnh 'passwd' được chạy, nó sẽ tạo một tệp /etc/shadow mới. Vì SELinux không chạy trong chế độ này, tệp được tạo không có ngữ cảnh SELinux và có thể gây ra sự cố khi khởi động lại. Tạo lệnh /.autorelabel bằng cách sử dụng 'touch'.Tạo tệp này sẽ tự động thực hiện relabel tất cả các tệp khi khởi động lần tiếp theo. Lưu ý rằng việc này có thể mất chút ít thời gian tùy thuộc vào số lượng tệp bạn có trên file system. Đối với một server vanillaCentOS 7 đơn giản, sẽ mất khoảng 2 phút để hoàn thành.
8. Nhập lệnh 'exit' hai lần, lệnh đầu tiên sẽ thoát khỏi môi trường tù chroot trong khi lệnh thứ hai sẽ thoát khỏi initramfs root shell và khởi động lại hệ thống.
Sau khi khởi động xong, bạn có thể sử dụng tài khoản root với mật khẩu mới được thiết lập.
Tổng kết
Với các thao tác trên đây, bạn có thể thiết lập lại mật khẩu root trong Linux CentOS / RHEL 7 bằng cách khởi động với tùy chọn 'rd.break', remounting hệ thống tập tin với quyền read / write, tạo một chroot jail, thực thi lệnh passwd và cuối cùng là sửa SELinux. Sau khi thoát khỏi chroot và initramfs root shell, hệ thống tệp sẽ được relabelled, có thể mất vài phút hoặc hơn tùy thuộc vào số lượng tệp bạn có. Khi hệ thống của bạn đã khởi động trở lại, bạn sẽ sử dụng được root password mới