adduser는 수행하지만 useradd는 수행하지 않는 작업은 무엇입니까?

adduser는 수행하지만 useradd는 수행하지 않는 작업은 무엇입니까?

더 광범위한 명령 외에도 useraddDebian 기반 시스템에는 adduser사용자 및 일부 관련 작업을 추가하기 위한 더 높은 수준의 인터페이스를 제공하는 추가 명령이 포함되어 있습니다. 다른 SE 사이트에는 다음과 같이 이러한 명령 간의 기본적인 차이점을 자세히 설명하는 다양한 질문/답변이 있습니다.

대부분의 답변은 기본적으로 사용자를 대화형으로 추가하기 위한 더 나은 인터페이스를 제공한다고 말하지만 런타임이 어떤 것인지 adduser자세히 설명하지 않습니다 .adduseruseradd

  1. adduser해야 할 일은 무엇 이고 useradd하지 말아야 할 일은 무엇입니까?
  2. 동일한 결과를 얻으려면 어떤 명령을 사용해야 합니까?

답변1

첫째, 해당 매뉴얼 페이지 조각은 두 명령 간의 차이점을 강조하고 진행 상황에 대한 정보를 제공합니다. 을 위한 adduser:

adduser 및 addgroup은 /etc/adduser.conf의 명령줄 옵션 및 구성 정보를 기반으로 시스템에 사용자와 그룹을 추가합니다. useradd, groupadd 및 usermod 프로그램과 같은 하위 수준 도구에 대한 더 친숙한 프런트 엔드이며 기본적으로 Debian 정책을 준수하는 UID 및 GID 값을 선택하고, 뼈대 구성으로 홈 디렉터리를 생성하고, 사용자 정의 스크립트를 실행하는 등의 작업을 수행합니다. 기능.

그런 다음 useradd:

useradd는 사용자를 추가하기 위한 저수준 유틸리티입니다. Debian에서 관리자는 일반적으로 adduser(8)를 사용해야 합니다.

추가 조사에 따르면 adduser이는 다음 명령에 대한 고급 인터페이스를 제공하여 다음 명령의 일부 기능을 제공하는 Perl 스크립트라는 것이 밝혀졌습니다.

  • useradd
  • groupadd
  • passwd- 사용자 비밀번호를 추가/변경하는데 사용됩니다.
  • gpasswd- 그룹 비밀번호를 추가/변경하는데 사용됩니다.
  • usermod- 다양한 사용자 관련 매개변수를 변경하는데 사용됩니다.
  • chfn- 이용자가 보유하고 있는 추가정보를 추가/변경하는데 사용됩니다.
  • chage- 비밀번호 만료정보를 변경하는데 사용됩니다.
  • edquota- 디스크 사용 할당량을 변경하는 데 사용됩니다.

이 명령의 기본 동작 adduser은 다음과 같습니다.

adduser username

이 간단한 명령은 많은 작업을 수행합니다.

  1. 라는 사용자를 만듭니다 username.
  2. 사용자의 홈 디렉터리(기본값)를 만들고 여기 /home/username에 파일을 복사합니다 /etc/skel.
  3. 사용자와 동일한 이름으로 그룹을 생성하고 해당 그룹에 사용자를 넣습니다.
  4. 사용자에게 비밀번호를 묻는 메시지를 표시합니다.
  5. 사용자에게 추가 정보를 요청합니다.

프로그램 useradd은 대부분의 작업을 수행할 수 있지만 기본적으로는 수행하지 않으며 추가 옵션이 필요합니다. 일부 정보에는 추가 명령이 필요합니다.

useradd -m -U username
passwd username
chfn username

adduser생성된 UID 및 GID가 다음을 준수하는지 확인하십시오 .데비안 정책. / 가 데비안 정책을 준수 useradd한다면 일반 사용자를 생성하는 데 문제가 없는 것 같습니다 . 그러나 문제는 데비안이 시스템 사용자 UID에 대해 특정 범위를 지정한다는 것입니다. 이는 Linux에서만 지원되는 것으로 보입니다 . 따라서 올바른 범위의 UID/GUID를 지정하지 않고 순진하게 시스템 사용자를 추가하면 심각한 문제가 발생할 수 있습니다.UID_MINUID_MAX/etc/login.defs/etc/adduser.confuseradd

또 다른 일반적인 용도 adduser는 그룹에 사용자를 추가하는 프로세스를 단순화하는 것입니다. 여기서는 다음 명령을 수행합니다.

adduser username newgroup

다음 usermod명령과 동일합니다.

usermod -a -G newgroup username

이 경우의 가장 큰 단점 usermod은 추가 옵션(예: )을 전달하는 것을 잊어버리면 -a사용자를 "새 그룹"에 추가하기 전에 모든 그룹에서 사용자를 제거하게 된다는 것입니다(예: -G단독은 "다음으로 대체"를 의미함).

그러나 여기서 사용하는 경우 한 가지 단점은 adduser한 번에 하나의 그룹만 지정할 수 있다는 것입니다.

답변2

내가 겪었던(그리고 여기의 답변에서는 볼 수 없었던) 한 가지 중요한 차이점은시스템 사용자를 생성한다는 것은 무엇을 의미합니까?.

useradd --system--shell /bin/bash그것은 오히려 adduser --system암시적 --shell /usr/sbin/nologin으로 이것이 내가 원하는 것임을 암시하는 것 같았습니다 .

따라서 쉘이나 홈 디렉토리가 필요하지 않으면 다음을 사용할 수 있습니다.사용자가 추가됨이와 같이

useradd --system --shell /usr/sbin/nologin foo

그 결과는 다음과 같습니다./etc/passwd

foo:x:994:991::/home/foo:/usr/sbin/nologin

또는 사용사용자 추가이와 같이

adduser --system --no-create-home foo

그 결과는 다음과 같습니다./etc/passwd

foo:x:110:65534::/home/foo:/usr/sbin/nologin

또한 adduser그룹이 생성되지 않습니다(사용자 110은 그룹 65534, 즉 그룹에 속함).그룹 없음). 이것수락된 답변(G)UID 관련 위험에 대해서도 언급했으니 꼭 지키겠습니다.사용자 추가.

출처: Raspberry Pi OS에서 테스트되었습니다(Debian Buster 기반).

답변3

이것사용자 추가기본적으로 이 명령은 시스템 사용자를 위한 /home/user 디렉터리도 생성하지만 사용할 수는 없습니다.사용자가 추가됨주문하다. useradd는 시스템 사용자가 아닌 일반 사용자의 홈 디렉토리만 추가합니다.

답변4

시스템 관리자는 useradd를 사용하여 adduser를 사용하여 수행할 수 있는 모든 작업을 수행할 수 있습니다. useradd를 사용하여 시스템 사용자를 위한 /home/user 디렉토리를 생성할 수는 없지만, /etc/skel에 포함된 파일을 수정하여 /home/user 디렉토리를 생성할 수는 있다는 점에 유의하십시오. /etc/skel에는 처음에 새 사용자의 홈 디렉토리를 채우는 데 사용된 파일 세트가 포함되어 있습니다.

관련 정보