メンテナンス・トラブルシュート - コマンド・ユーティリティ - sudo - 他のユーザで実行

 クラウディア
1. 概要
2. 他のユーザで実行

1. 概要

 「postgreSQL」のコンフィグレーションファイルをいじるときに、コンフィグレーションファイルの所有権が変わると困るので、「root」ユーザ権限からの実行ながら・・・

su postgres -c "vim /var/db/postgres/data96/pg_hba.conf"
 てな感じで、「su」越しに、「postgres」ユーザ権限で実行しています。  「Laravel」をいじっているときに、「Laravel」の大半の所有権を「www」にしているために

su www -c "php artisan config:cache"
 てなことをやって、「www」権限で実行しようとしたら

This account is currently not available.
 と怒られちゃいます。  これは、「postgres」と「www」のユーザの違いで、「vipw」で見るとわかります。

www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/usr/sbin/nologin
postgres:*:770:770::0:0:PostgreSQL Daemon:/var/db/postgres:/bin/sh
 「www」は、「nologin」であるために、コマンドを実行することができないようです。  「Linux」では、このような場合でも「su」のオプションでなんとかなるようですが、「FreeBSD」ではそのようなオプションがないか、もしくはわたしは知らない。  この状況でも、「sudo」だとなんとかなるようです。

2. 他のユーザで実行

 上記の状況で、「sudo」を使用する場合は

sudo -u www php artisan config:cache
 でいけます。  すなわち

sudo -u ユーザ名 コマンド [オプション...]
 で、指定したユーザの権限でコマンドが実行できます。  (まぁ、結局、他の理由で、コマンドの実行は失敗したのですが・・・)