setUid로 더 낮은 권한 수준으로 떨어지는 올바른 방법은 무엇입니까?

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

  •  18-09-2019
  •  | 
  •  

문제

나는 C에서 포트 <1024에 묶는 프로그램을 작성하고 있습니다. 그 후에는 뿌리가 아닌 특권에서 실행되기를 원합니다.

나는 setuid ()에게 전화해야한다는 것을 알고 있지만 어떤 주장이 있습니까? UID는 시스템마다 다릅니다.

도움이 되었습니까?

해결책

당신이 사용할 수있는 getpwnam() 이름으로 UID/GID 사용자를 찾으려면 :

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

int changepriv(const char *user) {
  struct passwd *pw;
  int rv;

  pw = getpwnam(user);
  if (!pw)
    return -1;

  rv = setgid(pw->pw_gid);
  if (rv == -1)
    return -2;

  rv = setuid(pw->pw_uid);
  if (rv == -1)
    return -3;

  return 0;
}

다른 팁

당신이 알고 싶은 것보다 더 http://www.eecs.berkeley.edu/~daw/papers/setuid-usenix02.pdf

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