Ubuntu의 "chmod -R 777 /"에서 복원

Ubuntu의 "chmod -R 777 /"에서 복원

중복 가능성:
chmod/777 설정 중 오류가 발생했습니다. 문제가 있습니까?

저는 개발을 위해 우분투를 사용합니다.

제가 데이터베이스 작업을 할 때 요청 시 데이터 디렉터리나 다른 디렉터리에 액세스하려면 파일 권한이 필요한 일이 많았습니다.

이 오류가 발생할 때마다:

[ERROR] path/to/directory/ permission denied

이를 방지하려면 터미널에서 루트로 로그인하고 다음을 사용하여 디렉터리에 대한 액세스 권한을 부여해야 했습니다.

chmod -R 644 /path/to/directory

문제를 완전히 피하기 위해 다음 명령을 사용하여 전체 액세스 권한을 부여했습니다.

chmod -R 777 /

이제 내 시스템에 몇 가지 문제가 생겼습니다.

운영 체제 계정이나 터미널에서 루트로 로그인할 수 없습니다. 시스템을 재부팅하면 원활하게 부팅될지 확신할 수 없습니다.

전체 액세스 권한을 부여해서는 안 되는 일부 파일에 전체 액세스 권한을 부여한 것 같은데 그 파일이 무엇인지 모르겠습니다.

누구든지 나를 도와줄 수 있나요?

답변1

chmod -R 777 /

어떤 디렉터리에든 패턴을 반복적으로 적용하려고 생각하고 있다면 777멈추고 잠시 시간을 내어 이것이 자신이 원하는 것인지 절대적으로 확신하십시오. 777다음 형식의 약어입니다.

  • 파일 소유자가 읽고, 쓰고, 실행할 수 있도록 허용합니다.
  • 파일 그룹 구성원이 읽고, 쓰고, 실행할 수 있도록 허용
  • 시스템의 모든 사람이 읽고, 쓰고, 실행할 수 있도록 허용합니다.

(단순화를 위해 , 및 끈적끈적한 부분의 문제는 무시 setuid하겠습니다 setgid)

이는 거의 항상 원하는 것이 아닙니다.

이 권한을 파일 시스템의 루트( /)에 반복적으로 적용하면 컴퓨터의 모든 파일과 디렉터리에 대해 이러한 권한이 설정됩니다. 이건 확실히당신이 원하는 게 아니야.

회복 측면에서 보면... 순전히 가설적인 것입니다.

  • Ubuntu 시스템이 아직 실행 중이므로 루트로 sshd로그인 할 수 있습니다ssh

다른 기계가 있어요

  • 다음을 통해 개발 머신에 연결할 수 있습니다.ssh
  • 개발 시스템과 매우 유사한 파일 시스템을 보유하십시오(예: 동일한 버전의 Ubuntu 및 선택한 DBMS를 새로 설치).

다음 명령은 해당 컴퓨터의 파일 권한을 개발 상자에 복사합니다.

sudo find / -print0 | \
xargs -0 stat -c "chmod %a '%n'; chown -h %U:%G '%n';" | \
ssh user@your-development-machine

실행하는 데 시간이 좀 걸립니다.

777이렇게 하면 Ubuntu 시스템에서 많은 권한이 수정될 가능성이 높습니다. 그러나 최상의 시나리오에서도 수동 수정이 필요한 권한 관련 오류가 더 많이 발생할 것으로 예상됩니다.

제가 추천하는 또 다른 옵션은 완전히 다시 시작하는 것입니다. 데이터를 백업하고 Ubuntu, DBMS 및 개발 상자에 필요한 기타 소프트웨어를 다시 설치하십시오.

답변2

더 이상 루트 액세스 권한이 없으면 운이 없는 것이므로 다시 설치하는 것이 최선의 선택입니다.

4755일부 파일에는 명령 su및 와 같은 이국적인 권한이 있으며 sudo이러한 권한이 없으면 실행되지 않습니다.

답변3

전 세계에 파일 시스템에 대한 읽기, 쓰기 및 실행 액세스 권한을 부여하는 것은 일반적으로 매우 나쁜 생각입니다. 한편으로, 귀하의 컴퓨터에 접근할 수 있는 모든 사람은 기본적으로 시스템에 대해 무엇이든 할 수 있습니다. 또한 예를 들어 ssh디렉터리 및 파일에 대한 권한을 확인 하는 여러 시스템 데몬이 있습니다 . 올바르지 않으면 이러한 데몬이 시작되지 않는 경우가 많습니다.

현재 상황에 가장 적합한 솔루션은 백업에서 복원하는 것입니다. 따라서 올바른 권한이 있는 모든 파일을 쉽게 되돌릴 수 있습니다.

백업이 없는 경우 다음으로 실용적인 해결책은 시스템을 다시 설치하는 것입니다. 따라서 먼저 파일을 백업하고 설치된 소프트웨어를 저장한 다음( dpkg --get-selection > installed-software.txt) 새 시스템을 설치하고 사용하는 소프트웨어를 설치합니다( apt-get update && dpkg --set-selection < installed-software.txt && apt-get -u dselect-upgrade). 이제 새로운 시스템이 있으므로 구성 파일을 업데이트할 수 있습니다.

또 다른 해결책은 스크립트를 작성하는 것입니다. 이 스크립트는 파일 시스템을 반복적으로 살펴보고 각 파일 및 디렉터리의 권한을 다른 시스템과 비교해야 합니다. 다른 시스템에 따라 권한을 변경할 수 있습니다. 일부 값을 변경해야 할 수도 있지만 이 스크립트가 주요 작업을 수행합니다. 이 솔루션은 컴퓨터에 물리적으로 접근할 수 있는 경우에도 작동합니다. Live-CD 또는 USB 스틱으로 부팅하고 파일 시스템을 마운트하기만 하면 됩니다. 또는 하드 드라이브를 제거하고 다른 컴퓨터에 설치할 수 있습니다.

그러나 내 관점에서는 시스템을 다시 원래 상태로 되돌리는 가장 빠른 방법은 백업하고 다시 설치하는 것입니다.

관련 정보