"chmod: ...작업이 허용되지 않음"으로 인해 스크립트가 실패합니다.

"chmod: ...작업이 허용되지 않음"으로 인해 스크립트가 실패합니다.

내 스크립트는 실행 시 제대로 작동하지만 다른 사용자가 다음 형식의 오류로 실행하면 실패합니다.

chmod: changing permissions of `/A/B/C/D/E': Operation not permitted

(이것은 /A/B/C/D/E디렉터리입니다. FWIW, 스크립트는 에 있습니다 /A/B/C/D.)

중요한 경우 관련 디렉터리와 모든 상위 디렉터리에 대한 권한 구조는 다음과 같습니다.

drwxrwsrwx kjo11 proj1 /A/B/C/D/E/
drwxrwsrwx cwr8  proj1 /A/B/C/D/
drwxrwsr-x root  proj1 /A/B/C/
drwxrwsr-x root  proj1 /A/B/
drwxr-xr-x root  root  /A/
drwxr-sr-x root  root  /

(이 목록에는 kjo11내 이름이 있습니다 $USER. 공교롭게도 스크립트가 실패한 사용자의 이름 cwr8입니다 . 어쨌든 우리는 모두 그 그룹에 속해 있습니다.)$USERproj1

출력 uname은 입니다 Linux.

혼란스러워요. 내 관심을 끌었던 유일한 세부 사항은 오류가 이고 Operation not permitted그렇지 않았다는 것이 Permission denied었지만 그로부터 더 많은 것을 할 수는 없었습니다.

런타임 시 이러한 오류가 발생할 수 있는 상황은 무엇입니까 chmod?

답변1

파일의 소유자나 수퍼유저만 파일의 권한을 변경할 수 있습니다. 이는 사용자가 파일을 소유한 그룹의 구성원이고 파일 및 상위 디렉터리에 대한 권한이 권한 설정이 가능해야 함을 나타내는 경우에도 마찬가지입니다.

umask셸의 기능을 사용하여 생성 시 파일 및 디렉터리에 대한 권한을 제어할 수 있습니다.

$ umask 002
$ mkdir -p targetdir
$ ls -ld targetdir
...
drwxrwxr-x  2 dan   wheel    2 19 Mar 15:13 targetdir

스크립트에서 이 작업을 수행하는 경우 디렉터리를 성공적으로 만든 후 복원할 수 있도록 원래 umask 값을 저장하는 것이 좋습니다.

관련 정보