複数のコンピュータで実行できるインストールスクリプトを作成しようとしています(Sudoが必要)。また、gitリポジトリプルダウンのようなことも行います(通常のユーザーとして実行したいので、所有権を持ちます)。 + r/w/x 権限)。私のスクリプトはUbuntu 14.04とbashを使用しています(必要に応じてzshに切り替えたいと思っていますが、移植性のためにbashにしておきたい)
私は同じユーザーで複数のコマンドを実行するためのドキュメント構文を読み、ここで見つけました。
Sessions still open, not unmounting
ただし、表示エラーメッセージが表示されます。
この問題をどのように解決できますか?これは問題ですか? sudoを使用するより良い方法はありますか?
これは、sudoの挿入/終了と出力をテストするために使用するスクリプトです。
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "[FAIL] This script must be run as root"
exit 1
fi
sudo -u myusername bash << \EOF
echo ""
echo "I SHOULD BE A REGULAR USER 0"
echo "uid is '${UID}'"
echo "euid is '${EUID}'"
echo "user is '${USER}'"
echo "username is '${USERNAME}'"
echo ""
EOF
echo ""
echo "I SHOULD BE SUDO'D 1"
echo "uid is '${UID}'"
echo "euid is '${EUID}'"
echo "user is '${USER}'"
echo "username is '${USERNAME}'"
echo ""
sudo -u myusername bash << \REG_USER_END
echo ""
echo "I SHOULD BE A REGULAR USER 2"
echo "uid is '${UID}'"
echo "euid is '${EUID}'"
echo "user is '${USER}'"
echo "username is '${USERNAME}'"
echo ""
REG_USER_END
echo ""
echo "I SHOULD BE SUDO'D 3"
echo "uid is '${UID}'"
echo "euid is '${EUID}'"
echo "user is '${USER}'"
echo "username is '${USERNAME}'"
echo ""
exit 0;
出力:
I SHOULD BE A REGULAR USER 0
uid is '1000'
euid is '1000'
user is 'myusername'
username is 'myusername'
Sessions still open, not unmounting
I SHOULD BE SUDO'D 1
uid is '0'
euid is '0'
user is 'root'
username is 'root'
I SHOULD BE A REGULAR USER 2
uid is '1000'
euid is '1000'
user is 'myusername'
username is 'myusername'
Sessions still open, not unmounting
I SHOULD BE SUDO'D 3
uid is '0'
euid is '0'
user is 'root'
username is 'root'