この記事では、シェルスクリプト(bashスクリプト)の処理の途中でユーザーを切り替える方法を紹介しています。
「切り替えたユーザーでいくつかのコマンドを実行したい」という場合にはbashのヒアドキュメントを使うのが簡単です。
サンプルと注意点を紹介します。サンプルのシェルスクリプトは「rootユーザーでテキストファイルを作成する」という処理にしています。
シェルスクリプト:change_user.sh
bashの実行ユーザー:libre
切り替えユーザー:root
Sample Code
#!/bin/bash
#ヒアドキュメントでは先頭に不要なスペースはいれない
su root << EOF
passwd #ユーザーのパスワードを入力
touch /home/libre/sample/sample.txt
EOF
実行結果ですが、rootユーザーでファイルが作成されています。
注意点
ヒアドキュメントを使用する際に注意点があります。それはスペース(空白)です。
ヒアドキュメント内では空白も有効になってしまうので、パスワードの前に空白を入れたり、終端のEOFの前に空白を入れると上手く実行できません。
具体的に以下の2つのコードは失敗します。
#実行できるがパスワードに空白を含んでしまう。(ログイン失敗)
su root << EOF
passwd #ユーザーのパスワードを入力
touch /home/libre/sample/sample.txt
EOF
#EOFの前に空白があるとそもそも実行できない。(エラー)
su root << EOF
passwd #ユーザーのパスワードを入力
touch /home/libre/sample/sample.txt
EOF
参考になればうれしいです。
コメント