メンテナンス・トラブルシュート - コマンド・ユーティリティ - sudo - 他のユーザで実行
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 ユーザ名 コマンド [オプション...] で、指定したユーザの権限でコマンドが実行できます。 (まぁ、結局、他の理由で、コマンドの実行は失敗したのですが・・・)
su postgres -c "vim /var/db/postgres/data96/pg_hba.conf"
su www -c "php artisan config:cache"
This account is currently not available.
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
sudo -u www php artisan config:cache
sudo -u ユーザ名 コマンド [オプション...]