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'

관련 정보