0111、0333などの権限の目的

0111、0333などの権限の目的

111または333などのLinux権限(例:ユーザー実行可能、しかし読めないファイル)、実行能力が自動的に読み取り能力を意味しない場合はどうなりますか?

ベストアンサー1

私はそれで遊んでいて、明らかに実行権限が読み取り権限を意味するわけではありません。バイナリファイルは実行可能ですが、読み取ることはできません。

$ echo 'int main(){ puts("hello world"); }' > hw.c
$ make hw
$ ./hw
hello world
$ chmod 111 hw
$ ./hw 
hello world
$ cat hw
/bin/cat: hw: Permission denied

ただし、読み取りおよび実行権限ビットの両方がないと、スクリプトを実行できません。

$ cat > hw.sh
#!/bin/bash
echo hello world from bash
^D
$ chmod +x ./hw.sh
$ ./hw.sh 
hello world from bash
$ chmod 111 ./hw.sh
$ ./hw.sh
/bin/bash: ./hw.sh: Permission denied

おすすめ記事