데비안 가상 머신의 다른 그룹에 사용자 목록을 추가하려고 합니다. Bash 스크립트에서는 다음과 같은 일련의 명령을 사용합니다.
getent group $uid || groupadd $uid #add group before adding user
useradd -s $shell -m -d $users_directory -g $uid $uname #add user with group id $uid
그러나 실행하면 다음이 인쇄됩니다.
groupadd: group '5067' already exists
useradd: group '5067' does not exist
내 그룹을 보면 cut-d: -f1 /etc/group
거기에 "5067"이 존재하는 것을 알 수 있지만 실행하면 groups
유일한 그룹인 "root"만 보입니다.
어떤 팁이 있나요?
답변1
숫자로 된 그룹 ID로 호출하면 groupadd
그룹이 생성됩니다.명명 된 5067
. 예를 들어:
# groupadd 5067
# grep 5067 /etc/group
5067:x:1000:
숫자 식별자를 전달할 때만 useradd -g ...
그룹을 살펴봅니다 .ID. 그래서 한 무리의 사람들이라도명명 된 5067
존재하다:
# useradd -g 5067 testuser
useradd: group '5067' does not exist
이것이 문제의 원인이라고 생각합니다.
실행 시 새 그룹이 표시되지 않는 groups
것은 정상입니다 . 사용자를 추가한 새 그룹은 해당 사용자가 로그인할 때까지 적용되지 않습니다. 사용자가 이미 로그인한 경우 로그아웃했다가 다시 로그인해야 합니다(운영 체제는 새 로그인 쉘을 시작합니다). 에서는 새 그룹이 groups
표시되지만 의 출력에서는 새 그룹이 표시되지 않는 이유가 바로 이 때문입니다 /etc/group
.
답변2
답변: 루트에 대한 그룹 명령만 표시합니다.
group을 입력하면 다음과 같은 응답을 받게 됩니다.당신의uid. 사용자 그룹을 보려면 $uname 그룹을 사용해야 합니다.
또한 useradd는 동일한 이름을 가진 사용자에 대해 새 그룹을 생성할 수 있습니다. 이를 방지하려면 -N을 사용할 수 있습니다. 옵션 기본값을 확인하려면 /etc/login.defs 및 /etc/default/useradd를 확인하세요.