Linux・シェル4 択難易度 標準

配置したスクリプトが Permission denied で動かない。このスクリプトへの指摘として正しいものは?

#!/bin/bashcp deploy.sh /opt/app/deploy.shchmod 644 /opt/app/deploy.sh/opt/app/deploy.sh

正答

  1. 644 には実行権限 x が誰にも無いので、755 か u+x にする必要があります。
  2. 絶対パスで実行するには先頭に ./ が必要なので、./opt/app/deploy.sh と書く必要があります。
  3. cp でコピーすると所有者が消えるので、chmod の前に chown で所有者を付け直す必要があります。
  4. 644 では所有者に書き込み権限が無いので、スクリプトを実行できません。

解説

3 行目の chmod 644 は所有者 rw-、他は r-- で、実行権限 x が誰にも無い。そのため 4 行目でパスを直接指定して実行すると Permission denied になる。実行させたいなら chmod 755 か chmod u+x にする。644 でも所有者には書き込み権限があり、そもそも実行に必要なのは w ではなく x なので「書き込み権限が無い」という指摘は誤り。./ はカレントからの相対パスで、絶対パスには付けない。

参考: www.gnu.org

chmodpermissionexecute

この問題を含む Linux・シェル のテストを制限時間つきで解く

Linux・シェルクイズへ