예를 들어, run.sh
이 파일을 실행 가능하게 만들고 싶으므로 다음을 실행합니다.
chmod +x run.sh
내 질문은 다음과 같습니다
- 이 명령은 파일을 실행 가능하게 만듭니다. 그렇다면 이 파일을 다른 운영 체제로 가져가도 여전히 실행 가능합니까?
- 여전히 실행 가능하다면 사람들은 다른 곳으로 보내기 전에 실행 가능하게 만들지 않는 이유는 무엇입니까?
Docker 환경에서 테스트했을 때 호스트 환경에서 실행 가능하도록 만든 파일이 Docker 환경의 영향을 받았다는 사실을 발견했기 때문에 이렇게 묻는 것입니다.
감사해요
답변1
파일의 권한은 디스크에 유지되므로 파일의 실행 비트를 설정하면 디스크에 저장됩니다. 디스크를 이동하거나 단순히 다른 운영 체제를 부팅하여 "파일을 다른 운영 체제로 가져오는" 경우 파일의 메타데이터는 동일합니다.
그러나 "가져오기"가 다른 파일 전송 메커니즘과 같은 일부 작업을 의미하는 경우 scp
일반적으로 다음과 같습니다.아니요기본적으로 수정 시간이나 권한과 같은 메타데이터가 전달됩니다. scp -p
예를 들어 다음을 사용하여 이 작업을 수행할 수 있습니다 . 매뉴얼에서:
-p Preserves modification times, access times, and modes from the original file.
여기서 "모드"는 일반적으로 권한이라고 알려진 것입니다(실제로는 chmod
"변경 모드"의 약어입니다). 복사 작업 대상의 파일 시스템이 이 메타데이터를 처리하는 방법을 알고 있다고 가정하면 새 호스트에 대해 여전히 동일한 권한을 갖습니다.
답변2
그렇다면 이 파일을 다른 운영 체제로 가져가도 여전히 실행 가능합니까?
이는 도입 방법에 따라 달라집니다(즉, FS를 원격 저장소로 가져오는 것은 실행 플래그를 지원하지 않습니다).
여전히 실행 가능하다면 사람들은 다른 곳으로 보내기 전에 실행 가능하게 만들지 않는 이유는 무엇입니까?
어쩌면 어떤 사람들은 그 동작을 알고 있으므로 이런 식으로 소개하지 않을 수도 있습니다.