설치 스크립트 - sudo 인증 호환성?

설치 스크립트 - sudo 인증 호환성?

저는 현재 일부 스크립트를 업데이트하고 있으며 다른 사람들이 사용할 수 있도록 몇 가지 유용한 스크립트를 출시할 계획입니다. 따라서 다양한 컴퓨터에서 충돌이나 손상 없이 작동해야 합니다.

그들 중 한 명은 Fedora 시스템에 chromiumpepflash 플러그인과 몇 가지 다른 것들을 추가했습니다. 저는 원래 스크립트를 다음과 같이 만들었습니다.러시아 페도라에 관한 것그렇게 하는 것은 당시에는 신뢰할 수 없어 보였고, 성가신 종속성이 많이 필요했으며 때로는 구식이었습니다. 내 스크립트는 내가 생각하는 대로 작동해야 합니다.우분투 스크립트실제로 - 크롬 패키지를 사용하고 플러그인을 추출하여 합법적으로 재배포할 수 있습니다.

무엇을 하고 있는지 파악한 후에는 다음과 유사한 복사 명령을 사용하여 크롬 설치 등에 내용을 복사해야 합니다(내 Fedora 21 시스템에서는 잘 작동합니다).

sudo cp -riv ${tmpdir}/* ${location}/

${tmpdir}/tmp/tmp.IOfylQBAHT등이 있을 수 있고 ${location}있을 수 있는 위치 /usr/lib64/chromium-browser/는 둘 다 스크립트가 실행되는 설정과 사용되는 옵션에 따라 다릅니다. 일반적으로 두 개 또는 세 개의 복사 명령이 필요합니다.

내 질문은 모든 시스템이 그것을 사용하는 것은 아니라고 생각합니다 (일부 시스템은 사용해야 sudo합니다).susudo 설치되지 않음또는 설정, 일부 시스템에서는 사용자에게 루트 권한이 전혀 없을 수도 있습니다.) 그래서 어떻게 해야 하는지 궁금합니다.

  • 그것을 사용 sudo하고 최선을 다하길 바랍니다
  • timeout 2 sudo -v > /dev/null 2>&1사용자가 sudo를 루트로 사용하여 작업을 수행할 수 있는지 확인하는 등의 이상한 작업을 사용하세요. $?이러한 메시지를 표시하고 종료할 수 없는 경우, To finish installation, please run 'cp -riv ${tmpdir}/* ${location}/' as root가능하다면 계속 진행하세요.(테스트 명령은 사용자가 sudo를 사용하려고 시도하는 경우 일부 시스템에서 악명 높은 "이 이벤트가 보고됩니다" 문제를 일으킬 수 있습니다. 또한 사용자의 시간 초과 등이 연장될 수도 있습니다.원천)
  • 종료하고 잠시 후에 메시지를 표시하세요.echo(참고로 편집 되어 ${tmpdir}적절한 위치 등으로 교체될 예정입니다.)
  • 사용자가 루트로 스크립트를 실행하고 있는지 확인하십시오. 예를 들면 다음과 같습니다.

    if [ "$(whoami)" != "root" ]; then echo -e "\e[31mERROR: This needs to be run as root\e[0m"; exit 1 ; fi
    
  • 다른 것 :)

답변1

나는 개인적으로 스크립트를 sudo넣는 것이 나쁜 생각이라는 것처럼 그것에 대해 어떤 가정도 하지 않을 것입니다 . sudoIMHO, 네 번째 제안(스크립트가 루트로 실행되는지 확인)이 최고입니다. 나는 이름 대신 유효한 사용자 ID를 확인하는 것을 선호합니다.

[ -n "$EUID" ] && [ $EUID -eq 0 ] || <not root, exit>

그러면 스크립트를 실행하는 데 사용할 수퍼유저 도구를 사용자가 선택할 수 있습니다.

관련 정보