【シェルスクリプト】ユーザーを切り替える方法 | ヒアドキュメントを活用

プログラマのメモ帳

この記事では、シェルスクリプト(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

参考になればうれしいです。

コメント

タイトルとURLをコピーしました