모든 계정(권한이 없는 사용자 계정 포함)에서 시작 시 실행해야 하는 바이너리가 있으므로 이를 실행하는 명령이 /etc/rc.local
. 그것을 수정하십시오. 위치해 있습니다 /usr/bin
.
그러나 런타임 시 키(키가 있는 위치)에 액세스해야 합니다 /usr/share
. 모든 일반 사용자가 읽거나 쓸 수 없지만 프로그램에서는 읽을 수 있는 키가 포함된 파일을 생성할 수 있습니까? 파일이 프로그램의 권한을 이용할 수 있습니까?
파일 권한(chmod)에 대한 일종의 설정을 수행할 수 있을까요? 아니면 어떻게든 암호화할 수 있는 방법이 있나요?
답변1
말씀하신 대로 "시작 시 권한이 없는 사용자 계정에서 실행해야 하는 경우" 관련 권한이 없는 사용자 계정이 액세스할 수 있는 모든 파일에 액세스할 수 있어야 합니다.
스크립트를 실행하기 위해 권한이 없는 전용 사용자 계정을 생성할 수 있습니다. 전용 사용자 계정만 읽을 수 있도록 키 파일에 대한 권한을 설정합니다. 하지만 기존의 특정 사용자 계정으로 프로그램을 실행해야 하는 것처럼 들리므로 이것이 효과가 없을 수도 있습니다.
chroot()
키에 대한 액세스 권한이 있는 파일에서 실행하는 것과 같은 다른 솔루션이 있지만 이것이 가능한지 여부는 수행하는 작업과 키 파일 외에 액세스해야 하는 항목에 따라 다릅니다.
sudo
/etc/rc.local
루트로 실행 하면 su
궁극적으로 프로그램을 실행하기 위해 선택한 계정을 직접 사용할 수 있으므로 이는 어떤 경우에도 필요하지 않습니다.
편집하다질문을 명확히 한 후:
모든 유형의 사용자가 로그인할 때마다 실행되어야 합니다.
이해합니다. 이것은 /etc/rc.local
시작 시 한 번만 실행한다고 원래 말씀하셨던 것과는 완전히 다릅니다!
이 경우 최선의 선택은 외부 파일로 키를 액세스하는 대신 키를 바이너리에 내장하여 루트가 바이너리를 소유하고 실행할 수 있도록 만드는 것입니다. 그러나 다른 사용자는 읽을 수 없습니다(예: rwx--x--x
.키에 액세스할 수 없는 경우 제외). 시스템의 루트 권한을 중단하지만 바이너리를 실행할 수 있습니다.
비밀 키를 바이너리에 포함할 수 없는 경우 비밀 키에 액세스할 수 있는 일부 사용자에게 바이너리를 setuid할 수 있습니다. 하지만 setuid 바이너리를 작성할 때는 주의하세요.