외부 종속성을 설치하는 스크립트 (실제로 스크립트와 makefile의 조합)를 작성 중입니다. 일부 apt-get
명령, 일부 git
복제, 빌드, 설치, 그룹에 사용자 추가 등 ...
이 스크립트의 일부 작업에는 수퍼 유저 권한이 필요하지만 일부는 그렇지 않습니다.
지금까지 sudo를 사용하여 전체 make 프로세스를 실행했지만 몇 가지 단점이 있습니다.
git
리포지토리 복제root
소유자로 가져옵니다. 즉, 나중에sudo
또는 없이는 수정할 수 없습니다.chown
- 그룹에 사용자를 추가하는 스크립트는
whoami
반환 후 추가 할 사용자를 모릅니다root
필요한 명령 만 수퍼 유저로 실행하는 가장 좋은 방법은 무엇입니까? 이상적으로는 프로세스에서 여전히 sudo
비밀번호 를 입력해야 하지만 설치 프로세스 시작시 한 번만 비밀번호 를 입력 해야합니다. 그런 다음 맨 끝에서 잊어 버릴 수 있지만 그때까지 항상 유지하십시오 (몇 시간이 걸릴 수 있음).
온라인에서 찾은 솔루션은 다음과 같습니다.
sudo -v
스크립트의 인식에서, 그러나 내가 올바르게 이해하면 시간이 초과됩니다. 내 스크립트는 몇 시간 동안 실행될 수 있습니다- 으로 스크립트를 실행
sudo
하지만 않는 명령 하지 와 수퍼 유저가 필요합니다sudo -u $(logname) <command>
. 이것이 내가 지금하는 일이지만, 다른 방향으로해야한다고 생각합니다.
이상적으로는 스크립트를 다음과 같이하고 싶습니다.
- 수퍼 유저 자격 증명 요청
- 로그인 한 사용자로 일반 명령 실행
- 1 단계에서 입력 한 자격 증명으로 sudo 명령을 실행하십시오.
sudo -k
수퍼 유저 세션을 닫으려면
... 또는 모든 것을 루트
—
Rmano
su $SUDO_USER -c command
로 실행하고 명령에 사용 하여 일반 사용자로 실행하십시오.
SUDO_USER
환경 변수를 확인할 수 있습니다 . 있는 경우 sudo를 호출하는 사용자의 사용자 이름이 포함됩니다. 따라서 $ SUDO_USER : $ SUDO_GID $ your_files를 (루트로) 씹을 수 있습니다. 마찬가지로 adduser 명령이 추가 할 사용자를 알 수 있도록 이러한 변수를 확인할 수 있습니다.