우분투 18.04를 사용하고 있습니다.
/etc
폴더 이름을로 변경 했습니다 apache2
. 그건 내 가장 큰 실수 였어
이제를 사용해야하기 때문에 이름을 바꿀 수 없지만 sudo
오류가 발생하면
sudo: unknown uid 1000
이 문제를 어떻게 해결할 수 있습니까? 부팅 할 라이브 시스템이없고 복구 모드에서 루트 터미널이 열리지 만을 (를) 닫습니다 cannot open password database
.
우분투 18.04를 사용하고 있습니다.
/etc
폴더 이름을로 변경 했습니다 apache2
. 그건 내 가장 큰 실수 였어
이제를 사용해야하기 때문에 이름을 바꿀 수 없지만 sudo
오류가 발생하면
sudo: unknown uid 1000
이 문제를 어떻게 해결할 수 있습니까? 부팅 할 라이브 시스템이없고 복구 모드에서 루트 터미널이 열리지 만을 (를) 닫습니다 cannot open password database
.
답변:
이와 같은 문제를 해결하는 쉬운 방법은 종종 라이브 시스템에서 부팅하고 루트 파티션을 마운트 /mnt
한 다음 파일 이름을 바꾸는 것입니다.
라이브 시스템이 없거나 시스템을 만들 수있는 방법이 없거나 시스템에 물리적으로 액세스 할 수 없지만 GRUB 메뉴를 재부팅하고 가져올 수있는 경우 GRUB 편집기를 사용하여 루트 쉘을 가져와 이름을 바꿀 수 있습니다 파일.
재부팅하거나 전원을 껐다가, 스위치, 정상적으로 부팅 눌러에 GRUB 메뉴가 표시되지 않는 경우 Shift또는 EscGRUB 메뉴에 도착.
아래로 커서를 이동 우분투에 대한 고급 옵션 Enter 키를 누릅니다 enter다음를 누릅니다 e편집에 부팅 옵션 (하나의 시간 - 우리가 나중에 정리하지 않아도, 영구적으로하지 않습니다 여기 변경).
다음과 같은 화면이 나타납니다 1 :
커서를 시작하는 줄로 linux
이동 한 다음 커서를 해당 줄의 끝 또는 커널 부팅 매개 변수의 아무 곳으로나 이동하십시오. 시스템이 /etc
제자리에 있지 않으면 부팅에 실패 할 수 있으므로 올바른 행에 있고 여기에주의하여 입력하십시오 .
텍스트를 추가 하고을 init=/bin/bash
눌러 F10부팅하십시오.
이것은 Bash 쉘을 init로하여 시스템을 시작합니다. 루트 셸을 얻게되고 파일 시스템은 읽기 전용으로 마운트됩니다. 2 파일 시스템을 쓰기 가능하게하려면 다음 명령을 입력하십시오.
mount -o remount,rw /
이제 이름을 바꿀 수 있습니다 /etc
(먼저 이름을 원할 수도 있음 ls
)
mv /apache2 /etc
이제 루트 쉘을 일반 init 시스템 3으로 바꾸어 재부팅하거나 여기에서 정상적으로 부팅을 완료 할 수 있습니다 .
exec systemd
Ubuntu MATE 18.04에서이 절차를 테스트했습니다.
1 VirtualBox에서 GRUB 편집기의 우수한 스크린 샷을 얻은 Kulfy 에게 감사드립니다 !
2/etc
이 시나리오에서는 구성 파일에서 PATH를 설정할 수 없지만 Bash는 자동으로 하나를 설정 합니다.
3 의 경우는 exec systemd
, 당신을 위해 작동하지 않는 exec /sbin/init
트릭을 할해야합니다. 그렇지 않다면, readlink -e /sbin/init
init 프로그램이 실행해야 할 경로를 지정해야합니다 exec
. 그러면 전체 경로 를 사용할 수 있습니다 . 이 방법으로 진행할 수 없으면을 입력하십시오 reboot
.
F10
몇 줄만 나타난 후 빈 화면에서 멈 춥니 다. 당신은 뭔가를 제안 할 수 있습니까?
라이브 USB가있는 경우 USB로 부팅하여 기존 파일 시스템을 마운트 한 다음 이름을 바꿉니다 /etc
. 라이브 USB를 만드는 방법에 대한 자습서는 다음과 같습니다 .
라이브 USB로 부팅 한 후 (Ubuntu 18.04 드라이브를 사용하는 경우) "설치하지 않고 Ubuntu 설치"를 선택하면 종료 후에도 유지되지 않는 Ubuntu 설치의 전체 인스턴스가 제공됩니다. 부팅되면 몇 가지 옵션이 있습니다.
커맨드 라인 방식
터미널을 열고 실행하십시오 lsblk
. 원래 설치 드라이브가 될 볼륨을 찾고 어떤 번호 (/ dev / sd #)인지 확인하십시오.
그런 다음을 사용하여 드라이브의 마운트 지점을 생성 한 다음을 사용하여 드라이브 mkdir -p /mnt/directory
를 마운트하십시오 sudo mount /dev/sd# /mnt/directory
. 로 디렉토리를 탐색 cd /mnt/directory
하면 이제 설치의 루트 디렉토리에 있지만 작동중인 sudo
명령 이 있어야합니다 . sudo mv apache2 etc
가상으로 작동하는 OS를 실행 하고 재부팅하십시오.
그래픽 방식
디스크를 검색하여 디스크 유틸리티를여십시오. 설치 드라이브처럼 보이는 볼륨을 선택하고 마운트하십시오. 파일 관리자를 열고 마운트 된 볼륨을 선택하고 /apache2
폴더를 마우스 오른쪽 단추로 클릭 하고 이름을 바꾼 /etc
다음 재부팅하십시오.
sudo nautilus
터미널 에서 명령 을 실행하십시오 . (우분투는 Windows가 "탐색기"를 사용하는 것과 같은 방식으로 "nautilus"를 파일 관리자로 사용합니다.)
sudo -H nautilus
루트가 구성 파일의 소유자가되는 것을 피하여 $HOME
잠재적으로 일반 사용자로 실행되는 프로그램에서 액세스 할 수 없도록해야합니다. 당신은 아마 이것을 알고 있지만 다른 독자들에 대해서는 언급하고 있습니다.
mount
프로그램은 매우 엄격하며 항상 루트로 실행해야합니다. 이것에 대한 유일한 예외는 파일 시스템이 fstab
있고 user
옵션 이있을 때 입니다. 이 프로그램 udisksctl
은 일반 사용자가 예를 들어 udisksctl mount -b /dev/sda1
(를 사용하여 적절한 마운트 지점을 생성) 장치를 마운트 할 수 있도록 /media/$USER/
합니다. 나는 udisksctl
라이브 시스템에서 사용하려고 시도하지 않았지만 , 라이브 시스템에서 항상 sudo
암호없이 실행할 수있는 권한이있는 사용자 이므로 udisksctl
다른 유용한 유틸리티가 필요하지 않습니다.
/mnt
이름을 바꾸고 재부팅하십시오.