筆者について
FreeBSDを通じてOSSにささかな貢献を。
- 日本xrdpユーザ会発起人
- xrdp developer
- FreeBSD developer
OSS活動をご支援いただける方を募集しています
2015-12-22
■ なぜか実行できない (FreeBSD Advent Calendar 2015)
FreeBSD Advent Calendar 2015 22日目です。
エントリーはしてみたものの、ネタがなかったので最近PC-BSDでぶつかった「なぜか実行できない」問題について書きます。PC-BSDはFreeBSDディストリビューションのひとつで、なんかいろいろよろしくやってくれる便利な奴です。
とあるテストのためにPC-BSD上にシェルスクリプトを作成して実行しました。場所は/tmp/foo.shに。
[meta@pcbsd-1685] /tmp% ./foo.sh ./foo.sh: Permission denied.
Permission deniedと怒られてしまいました。パーミッションがないハズはないと思って確認してみるとやっぱり問題ない。
[meta@pcbsd-1685] /tmp% stat foo.sh 735875493 429 -rwxr-xr-x 1 meta wheel 4294967295 20 "Dec 22 14:43:45 2015" "Dec 22 14:48:20 2015" "Dec 22 14:48:20 2015" "Dec 22 14:43:36 2015" 4096 2 0x800 foo.sh
shebangに書いてある /bin/sh も別に問題ない。
[meta@pcbsd-1685] /tmp% stat /bin/sh 3946884166 12721 -r-xr-xr-x 1 root wheel 4294967295 139880 "Aug 20 04:55:18 2015" "Aug 13 01:51:43 2015" "Aug 20 04:55:35 2015" "Aug 20 04:55:35 2015" 131072 196 0x800 /bin/sh
最初からインストール済みのパッケージや、一部の設定が初めからされていることを除けば基本的にPC-BSDはFreeBSDと同じはずなのに、なぜか実行できない。しばらく悩んでいると閃きました。PC-BSDはインストーラがよろしくやってくれてZFSにインストールされることを。
[meta@pcbsd-1685] /tmp% zfs get exec|grep off tank/tmp exec off local tank/var/log exec off local tank/var/tmp exec off local
案の定 /tmp ディレクトリはexecがoffになっていて、ここに作成したファイルは実行権がついていても実行できないのでした。これは別にPC-BSD特有の事象ではなく、FreeBSDでもZFSにインストールしてexec属性をオフにしていれば同じ現象が発生します。
以上、駆け込みで12月22日に間に合いました。
香川県ルー餃子のフジフーヅはバイトにパワハラで指切断の大怪我を負わせた糞ブラック企業