Sau khi vô tình đổi tên / etc, làm thế nào để tôi đổi tên lại?


37

Tôi đang sử dụng Ubuntu 18.04.

Tôi đổi tên /etcthư mục thành apache2. Đó là sai lầm lớn nhất của tôi

Bây giờ tôi không thể đổi tên lại vì tôi cần sử dụng sudo, nhưng khi thử tôi gặp lỗi

sudo: unknown uid 1000

Làm thế nào tôi có thể khắc phục vấn đề này? Tôi không có hệ thống trực tiếp để khởi động và trong chế độ khôi phục, thiết bị đầu cuối gốc sẽ mở nhưng sau đó đóng lại cannot open password database.


17
Khởi động từ phương tiện cài đặt, chọn "Thử Ubuntu", gắn hệ thống tệp gốc của bạn vào /mnt, thực hiện đổi tên, khởi động lại.
AlexP

Làm thế nào để khởi động một phương tiện cài đặt?
Racoon

@Zanna, ca không cho tôi xem bất kỳ thực đơn nào. Có lẽ nút khác có thể mở nó?
Racoon

@Zanna, Menu khôi phục -> root mở terminal, nhưng nó nói không thể mở cơ sở dữ liệu mật khẩu và đóng
Racoon

@Zanna, không, chưa :(
Racoon

Câu trả lời:


63

Một cách dễ dàng để khắc phục các sự cố như thế này thường là khởi động từ hệ thống trực tiếp, gắn kết phân vùng gốc /mnt và sau đó đổi tên tệp.

Nếu bạn không có hệ thống trực tiếp hoặc phương tiện để tạo một hệ thống hoặc bạn không có quyền truy cập vật lý vào hệ thống nhưng bạn có thể khởi động lại và nhận menu GRUB, bạn có thể sử dụng trình soạn thảo GRUB để lấy shell gốc và đổi tên tập tin.

Khởi động lại hoặc tắt nguồn, bật và nếu bạn thường không thấy menu GRUB khi khởi động, nhấn Shifthoặc Escđể vào menu GRUB.

Di chuyển con trỏ xuống Tùy chọn nâng cao cho Ubuntu và nhấn enter, sau đó nhấn eđể chỉnh sửa tùy chọn khởi động (chỉ một lần duy nhất - thay đổi ở đây sẽ không vĩnh viễn, vì vậy chúng tôi không phải dọn dẹp sau đó).

Bạn sẽ thấy một màn hình trông giống như thế này 1 :

ảnh chụp màn hình của trình chỉnh sửa menu GRUB

Di chuyển con trỏ xuống dòng bắt đầu linuxvà sau đó di chuyển con trỏ đến cuối dòng đó hoặc bất kỳ vị trí nào trong số các tham số khởi động kernel ở đó. Hãy chắc chắn rằng bạn đang ở đúng dòng và gõ cẩn thận ở đây, vì hệ thống có thể không khởi động mà không có /etctại chỗ.

Thêm văn bản init=/bin/bashvà nhấn F10để khởi động.

Điều này sẽ khởi động hệ thống với shell Bash là init. Bạn sẽ nhận được một shell root và hệ thống tập tin sẽ được gắn chỉ đọc. 2 Để làm cho hệ thống tập tin có thể ghi, hãy nhập lệnh

mount -o remount,rw /

Bây giờ bạn có thể đổi tên /etc( lstrước tiên bạn có thể muốn )

mv /apache2 /etc

Bây giờ bạn có thể khởi động lại hoặc hoàn thành khởi động bình thường từ đây bằng cách sử dụng shell gốc thay thế bằng hệ thống init bình thường 3 :

exec systemd 

Tôi đã thử nghiệm quy trình này trên Ubuntu MATE 18.04.


1 Cảm ơn Kulfy vì đã có được một ảnh chụp màn hình chất lượng tốt của trình soạn thảo GRUB từ VirtualBox!
2 Mặc dù PATH không thể được đặt từ các tệp cấu hình /etctrong kịch bản này, Bash sẽ tự động đặt một .
3 Nếu exec systemdkhông hiệu quả với bạn, exec /sbin/initnên thực hiện các mẹo. Nếu không, readlink -e /sbin/initnên đưa đường dẫn đến bất kỳ chương trình init nào sẽ chạy, mà sau đó bạn có thể execvới đường dẫn đầy đủ của nó. Nếu bạn không thể tiến hành theo cách này, chỉ cần nhập reboot.


4
Rất kỹ lưỡng bao gồm ảnh chụp màn hình +1 :)
WinEunuuchs2Unix 18/12/18

3
@Kulfy cảm ơn bạn rất nhiều! thật tuyệt vời: DI không thể sử dụng VB vì tôi không có đủ RAM. Rất tốt các bạn để giúp cải thiện câu trả lời của tôi
Zanna

3
Tôi nghĩ rằng tôi đã chụp ảnh màn hình quá lớn: P ;-) và cảm ơn về các khoản tín dụng ảnh chụp màn hình :)
Kulfy

1
@Racoon Bạn rất hoan nghênh, rất vui vì bạn đã sửa nó :)
Zanna

Đang thử kiểm tra nhưng không hoạt động trong Ubuntu 18.04.Desktop. Thực hiện theo các hướng dẫn nguyên văn . Không làm việc. Sau khi F10chỉ có một vài dòng xuất hiện và dừng lại ở màn hình trống. Bạn có thể đề nghị một cái gì đó?
Vijay

8

Nếu bạn có USB trực tiếp, bạn sẽ có thể khởi động vào nó và gắn hệ thống tập tin hiện có của bạn, sau đó đổi tên của bạn /etctừ đó. Dưới đây là hướng dẫn về cách tạo USB trực tiếp nếu bạn cần.

Sau khi khởi động vào USB trực tiếp (Nếu sử dụng ổ Ubuntu 18.04), hãy chọn "Dùng thử Ubuntu mà không cần cài đặt" và về cơ bản nó sẽ cung cấp cho bạn một bản sao đầy đủ của bản cài đặt Ubuntu không tồn tại sau khi tắt máy. Sau khi khởi động, bạn có một vài lựa chọn:

Đường chỉ huy

Mở một thiết bị đầu cuối và chạy lsblk. Tìm ổ đĩa sẽ là ổ đĩa cài đặt ban đầu của bạn và lưu ý số đó là (/ dev / sd #)

Sau đó, tạo một điểm gắn kết cho ổ đĩa mkdir -p /mnt/directory, sau đó gắn ổ đĩa với sudo mount /dev/sd# /mnt/directory. Điều hướng đến thư mục với cd /mnt/directoryvà bây giờ bạn sẽ ở trong thư mục gốc của cài đặt, nhưng bây giờ với sudolệnh làm việc . chạy sudo mv apache2 etcvà khởi động lại vào hệ điều hành giả định của bạn.

Cách đồ họa

Mở tiện ích đĩa bằng cách tìm kiếm Đĩa. Chọn âm lượng giống như ổ đĩa cài đặt của bạn và gắn nó. Mở trình quản lý tệp và chọn ổ đĩa được gắn, nhấp chuột phải vào /apache2thư mục của bạn và đổi tên thành /etc, sau đó khởi động lại.


"Cách đồ họa" không hoạt động vì không có tùy chọn "Đổi tên" trên Rt. nhấp chuột.
Vijay

1
@Vijay Điều đó có thể là do quyền của tệp, bạn sẽ cần mở trình quản lý tệp dưới dạng root để thực hiện bằng đồ họa. Để làm điều đó, chạy lệnh sudo nautilustừ thiết bị đầu cuối. (Ubuntu sử dụng "nautilus" làm trình quản lý tệp giống như cách Windows sử dụng "trình thám hiểm".)
AJMansfield

2
@AJMansfield tất nhiên không thành vấn đề trên hệ thống trực tiếp, nhưng nói chung chúng ta nên sử dụng sudo -H nautilusđể tránh việc root trở thành chủ sở hữu của tệp cấu hình $HOME, có khả năng khiến chúng không thể truy cập được bởi các chương trình chạy như một người dùng thông thường. Bạn có thể biết điều này, nhưng tôi đang đề cập cho các độc giả khác.
Zanna

6
  1. Tạo USB khả năng khởi động như hiển thị ở đây.

  2. Khởi động từ USB bằng cách bấm phím như hiển thị ở đây.

  3. Tìm ra phân vùng hệ thống tập tin của bạn bằng cách chạy gparted. Giả sử nó là sdxy.

  4. Chạy trên thiết bị đầu cuối sudo mount /dev/sdxy /mnt

  5. Chạy trên thiết bị đầu cuối sudo mv /mnt/apache2 /mnt/etc

  6. Kiểm tra hệ thống tệp của bạn trong / mnt để thay đổi tên.

  7. Chạy trên thiết bị đầu cuối sudo reboot

  8. Khi được nhắc rút USB và nhấn enter


@Kulfy Tôi đã thử nhưng nó không hoạt động nếu không có sudo. Xem tại đây .
Vijay

Điều này là do sda2 được gắn với sudo, do đó chỉ sudo mới có thể thực hiện các hành động. Nhưng nếu bạn gắn ổ đĩa bằng nautilus (không có sự cho phép đặc biệt nào), bạn có thể thực hiện các tác vụ mà không cần sudo.
Kulfy

Đã kiểm tra nó `ubfox @ ubfox: ~ $ mount / dev / sda2 / mnt mount: chỉ root mới có thể làm điều đó ubfox @ ubfox: ~ $
Vijay

1
AFAIK mountchương trình rất nghiêm ngặt và luôn phải được chạy dưới quyền root; ngoại lệ duy nhất này là khi hệ thống tập tin vào fstabvà có usertùy chọn. Chương trình udisksctlcho phép người dùng bình thường gắn thiết bị, ví dụ sử dụng udisksctl mount -b /dev/sda1(nó tạo ra điểm gắn kết phù hợp /media/$USER/). Tôi chưa thử sử dụng udisksctltừ hệ thống trực tiếp, nhưng trên hệ thống trực tiếp, người dùng luôn có một người dùng đặc quyền có thể chạy sudomà không cần mật khẩu nên không cần các tiện ích như udisksctlrất hữu ích
Zanna
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.