bashスクリプトの複数のドキュメントにsudoを入れて終了すると、「セッションはまだ開いていますがマウント解除されていません」というエラーが発生します。

bashスクリプトの複数のドキュメントにsudoを入れて終了すると、「セッションはまだ開いていますがマウント解除されていません」というエラーが発生します。

複数のコンピュータで実行できるインストールスクリプトを作成しようとしています(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'

ベストアンサー1

おすすめ記事