방금 달리고 나서 알았어
chmod 777 *
하위 디렉터리가 있는 디렉터리에서는 예상한 대로 작동합니다. 하위 디렉토리를 포함한 모든 것에 대한 권한을 777로 설정합니다. 그러나 그렇게 하지 않기로 결정한 경우 다음을 실행하십시오.
chmod 644 *
이제 하위 디렉터리의 콘텐츠에 알 수 없는 권한이 설정되어 다시 변경할 수 없습니다.
왜 그런 일이 발생합니까? 이는 예상된 동작입니까, 아니면 버그입니까? 파일 권한을 복원하는 방법이 있습니까?
제가 갖고 있던 파일이 다른 위치에 zip 파일로 되어 있어서 그냥 디렉토리 전체를 삭제하고 다시 zip 파일의 압축을 풀었는데, 이 "문제"의 원인과 해결 방법을 알고 싶습니다.
몇 가지 추가 정보는 SSH를 통해 원격 컴퓨터에서 해당 명령을 실행하고 있습니다.
답변1
아마도 이런 종류의 일에는 find를 사용하는 것이 가장 좋습니다.
디렉토리는 x access 여야 하고 파일은 그렇지 않으므로 권한 집합이 다릅니다.
# Files
find . -type f -exec chmod 644 '{}' \;
# Directories
find . -type d -exec chmod 755 '{}' \;
답변2
권한 비트가 해석되는 방식은 파일과 디렉터리에 따라 다릅니다. 자세한 내용 info coreutils 'File permissions'
을 읽어보세요 man 2 chmod
. 소유자, 그룹 및 전체에 대해 모든 것을 읽기, 쓰기, 실행 가능하게 만들고 싶은 이유는 무엇입니까?
증거가 사라졌기 때문에 , 이후 현재 디렉터리인 chmod
에 대한 쓰기 권한을 잃었을 것이라고 추측할 수 있습니다. .
이 문제는 다음을 통해 해결할 수 있습니다.
chmod u+w $PWD
그런 다음 파일의 모드(권한)를 변경할 수 있습니다.$PWD
을 수행하여 chmod 644 *
다음도 제거했습니다.실행하다해당 파일이 포함된 모든 파일의 권한을 제거하므로 더 이상 소유자, 그룹, 세계에서 실행할 수 없습니다.
답변3
디렉터리 및 하위 디렉터리에 대한 권한을 설정하려면 다음을 사용해야 합니다.
chmod -R
-R, --recursive 파일 및 디렉터리를 재귀적으로 변경합니다.
답변4
나는 내가 가진 문제에 대한 해결책을 찾았습니다.
우선, 올려주신 모든 분들께 감사드리며, 답변이 큰 도움이 되었습니다.
문제는 현재 디렉터리의 모든 파일에 권한 664를 할당한다는 것입니다.
chmod 644 *
제대로 작동하려면 실행 권한이 필요한 디렉터리에 대한 실행 권한을 제거합니다. 해결책은 매우 간단합니다. 다음과 같이 디렉터리에 대한 권한을 변경하면 됩니다.
chmod 744 dir_name
물론 dir_name은 디렉터리의 이름입니다. 그렇게 하면 모든 것이 정상으로 돌아갑니다.