sudo를 사용할 때 루트 대신 다른 사용자로 전환

sudo를 사용할 때 루트 대신 다른 사용자로 전환

제 생각에는리디렉션root사용 중(전환) 하나의 실행을 다른 사용자에게 실행합니다 sudo.

예: 으로 sudo startup.sh실행되지만 필요한 것은 다른 사용자(예: )로 실행된다는 것입니다 .startup.shroottomcat

이 특정 실행에 대해서만 그들이 사용하는 방식으로 실행하기를 원합니다. 즉, sudo startup.sh뒤에서(내부적으로) sudo su - tomcat startup.sh사용자에게 사용하지 말라고 말할 수 없기 때문에 로 변경되기를 원합니다 sudo -su or sudo -u.

이 목표를 어떻게 달성할 수 있나요?

답변1

요청한 작업을 쉽게 수행할 수 없습니다(예: sudo startup.sh지정된 루트가 아닌 사용자로 실행). 그러나 다음 중 하나 또는 둘 다를 수행할 수 있습니다.

  1. 사용자에게 sudo -u tomcat /path/to/startup.sh대신 사용하라고 지시 sudo /path/to/startup.sh하고 어쨌든 후자를 허용하지 않습니다.

    이것이 대상 사용자 계정이 되도록 sudoers(기억 ) 에 이 행을 추가하십시오 . 특정 사용자만 대상 사용자로 스크립트를 실행할 수 있는 경우 첫 번째 사용자 목록을 사용자 목록으로 변경합니다.visudotomcatALL

     ALL    ALL=(tomcat) /path/to/startup.sh
    
  2. 스크립트를 실행 sudo하고 sudo -u root스크립트를 비활성화합니다. #1(위)이 필요합니다. 여기가 tomcat일치하는지 확인하세요 .tomcatsudoers

     #!/bin/bash
     #
     targetUser=tomcat
    
     if [[ $UID -ne "$(id -u "$targetUser")" ]]
     then
         exec sudo -u "$targetUser" "$0" "$@"
         exit 1
     fi
    
     # ...script continues but as the $targetUser...
    

    이를 통해 사람들은 해당 부분 에 대해 걱정하지 않고 /path/to/startup.sh(또는 startup.sh에 있더라도 ) 실행할 수 있습니다 .$PATHsudo

답변2

sudo스위치 와 함께 사용할 수 있습니다 -u.

예:

sudo -u tomcat whoami

관련 정보