이 패키지는 qqq.deb
사용자 계정에서 실행되어야 하는 프로그램을 설치합니다. 패키지는 프로그램, 구성 파일 및 초기화 스크립트로 구성됩니다.qqq
uqqq
qqq
qqq.conf
/etc/init.d/qqq
패키지는 사용자 생성을 어떻게 관리해야 합니까 uqqq
? 이에 대한 모범 사례나 공식 지침이 있습니까?
uqqq
postinst에서 자동으로 사용자를 생성하십시오.- 처음 시작할 때 스크립트에서 자동으로 사용자를 생성합니다
/etc/init.d/qqq
. - 프로그램을 처음 시작하면 자동으로 사용자가 생성됩니다.
qqq
(매개변수 없이) qqq --create-user
관리자가 명시적으로 사용자를 생성(예: 사용)하지 않는 한 사용자 계정을 생성하지 말고 실행을 거부하십시오.- 사용자 계정을 만들지 마십시오. 기본적으로 루트에서 실행하는 것은 안전하지 않습니다.
- 사용자 생성 여부를 postinst, init.d 스크립트 또는 자체
qqq
에서 대화형으로 물어보세요 .
패키지가 제거되면 사용자 계정을 삭제해야 합니까?
답변1
데비안 위키에는 이미 언급한 데비안 정책 매뉴얼보다 더 포괄적이고 구체적인 지침이 있습니다. 바라보다유지 관리 스크립트의 계정 처리:
adduser 프로그램은 --system 옵션과 함께 호출되면 올바른 작업을 수행합니다. 그래서 보통 그냥 전화해
사용자 추가--system$username
로그인 비활성화 계정, nogroup의 기본 그룹 및 postinst의 /home 아래에 홈 디렉터리를 만듭니다. 다른 옵션이 필요한 경우 필요에 따라 추가하세요.
일반적으로 adduser --system이 올바른 작업을 수행하므로 계정이 이미 존재하는지 getent로 교차 확인할 필요가 없습니다. 그렇지 않은 경우 관리자 스크립트를 단순하게 유지하려면 adduser에 대한 버그를 보고하십시오.
계정 삭제에 관해 제공되는 조언은 결정적이지 않습니다. 다만, 제가 지적하고 싶은 점은Fedora에 대한 해당 제안말을 다듬지 않습니다.
사용자 또는 그룹을 삭제하지 마십시오. 패키지로 생성된 사용자나 그룹은 절대 삭제되지 않습니다. 이러한 사용자/그룹이 소유한 파일이 남아 있는지 확인하고(그렇다고 해도 어떻게 해야 할까요?) 현재 존재하지 않는 사용자/그룹을 가리키는 소유권을 가진 해당 파일을 남겨둘 수 있는 합리적인 방법은 없습니다. 의미상 관련이 없는 사용자/그룹을 생성하고 UID/GID를 재사용할 때 나중에 보안 문제가 발생할 수 있습니다. 또한 일부 설정에서는 사용자/그룹 삭제가 가능하지 않거나 바람직하지 않을 수 있습니다(예: 공유 원격 사용자/그룹 데이터베이스를 사용하는 경우). 사용하지 않는 사용자/그룹을 정리하는 것은 원하는 경우 시스템 관리자의 책임입니다.
답변2
설치된 패키지의 관리자로서, 나는 내 패키지가 설치 전후에 필요한 사용자를 자동으로 생성하여 프로그램이 실행되기 전에 사용자가 소유해야 하는 모든 파일이 생성되기를 원합니다.
프로그램은 필요할 때만 루트로 실행해야 하며(예: 권한 있는 포트에 바인딩) 루트가 필요한 작업을 완료한 후에는 해당 권한을 포기해야 합니다.
다음 명령을 사용하여 다른 (설치된) 패키지가 이를 어떻게 처리하는지 확인할 수 있습니다.
grep -l adduser /var/lib/dpkg/info/*postinst /var/lib/dpkg/info/*preinst
그리고 나열된 파일을 읽습니다(대부분 한 줄 이상의 옵션이 필요함).
이상한 점은 제가 설치한 사용자 생성 패키지(한 개 제외)는 모두 adduser
사용자 추가용인데 adduser 패키지는 필수 패키지가 아니기 때문에 이에 의존하도록 패키지를 빌드해야 한다는 것입니다. 이 useradd
프로그램은 libuuid1 패키지에서 사용되며 passwd
필수 패키지의 일부입니다.
답변3
부분10.9. 권한 및 소유자내부에데비안 정책 매뉴얼당신이 찾고 있는 것이 있습니다("버전 3.9.5.0, 2013-10-28"에서):
패키지에 대한 새 사용자 또는 그룹을 생성해야 하는 경우 두 가지 가능성이 있습니다. 먼저 해당 사용자 또는 그룹이 소유한 바이너리 패키지의 특정 파일을 만들거나 사용자 또는 그룹 ID(이름뿐만 아니라)를 바이너리로 컴파일해야 할 수도 있습니다(다음 경우에는 이를 피해야 함). (또는) 가능합니다. 이 경우 정적으로 할당된 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
에 ID가 있는 base-passwd' 패키지에서 사용자 또는 그룹 ID를 요청하거나/etc/passwd' or
패키지가 올바른 값으로 사용자 또는 그룹 자체를 생성하도록 준비해야 합니다. id (가능하면 preinst' 또는 postinst'를 사용하는 것이 더 좋습니다adduser') in its
. 그렇지 않으면 `adduser' 패키지에 미리 의존해야 합니다.)postinst'. (Doing it in the
노트:debian-devel 목록은 매우 활동적이며 다음과 같은 질문에 답변합니다.또한(이 예는 2003년의 것임에도 불구하고).