2009-10-15 1 views
6

CentOS 시스템에서 파이썬을 사용하여 사용자 그룹을 만들고 싶습니다. 내가 '파이썬을 사용하여'라고 말하면 os.system과 같은 일을하고 unix 명령을 사용하여 새 그룹을 만들고 싶지 않습니다. 이 문제를 다루는 파이썬 모듈이 있는지 알고 싶습니다.리눅스에서 파이썬을 사용하여 사용자 그룹 만들기

그물을 검색해도 파이썬 사용자 그룹을 제외하고 내가 원한 것에 대해서는별로 알 수 없었습니다. 그래서이 질문을해야했습니다.

그래서 여기에서 검색하여 grp 모듈에 대해 알게되었지만 그룹을 만드는 것에 대해서는 아무 것도 찾을 수 없었습니다.

EDIT : 새 질문을 시작해야할지 모르겠지만 (기존) 사용자를 새로 만든 그룹에 추가하는 방법을 알고 싶습니다.

도움을 주시면 감사하겠습니다. 감사합니다.

+0

명령 줄 도구를 실행하는 중일 것입니다. –

답변

10

내가 그것을 할 수있는 파이썬 모듈로 모르는 길을 가기로 선택하면 뭔가를 직접 작성하는 매우 정직은 그러나

하지만,/etc/group 및/etc/gshadow 형식은 꽤 표준 적이므로 원하는 경우 파일을 열어서 현재 내용을 구문 분석 한 다음 필요에 따라 새 그룹을 추가 할 수 있습니다.

당신이이 일을 가기 전에

, 고려 : 이미 프로그램의 여러 인스턴스에서 그룹을 추가하려고하면 어떻게됩니까 시스템

  • 에 존재하는 그룹을 추가하려고하면 어떻게됩니까

    • 호환되지 않는 변경이 그룹 형식으로 이루어질 때 코드에 어떻게됩니까 동시에
    • 선 아래로 몇 출시
    • NIS, LDAP, Kerberos를 ...

    이러한 종류의 문제를 해결하지 않으려면 하위 프로세스 모듈을 사용하고 groupadd를 실행하십시오. 그것은 당신의 고객 기계를 깰 가능성이 적을 것입니다.

    당신이 할 수있는 또 다른 일은 파이썬에서 groupadd.c (그림자 패키지의)에 코드를 래핑하고 그렇게하는 것입니다. 하지만이 방법을 사용하는 것보다 훨씬 많은 돈을 사지는 않는다고 생각합니다. 그러면 빌드에 복잡성과 취약성이 추가 될 것입니다.

  • +1

    훌륭한 답변을 보내 주셔서 감사합니다. 스크립트를 작성하는 유스 케이스에는 언급 한 문제가 없지만 '신성한'리눅스 파일에 내 항목을 추가하면 ... 죄책감을 느끼게합니다.) ... 나는 그냥 가야 할 것 같아요. 서브 프로세스 솔루션으로 다시 한번 감사드립니다. –

    5

    은 프로그램의 명령 줄 프로그램을 사용해야한다고 생각합니다. 문제가 발생하면 그룹 파일을 손상시키지 않도록주의해야합니다. 파일 형식은 당신이

    +0

    뒤에는 C 함수와 라이브러리가 있어야합니다. 분명히) 명령을 사용하고 있습니다, 나는 그 (것)들의 주위에 python 포장지의 어떤 종류일지도 모르다는 것을 나는 예상하고있다. ?? –

    1

    그룹을 생성하기위한 라이브러리 호출이 없습니다. 그룹을 만드는 것과 같은 일이 실제로 없기 때문입니다. GID는 단순히 프로세스 나 파일에 할당 된 번호입니다. 이 모든 숫자는 이미 존재합니다. GID 사용을 시작하기 위해해야 ​​할 일은 없습니다. 적절한 권한을 가지고 chown (2)를 호출하여 파일의 GID를 임의의 숫자로 설정하거나 setgid (2)를 사용하여 현재 프로세스의 GID를 설정할 수 있습니다 (유효 ID로 그보다 조금 더 있습니다. 보조 ID 등).

    기본 유닉스/리눅스/POSIX 시스템에서/etc/group에있는 항목을 사용하여 GID에 이름을 지정하지만 실제로는 유닉스/리눅스/POSIX 사용자 영역 도구에서 준수하는 규칙 일뿐입니다. Jack Lloyd가 언급 한 것처럼 다른 네트워크 기반 디렉토리도 존재합니다.

    매뉴얼 페이지 그룹 (5)은/etc/group 파일의 형식을 설명하지만 직접 작성하는 것은 좋지 않습니다. 배포판에는 다른 용도 (고정 시스템 그룹, 동적 시스템 그룹, 사용자 그룹 등)를 위해 특정 공간을 예약하는 것과 같이 명명되지 않은 GID가 할당되는 방법에 대한 정책이 있습니다. 이 숫자 공간의 범위는 배포마다 다릅니다. 이러한 정책은 대개 sysadmin이 이름이 지정되지 않은 GID를 할당하는 데 사용하는 명령 줄 도구로 인코딩됩니다.

    로컬로 그룹을 추가하는 가장 좋은 방법은 명령 줄 도구를 사용하는 것입니다.

    +0

    "그룹을 만드는 것과 같은 일은 정말로 없습니다."... 알아두면 좋을 것 같습니다. 훌륭한 답변을 주셔서 감사합니다. 명령 줄 도구를 실행 해 보겠습니다. –