데비안 패키지는 어떻게 사용자 계정을 만들어야합니까?


33

패키지 qqq.deb는 사용자 계정 qqq에서 실행되어야 하는 프로그램 을 설치 uqqq합니다. 패키지는 qqq프로그램, qqq.conf구성 파일 및 /etc/init.d/qqqinitscript로 구성됩니다 .

패키지는 어떻게 사용자 생성을 관리해야 uqqq합니까? 이에 대한 모범 사례 또는 공식 지침이 있습니까?

  1. uqqqpostinst에서 자동으로 사용자를 만드십시오 .
  2. /etc/init.d/qqq스크립트 에서 처음 시작할 때 자동으로 사용자를 작성하십시오 .
  3. qqq프로그램 을 처음 시작할 때 자동으로 사용자를 작성하십시오 (인수없이)
  4. 사용자 계정을 만들지 말고 관리자가 사용자를 명시 적으로 만들지 않는 한 시작을 거부하십시오 (예 :) qqq --create-user.
  5. 사용자 계정을 만들지 말고 기본적으로 루트에서 안전하지 않게 실행하십시오.
  6. postinst, init.d 스크립트 또는 qqq사용자 작성 여부를 대화식으로 요청하십시오 .

제거시 패키지가 사용자 계정을 제거해야합니까?


7
이 질문에 대한 답변을 얻는 가장 쉬운 방법은 공식 데비안 패키지의 설치 전후 스크립트를 보는 것입니다. 그냥 실행하는 grep adduser /var/lib/dpkg/info/*.postinst많은 예제를 얻을 수있는 데비안 기반 시스템에서.
jofel

adduser사용될 때 , 패키지에 의존해야합니다. 참조 : lintian.debian.org/tags/...
Lekensteyn

답변:


22

데비안 위키에는 이미 언급 된 데비안 정책 매뉴얼보다 더 포괄적이고 구체적인 지침이 있습니다. AccountHandlingInMaintainerScripts를 참조하십시오 .

--system 옵션으로 호출하면 adduser 프로그램이 올바른 작업을 수행합니다. 따라서 일반적으로 전화해야합니다

adduser --system $ USERNAME

postinst에서 로그인이 비활성화 된 계정, nogroup의 기본 그룹 및 / home 아래의 홈 디렉토리를 만듭니다. 다른 옵션을 원하면 원하는대로 추가하십시오.

adduser --system이 일반적으로 올바른 작업을 수행하기 때문에 계정이 이미 존재하는지 여부를 getent와 교차 점검 할 필요는 없습니다. 그렇지 않은 경우 adduser에 대해 버그를보고하여 관리자 스크립트를 단순하게 유지하십시오.

계정 삭제에 대한 조언은 결정적이지 않습니다. 그러나 나는 페도라에 대한 해당 조언 이 모호하지 않다는 것을 주목할 것입니다 .

사용자 또는 그룹을 제거하지 마십시오 . 패키지로 생성 한 사용자 또는 그룹을 제거 하지 않습니다 . 해당 사용자 / 그룹이 소유 한 파일이 남아 있는지 (있는 경우에도 어떻게해야합니까?)를 확인하고 소유권이없는 파일을 남겨두면 현재 존재하지 않는 사용자 / 그룹을 가리키면 보안 문제가 발생할 수 있습니다. 의미 적으로 관련이없는 사용자 / 그룹이 나중에 작성되어 UID / GID를 재사용하는 경우 또한 일부 설정에서 사용자 / 그룹을 삭제하는 것은 불가능하거나 바람직하지 않을 수 있습니다 (예 : 공유 된 원격 사용자 / 그룹 데이터베이스를 사용하는 경우). 사용하지 않는 사용자 / 그룹의 정리는 시스템 관리자가 원할 경우 처리 할 책임이 있습니다.


12

패키지를 설치하는 관리자는 패키지가 preinst 또는 postinst에 필요한 사용자를 자동으로 생성하여 프로그램을 실행하기 전에 사용자가 소유해야하는 파일을 만들 수 있기를 기대합니다.

프로그램은 필요한 경우에만 루트로 실행해야하며 (예 : 권한있는 포트에 바인드) 루트가 필요한 작업을 마치면 권한을 삭제하는 것이 이상적입니다.

다른 (설치된) 패키지가 이것을 어떻게 처리했는지 볼 수 있습니다.

grep -l adduser /var/lib/dpkg/info/*postinst /var/lib/dpkg/info/*preinst

그리고 나열된 파일을 읽습니다 (대부분 두 줄 이상의 옵션이 필요함).

이상하게도, 사용자를 생성하는 설치된 패키지 중 하나를 제외하고 모두 사용자 adduser를 추가 하는 데 사용 하지만 adduser 패키지는 필수 패키지가 아니므로 패키지는 패키지에 따라 빌드되어야합니다. 이 useradd프로그램은 libuuid1 패키지에서 사용되며 passwd필수 패키지 인 패키지의 일부입니다 .


1
끔찍합니다. 수동으로 해킹하지 않고 preinst 스크립트를 생성하는 올바른 방법을 확인하십시오.
LtWorf

--quiet접근 방식은 매우 인기가 보인다
vidstige

6

섹션 10.9. 데비안 정책 매뉴얼권한과 소유자 는 원하는 것을 가지고 있습니다 ( "version 3.9.5.0, 2013-10-28"에서) :

패키지에 대해 새 사용자 또는 그룹을 작성해야하는 경우 두 가지 가능성이 있습니다. 먼저 이진 패키지의 일부 파일을이 사용자 또는 그룹이 소유하도록해야하거나 이름이 아닌 사용자 또는 그룹 ID를 이진으로 컴파일해야 할 수도 있습니다 (이 경우 후자는 피해야합니다) 이 경우 정적 할당 ID가 필요하므로 가능합니다).

정적으로 할당 된 아이디가 필요한 경우, / etc / group ' base-passwd' maintainer, and must not release the package until you have been allocated one. Once you have been allocated one you must either make the package depend on a version of the에있는 아이디로 base-passwd'패키지 에서 사용자 또는 그룹 아이디를 요청 /etc/passwd' or 하거나, 올바른 패키지로 사용자 또는 그룹 자체를 만들도록 패키지를 정렬해야합니다. id ( 가능한 경우 adduser') in itspreinst '또는 postinst'. (Doing it in thepostinst'를 사용하는 것이 바람직하다. 그렇지 않으면`adduser '패키지에 사전 의존성이 필요하다.)

참고 : debian-devel 목록은 상당히 활성화되어 있으며 그러한 질문 에도 답변합니다 (2003 년 이후의 예).


3
간단히 말해 "Use adduserin postinst"입니다.
Vi.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.