コマンドリファレンス - 他のユーザになりかわる su

クラウディア 
1. 他のユーザになりかわる
2. 他のログインユーザ権限でコマンドを実行する

1. 他のユーザになりかわる

 FreeBSD のマニュアルでは「一時的に他のユーザになりかわる」「su ユーティリティは PAM 経由で適切なユーザ資格を要求し、そのユーザ ID に切り替えます (デフォルトユーザはスーパユーザです)。その後シェルが実行されます。」と記述があります。  一番多く使うのは

$ su
Password:	←	パスワードを入力
 で、「root」ユーザになることかと思います。  「一時的」になので、「exit」すると元のユーザに戻ります。

2. 他のログインユーザ権限でコマンドを実行する

 更に応用として使うのが、いったん「root」ユーザになっておいて

su ユーザ名 -c コマンド
 で他のユーザ権限でコマンドを実行することができます。  「/etc/passwd」で「/nologin」になっているユーザは、通常コマンドを実行することはできませんが、この使い方をすることで、そのユーザとしてコマンドを実行することができます。  「postgreSQL」のユーザ「postgres」は、「バージョン 9.6」では、ログインホームが「/var/db/postgres」になっていますが、ここでシェルスクリプトをいじったりするのはいささか抵抗があります。  また、「/var/db/postgres/data96/」にコンフィグレーションファイルがあり、すべて所有者が「postgres」になっていて、これを「root」ユーザで編集すると所有者が「root」になってしまって、「postgreSQL」の実行に支障が出ることがあります。  「vim」を使ってらくちんに編集したいのにパスが通っていなくて、苦労したりしますが「root」ユーザで

su postgres -c "vim /var/db/postgres/data96/postgresql.conf"
 で編集することにより、「vim」を使用して編集でき、かつ所有者は「postgres」のままということになります。  ちなみに「-c コマンド」でパラメータがある場合は、例のように「-c "コマンド パラメータ"」とコーテーションで囲むことでパラメータを設定することができます。