sudo를 사용하지 않고 bash 스크립트를 작성하는 방법은 무엇입니까?

sudo를 사용하지 않고 bash 스크립트를 작성하는 방법은 무엇입니까?

gem installor apt-get installin을 bash사용하지 않고 어떻게 쓸 수 있나요 sudo?

#!/usr/bin/env bash

apt-get update -y
apt-get upgrade -y
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable --ruby
source /usr/local/rvm/scripts/rvm
((EUID)) || exit
gem install jekyll

답변1

#!/usr/bin/env bash
((!EUID)) && { # check if the EUID is a zero 
  echo "${0##*/} can not be executed as root " # notify
  exit 1 # exist with status code 1
}
gem install jekyll

귀하는 관리자(일반 사용자)이므로 $EUID 변수는 항상 0보다 큽니다!
루트 $EUID = 0

((expression)) 표현식은 아래 산술 평가에 설명된 규칙에 따라 평가됩니다. 표현식이 0이 아닌 것으로 평가되면 반환 상태는 0이고, 그렇지 않으면 반환 상태는 1입니다. 이는 let "expression"과 정확히 동일합니다.

또는

#!/usr/bin/env bash
[[ $EUID = 0 ]] && { # check if the EUID is eq to zero
  echo "${0##*/} can not be executed as root " # notify
  exit 1 # exist with status code 1
}
gem install jekyll

난 이게 더 좋아

((EUID)) || exit 1

또는

((!EUID)) && exit 1

여기에 이미지 설명을 입력하세요.

질문 수정 후 업데이트

#!/usr/bin/env bash
((!EUID)) && {
 #stuff to be exec as root
for option in update 'upgrade -y'
  do
    apt-get $option
  done
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable --ruby
source /usr/local/rvm/scripts/rvm

} || {
 #stuff to be exec as non-root
gem install jekyll

}
exit 0

이제 루트 및 루트가 아닌 사용자 모두에서 작동하지만 EUID를 기반으로 스크립트의 일부만 실행됩니다.

관련 정보