이 스크립트를 실행하면 슈퍼유저 권한을 어떻게 전달합니까? 나는 새로운 기계를 설정하는 데 필요한 기본 사항을 익히기 위해 이 글을 쓰고 있습니다. 높은 권한으로 모든 명령을 실행하고 싶지는 않지만 sudo
높은 권한이 있는 명령은 실행하고 싶습니다.
sudo
일부 명령은 일반 사용자로 실행 되고 다른 명령은 일반 사용자로 실행되도록 하려면 어떻게 해야 합니까 ?
#!/bin/sh
# If Linux, install nodeJS
if $(uname) = 'Linux';
then
export IS_LINUX=1
# Does it have aptitude?
if -x "which apt-get";
then
export HAS_APT=1
# Install NodeJS
sudo apt-get install --yes nodejs
fi
# Does it have yum?
if -x "which yum" ;
then
export HAS_YUM=1
# Install NodeJS
sudo yum install nodejs npm
fi
# Does it have pacman?
if -x "which pacman" ;
then
export HAS_PACMAN=1
# Install NodeJS
pacman -S nodejs npm
fi
fi
# If OSx, install Homebrew and NodeJS
if $(uname) = 'Darwin' ;
then
export IS_MAC=1
if test ! "$(which brew)"
then
echo "================================"
echo " Installing Homebrew for you."
echo "================================"
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export HAS_BREW=1
elif -x 'which brew' ;
then
export HAS_BREW=1
brew update
fi
# Install NodeJS
brew install --quiet node
fi
# Does it have python?
if -x "which python" ;
then
export HAS_PYTHON=1
if -x "which pip" ;
then
pip list --outdated | cut -d ' ' -f1 | xargs -n1 pip install -U
export HAS_PIP=1
fi
fi
# Does it have node package manager?
if -x "which npm" ;
then
export HAS_NPM=1
else
echo "NPM install failed, please do manually"
fi
# Does it have ruby gems?
if -x "which gem" ;
then
export HAS_GEM=1
fi
나머지 bash 스크립트(자세히 설명하지 않음)는 npm, apt, yum, Brew 또는 pacman을 사용하여 시스템에 따라 배열에서 패키지를 설치합니다. 등과 같은 간단한 것만 설치합니다 git
.wget
답변1
처음 전화를 걸면 sudo
비밀번호를 묻는 메시지가 표시됩니다 . 그러면 구성에 따라 N분(기본값 5분 IIRC) 내에 호출되면 비밀번호를 다시 입력할 필요가 없습니다.
다음을 수행할 수 있습니다.
sudo echo >/dev/null || exit 1
아니면 다음과 같은 것일 수도 있습니다.
sudo -p "Become Super: " printf "" || exit 1
스크립트 시작 부분에.
다른 사람이 이를 방지하려면 sudo ./your_script
EUID(세게 때리다):
if [[ $EUID -eq 0 ]]
then
printf "Please run as normal user.\n" >&2
exit 1
fi
또는 이와 유사한 것:
if [ "$(id -u)" = "0" ]
...
어쨌든, 어떤 쉘을 대상으로 하고 있는지도 확인하십시오. 즉
- https://wiki.debian.org/DashAsBinSh
- https://wiki.ubuntu.com/DashAsBinSh
- https://lwn.net/Articles/343924/
등.
도착하다"살아있게 해주세요"한 사람이 할 수 있어요그것은 마치:
while true; do
sleep 300
sudo -n true
kill -0 "$$" 2>/dev/null || exit
done &