temp_dir の権限を 777 に変更しようとしています。これらのコマンドでそれが実現されないのはなぜでしょうか? ちなみに、私は Linux を使用しています。
kylefoley@kfoley76:/mnt/disks$ chmod 777 /mnt/disks/temp_dir
kylefoley@kfoley76:/mnt/disks$ stat -c "%a %n" temp_dir
755 temp_dir
verboseスイッチも試してみました
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進数)
オプションを指定しない場合は、デフォルトは ですdir_mode=0755,file_mode=0644
。
これらのオプションはマウント内のすべてのファイルとディレクトリに適用されます。この FUSE ファイル システムには、特定のファイルまたはディレクトリの権限を変更する機能がないため、chmod
何も実行されません。
さらに、gcsfuse には、ファイル システムをマウントしたユーザーへのアクセスを制限する追加のアクセス制限があります。詳細:
セキュリティ対策として、fuse 自体は、ファイルシステムをマウントしたユーザーのみにファイルシステムへのアクセスを制限します (cf.ヒューズ.txt)。このため、gcsfuse はデフォルトで、すべてのファイルを呼び出し元ユーザーが所有するファイルとして表示します。したがって、root ではなく、ファイル システムを使用するユーザーとして gcsfuse を呼び出す必要があります。
何をしているのか分かっているなら、これらの動作を
allow_other
fuse でサポートされているマウント オプションと、 gcsfuse でサポートされている--uid
フラグ--gid
。セキュリティに影響する可能性があるため注意してください。
ソース:アクセス許可
このため、他のユーザーからマウントにアクセスすることはできません。他のユーザーがマウントにアクセスできるようにするには、allow_other
マウント オプションで指定します。
答え2
私は次の方法でこの問題を解決できました。Cloud API アクセス スコープに移動し、VM 構成でストレージの読み取り/書き込みまたはフル アクセスがあることを確認する必要がありました。これには、インスタンスを一覧表示する gcloud コンソールで編集を押すことが必要でした。ページの下部にストレージの制限があったので、これを「フル」に変更しました。これで解決しました。