chmod 777이 권한을 777로 변경하지 않습니다.

chmod 777이 권한을 777로 변경하지 않습니다.

temp_dir의 권한을 777로 변경하려고 합니다. 이 명령이 이를 수행하지 못하는 이유는 무엇입니까? 참고로 저는 리눅스를 사용하고 있습니다.

kylefoley@kfoley76:/mnt/disks$ chmod 777 /mnt/disks/temp_dir
kylefoley@kfoley76:/mnt/disks$ stat -c "%a %n" temp_dir
755 temp_dir

나는 또한 장황한 스위치를 시도했다

kylefoley@kfoley76:/mnt/disks$ chmod -v 777 /mnt/disks/temp_dir
mode of '/mnt/disks/temp_dir' changed from 0755 (rwxr-xr-x) to 0777 (rwxrwxrwx)
kylefoley@kfoley76:/mnt/disks$ stat -c "%a %n" temp_dir
755 temp_dir

저도 왜 못쓰는지 이해가 안가네요sudo

kylefoley@kfoley76:/mnt/disks/temp_dir$ sudo chmod 777 fix_mistakes
chmod: cannot access 'fix_mistakes': Permission denied

루트 사용자로 로그인했는데도

kylefoley@kfoley76:/mnt/disks/temp_dir$ sudo -i
root@kfoley76:~# sudo chmod 777 /mnt/disks/temp_dir
chmod: cannot access '/mnt/disks/temp_dir': Permission denied

또한 이 버그는 문제의 디렉터리가 gcloud에서 사용할 수 있는 gcsfuse 마운트 디스크라는 사실과 관련이 있음을 덧붙여야 합니다. 권한을 변경하려는 다른 시도는 정상적으로 작동했습니다.

kylefoley@kfoley76:~$ mkdir hey
kylefoley@kfoley76:~$ stat -c "%a %n" hey
755 hey
kylefoley@kfoley76:~$ chmod 777 hey
kylefoley@kfoley76:~$ stat -c "%a %n" hey
777 hey

답변1

gcsfuse는 마운트 시 파일 및 디렉터리 권한을 설정합니다. 구체적으로 옵션은 다음과 같습니다.

  • file_mode– 파일에 대한 권한 비트(8진수)
  • dir_mode– 디렉토리에 대한 권한 비트(8진수)

원천:https://github.com/GoogleCloudPlatform/gcsfuse/blob/e0a0e0826897b09581c24065fb6a92912ee79d03/flags.go#L78

옵션을 지정하지 않으면 기본값은 입니다 dir_mode=0755,file_mode=0644.

원천:https://github.com/GoogleCloudPlatform/gcsfuse/blob/e0a0e0826897b09581c24065fb6a92912ee79d03/flags.go#L51

이러한 옵션은 마운트의 모든 파일 및 디렉터리에 적용됩니다. 이 FUSE 파일 시스템에는 특정 파일이나 디렉터리에 대한 권한을 변경하는 기능이 없으므로 chmod아무 작업도 수행하지 않습니다.


또한 gcsfuse에는 파일 시스템을 마운트한 사용자로 액세스를 제한하는 추가 액세스 제한이 있습니다. 세부:

보안 조치로서 퓨즈 자체는 파일 시스템을 마운트한 사용자에게만 파일 시스템 액세스를 제한합니다(참조:퓨즈.txt). 이러한 이유로 gcsfuse는 기본적으로 호출하는 사용자가 소유한 모든 파일을 표시합니다. 따라서 루트가 아닌 파일 시스템을 사용할 사용자로 gcsfuse를 호출해야 합니다.

자신이 무엇을 하고 있는지 알고 있다면 다음을 사용하여 이러한 동작을 재정의할 수 있습니다.allow_other퓨즈에서 지원하는 마운트 옵션과 gcsfuse에서 지원하는 --uid--gid플래그를 사용합니다. 보안에 영향을 미칠 수 있으니 주의하세요!

원천:https://github.com/GoogleCloudPlatform/gcsfuse/blob/d25be2491879e3745c3ed3d8e816774defc1cc5c/docs/mounting.md#access-permissions

이것이 다른 사용자가 마운트에 액세스할 수 없는 이유입니다. 다른 사용자가 마운트에 액세스할 수 있도록 허용하려면 allow_other마운트 옵션을 지정하세요.

답변2

다음과 같은 방법으로 문제를 해결할 수 있었습니다. Cloud API 액세스 범위로 이동하여 VM 구성에서 스토리지에 대한 읽기 쓰기 또는 전체 액세스 권한이 있는지 확인해야 했습니다. 여기에는 내 인스턴스를 나열하는 gcloud 콘솔에서 편집을 누르는 작업이 포함되었습니다. 페이지 하단에 저장공간 제한이 있어서 'full'로 변경했습니다. 그랬어요.

관련 정보