勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

AlmaLinux9で複数のコマンドをまとめてシェルスクリプトにする方法

  サーバー

AlmaLinux9のコンテナ環境に移行後、FTPでファイルアップロードやWordPressのダッシュボードからプラグイン等のダウンロード時は問題無いが、サーバにSSH接続してスーパーユーザーでunzipとかすると権限設定のコマンドを何回も打つ必要があり面倒くさい。シェルスクリプト化し、1回のコマンドで済む方法をメモ。

 

やりたいこと

以下のコマンドを1回で済むようにしたい。また、可読性を保ちたいのと、後で変更しやすいようにシェルスクリプト化したい。

# ホスト側の所有者・グループ設定
chown -R test_user:nginx /var/www/html

# ディレクトリとファイルのパーミッション一括設定
find /var/www/html -type d -exec chmod 775 {} +
find /var/www/html -type f -exec chmod 664 {} +

# SGID設定
find /var/www/html -type d -exec chmod g+s {} +

# 現在あるファイル・フォルダに対し、uid33(www-data)のユーザーに全権限を付与
setfacl -R -m u:33:rwx /var/www/html

# 今後作られるファイル・フォルダに対しても上記設定が引き継がれるよう設定
setfacl -R -d -m u:33:rwx /var/www/html

 

対応方法

シェルスクリプト作成

サーバにSSH接続し以下でファイル作成。

# シェルスクリプトの作成
vi /usr/local/bin/set_perms.sh

以下内容を記述して保存。ディレクトリやユーザー名は適宜変更する。

#!/bin/bash

# 設定対象のディレクトリ
TARGET="/var/www/html"

# 指定したディレクトリが存在しない場合は終了
if [ ! -d "$TARGET" ]; then
    echo "error: $TARGET が存在しません。"
    exit 1
fi

echo "start"
chown -R test_user:nginx "$TARGET"
find "$TARGET" -type d -exec chmod 775 {} +
find "$TARGET" -type f -exec chmod 664 {} +
find "$TARGET" -type d -exec chmod g+s {} +
setfacl -R -m u:33:rwx "$TARGET"
setfacl -R -d -m u:33:rwx "$TARGET"
echo "end"

以下で権限変更。

# 権限付与
chmod +x /usr/local/bin/set_perms.sh

コマンド実行

# 実行
set_perms.sh

# 正常に実行された場合は以下が出力される筈
start
end

 - サーバー

  関連記事

OpenLightSpeedを触ってみた感触と使いどころについて
OpenLightSpeedを触ってみた感触と使いどころについて

ここのところOpenLightSpeedを色々試してみた。「Apacheとの互換 ...

PodmanにComposerを導入し、パッケージをインストールする方法
PodmanにComposerを導入し、パッケージをインストールする方法

先日Podmanで導入したapache-phpに各種PHPモジュールを追加したが ...

CentOS6系環境のVPSに対して公開鍵認証を設定する方法
CentOS6系環境のVPSに対して公開鍵認証を設定する方法

本番稼動しているVPSサーバーでSSHの接続ログをかなり久しぶりに見ると、不正ロ ...

almalinux8.6でyumをアップデート時にエラーが発生する場合の対応方法
almalinux8.6でyumをアップデート時にエラーが発生する場合の対応方法

AlmaLinux8.6にて「yum -y update」を実行したところ「Ke ...

レンタルサーバのQuicca Plus(クイッカプラス)を使用した感想
レンタルサーバのQuicca Plus(クイッカプラス)を使用した感想

利用しているVPSのWebARENA Indigoから価格改定の案内メールが届い ...