스크립트의 일반 "대상 사용자"의 의도된 권한으로 스크립트를 실행하려면 어떻게 해야 합니까?

스크립트의 일반 "대상 사용자"의 의도된 권한으로 스크립트를 실행하려면 어떻게 해야 합니까?

스크립트를 개발하는 동안 일부 오류는 다른 사용자가 스크립트를 실행할 때까지 "잠재" 상태로 남아 있습니다. (예를 들어 스크립트는 스크립트를 개발한 사람만 액세스할 수 있는 파일에 액세스할 수 있습니다.)

스크립트의 "대상 사용자"와 동일한 권한으로 스크립트를 실행하는 방법이 있습니까?적어도 있을 것이다?

(질문의 표현을 참고하세요. 어떤 경우에는 "대상 사용자"가 "최소 권한"보다 더 많은 권한을 가질 것으로 예상될 수 있기 때문에 "최소 권한이 있는 사용자"라고 쓰지 않았습니다. 가장 쉽게 생각나는 경우는 " 대상 사용자'는 특정 그룹에 속할 것으로 예상됩니다.)

물론 간단한 해결책은 필요한 권한이 있는 더미 사용자를 생성하는 것이지만 이 솔루션에는 사용자 생성 권한이 필요하며 항상 그런 것은 아닙니다. 가상 사용자를 생성할 수 없어도 작동하는 솔루션에 관심이 있습니다.

답변1

가상 머신이 저렴했던 시대에는 테스트 사용자를 생성할 수 없는 경우가 흔했습니다.

PATH합리적인 기본값 (일반적으로 /usr/local/bin:/usr/bin:/bin) HOME및 프로그램에 필요한 모든 환경 등 최소 환경에서 프로그램을 실행할 수 있습니다 . HOME홈 디렉터리 또는 다른 위치(예: 아래)의 하위 디렉터리로 설정하고 /tmp프로그램이 찾을 것으로 예상되는 파일로만 채웁니다. 이는 이미 예상치 못한 환경 종속성에 대한 첫 번째 테스트입니다. /tmp/for-testing/bin타사 소프트웨어에 대한 예기치 않은 종속성을 테스트하는 데 충분한 소수의 프로그램만 포함 하도록 경로를 제한할 수 있습니다 . 그럼에도 불구하고 일부 배포판의 기본 설치를 테스트하는 것이 더 결정적입니다.

프로그램이 일부 로컬 파일에 액세스해야 하는 경우에도 다음을 사용하여 다른 파일에 대한 예기치 않은 종속성을 테스트할 수 있습니다.가근성. 시스템에 필요한 모든 것(링커 및 표준 라이브러리까지)과 프로그램 및 해당 데이터 파일을 포함하는 디렉토리를 만들고 그 안에 fakechroot를 넣습니다(실제 chroot에는 루트 권한이 필요합니다).

답변2

질문에 대한 나의 이해는 특정 사용자로 스크립트를 실행하기를 원하므로 개발 사용자 계정과 관련된 개발이 아니라는 것입니다. 이것이 바로 sudo의 목적입니다. 다음과 같이 sudo 사용자 규칙을 생성하세요.

devUser    ALL=(targetUser)    NOPASSWD: /path/to/script

"devUser"는 다음과 같이 스크립트를 실행할 수 있습니다.

$ sudo -u targetUser /path/to/script

NOPASSWD를 사용하면 개발이 더 쉬워지기 때문에 저는 "su"보다 sudo를 선호합니다.

관련 정보