아무도 없는 상태로 프로그램을 실행하려면 어떻게 해야 합니까?

StackOverflow https://stackoverflow.com/questions/66870

  •  09-06-2019
  •  | 
  •  

문제

루트가 아닌 사용자 권한이 있는 프로세스에서 사용자로 새 프로세스를 시작하고 싶습니다. nobody.나는 직접 전화를 시도했다 setuid -1로 실패 EPERM ~에 Ubuntu 8.04:

#include <sys/types.h>
#include <unistd.h>

int main() { 
       setuid(65534);
       while (1);
       return 0;
}

대신 어떻게 해야 합니까?

도움이 되었습니까?

해결책

~ 할 것이다 시스템 관리자의 도움과 많은 신뢰가 필요합니다.일반 사용자는 다른 사용자를 대신하여 자신이 선택한 실행 파일을 실행할 수 없습니다.

그녀는 귀하의 신청서를 다음에 추가할 수 있습니다. /etc/sudoers 적절한 설정을 사용하면 다음과 같이 실행할 수 있습니다. sudo -u nobody.이는 스크립트와 바이너리 실행 파일 모두에 적용됩니다.

또 다른 옵션은 그녀가 그렇게 할 것이라는 것입니다 chown nobody 그리고 chmod +s 바이너리 실행 파일에서 직접 실행할 수 있습니다.실행 파일이 변경될 때마다 이 작업을 반복해야 합니다.

간단히 수행할 수 있는 작은 도우미 실행 파일을 만들면 스크립트에서도 작동할 수 있습니다. exec("/home/you/bin/your-application").이 실행 파일은 suid-nobody(위 참조)로 만들 수 있으며 자유롭게 수정할 수 있습니다. your-application.

다른 팁

내가 아는 한, 루트가 아니거나 사용자 전환을 허용하도록 sudo를 설정하지 않은 이상 그렇게 할 수 없습니다.또는 실행 파일에 suid 비트를 설정하고 누구도 소유하지 않도록 할 수 있습니다.하지만 그러기 위해서는 루트 액세스도 필요합니다.

'아무도' 사용자는 여전히 사용자입니다.프로그램을 아무도 사용하지 않고 실행하도록 하는 이유가 무엇인지 잘 모르겠습니다. 추가 보안을 추가하지 않을 것입니다.다른 문제에 직면할 가능성이 더 높습니다.

나는 도우미 응용 프로그램 사용에 대한 Squadette의 권장 사항을 따를 것입니다.

calife 의 대안이다 sudo.

Calife는 UNIX 시스템 관리자가 루트 암호를 제공하지 않고 자신의 컴퓨터에서 루트(또는 다른 사용자)가 될 수 있도록 하는 작은 프로그램입니다.

나는 건너편으로 달려갔다 setuid-샌드박스 오늘 제가 찾고 있는 적절한 방법을 수행하는 LWN을 읽으면서 프로젝트를 진행해 보겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top