사용자를 전환하고 sudo를 사용하여 bash 스크립트에서 명령을 실행하십시오.

사용자를 전환하고 sudo를 사용하여 bash 스크립트에서 명령을 실행하십시오.

sudo를 사용하여 실행해야 하는 명령이 있지만 먼저 관리자 계정으로 su하고 비밀번호를 요청하는 스크립트가 필요합니다.

현재는 다음과 같이 새 사용자로 두 번째 스크립트를 호출하는 경우에만 작동하게 할 수 있습니다.

start.sh

#!/bin/bash

# how can we just put the script here instead of a separate file?
su -c "sudo -S ./.launchStage2.sh" -m admin_user

.launchStage2.sh

#!/bin/bash
source /root/pyusb/bin/activate
cd /root/pyusb
python stormLauncher.py
deactivate
cd ~

두 번째 스크립트를 삭제하고 첫 번째 스크립트에서 실행하는 방법이 있습니까? Extra :) 현재 su와 sudo에 대해 한 번씩 비밀번호를 두 번 요청하는데, 한 번만 요청하는 방법이 있나요?

sudo편집: 일반 사용자 계정을 에 두는 것이 아니라 필요할 때 사용하는 별도의 관리자 계정을 사용 하고 싶습니다 . 주된 이유는 제가 교실 실험실 교사이고 학생이 어떻게든 내 일반 계정에 액세스하더라도 여전히 sudo를 사용할 수 없기 때문입니다. 이것이 의미가 있는지 확실하지 않지만 이는 우리 조직의 IT 부서에서 나에게 권장한 것이며 이 질문의 일부가 아닙니다.

답변1

스크립트는 자신을 호출할 수 있습니다.

if ! [ admin_user = "$USER" ] && ! [ root = "$USER" ]; then
    su -c "$0" -m admin_user
elif ! [ root = "$USER" ]; then
    sudo "$0"
else
    source /root/pyusb/bin/activate
    # [...]
fi

관련 정보