개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.15 18:20

posix_setgid 함수 이해를 부탁드립니다.

목록
  • GraphQL러버 1일 전 2025.04.15 18:20
  • 3
    1
저는 posix_setgid 함수에 대해 공부하고 있습니다. 그러나 그 중에서 gid와 uid의 관계를 이해하지 못하고 있습니다. posix_setgid 함수는 특정 프로세스에 gid를 설정하는 함수입니다. 그러나 이 gid는 프로세스의 uid와 어떤 관계를 맺고 있는지 정확히 모르겠습니다. 이 두 가지의 관계를 어떻게 이해해야 하는지 알려주세요.

또한, posix_setgid 함수를 사용하여 프로세스의 gid를 설정한 후, 이 gid를 다시 가져올 수 있는 방법은 무엇인가요?

마지막으로, posix_setgid 함수는 어떤 경우에 사용해야 하는지 알려주세요.

예를 들어, 특정 프로세스를 다른 사용자로 실행하고 싶을 때는 posix_setgid 함수를 사용해야 하나요?

혹은, 특정 프로세스의 gid를 변경하고 싶을 때는 posix_setgid 함수를 사용해야 하나요?

위의 질문에 대한 답변을 부탁드립니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    posix_setgid 함수는 프로세스의 그룹 식별자(gid)를 설정하는 함수입니다. 프로세스의 uid와 gid는 서로 관련이 있지 않습니다. 프로세스는 하나의 uid를 가지고 있지만 여러 개의 gid를 가질 수 있습니다.

    posix_setgid 함수를 사용하여 프로세스의 gid를 설정한 후, 이 gid를 다시 가져올 수 있는 방법은 다음과 같습니다.

    1. `getgid()` 함수를 사용하여 프로세스의 현재 gid를 가져옵니다.
    2. `getgroups()` 함수를 사용하여 프로세스의 현재 gid 목록을 가져옵니다.

    posix_setgid 함수는 다음 경우에 사용해야 합니다.

    1. 특정 프로세스를 다른 사용자로 실행하고 싶을 때: 이 경우 프로세스의 uid를 변경해야 하므로 `setuid()` 함수를 사용해야 합니다.
    2. 특정 프로세스의 gid를 변경하고 싶을 때: 이 경우 posix_setgid 함수를 사용해야 합니다.
    3. 특정 프로세스를 그룹에 추가하고 싶을 때: 이 경우 `setgroups()` 함수를 사용해야 합니다.

    예를 들어, 특정 프로세스의 gid를 변경하고 싶을 때는 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        // 현재 프로세스의 gid를 가져옵니다.
    
        gid_t current_gid = getgid();
    
    
    
        // 새로운 gid를 설정합니다.
    
        posix_setgid(1234); // 1234은 새로운 gid입니다.
    
    
    
        // 새로운 gid를 가져옵니다.
    
        gid_t new_gid = getgid();
    
    
    
        return 0;
    
    }
    
    


    이 예제에서는 현재 프로세스의 gid를 가져오고, 새로운 gid를 설정하고, 새로운 gid를 가져옵니다.

    2025-04-15 18:21

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 11,985건 / 15 페이지

검색

게시물 검색