모든 사용자를 나열하는 명령? 그리고 사용자를 추가, 삭제, 수정하는 방법은 무엇입니까?


855

터미널의 모든 사용자를 나열하는 명령이 필요합니다. 그리고 터미널에서 사용자를 추가, 삭제, 수정하는 방법.

터미널로 쉽게 계정을 관리 할 수 ​​있습니다.


3
sed 답변sed 's/:.*//' /etc/passwd
Avinash Raj

2
사용자 목록 :awk -F: '{ print $1 }' /etc/passwd
saviour123

답변:


1142

목록으로

사용할 수있는 모든 로컬 사용자 를 나열하려면 다음을 수행하십시오 .

cut -d: -f1 /etc/passwd

로컬 아닌 것을 포함하여 인증 할 수있는 모든 사용자를 나열하려면 이 회신을 참조하십시오 .

더 유용한 사용자 관리 명령 ( 로컬 사용자로 도 제한됨 ) :

추가하려면

새 사용자를 추가하려면 다음을 사용할 수 있습니다.

sudo adduser new_username

또는:

sudo useradd new_username

참조 : adduser 명령과 useradd와의 차이점은 무엇입니까?

제거 / 삭제

사용자를 제거 / 삭제하려면 먼저 다음을 사용할 수 있습니다.

sudo userdel username

그런 다음 삭제 된 사용자 계정의 홈 디렉토리를 삭제할 수 있습니다.

sudo rm -r / home / 사용자 이름

위의 명령을주의해서 사용하십시오!

수정하려면

사용자의 사용자 이름을 수정하려면

usermod -l new_username old_username

사용자의 비밀번호를 변경하려면 다음을 수행하십시오.

sudo passwd username

사용자의 쉘을 변경하려면 다음을 수행하십시오.

sudo chsh username

사용자 세부 사항을 변경하려면 (예 : 실명) :

sudo chfn username

sudo그룹에 사용자를 추가하려면

adduser username sudo

또는

usermod -aG sudo username

: 그리고, 물론, 참조 man adduser, man useradd, man userdel... 등등.


12
Radu는 sudo chfn <username>사용자 세부 정보 (예 : 실제 이름)를 변경하는 것을 언급하지 않았습니다 . 나는 이것을 주석으로 추가하려고 시도했지만 그렇게하려면 평판이 +50이어야한다고 말하는 오류가 발생했습니다.
Mikaela

2
관련 질문에 대한 정답은 askubuntu.com/a/381646/16395입니다. 그렇지 않으면 GID / UID Ubuntu 정책을 직접 고려해야합니다. 허용 된 답변이 명확하지 않습니다.
Rmano

sudo userdel DOMAIN \\ johndoe는 다음과 같은 오류를 발생시킵니다. "userdel : / etc / passwd에서 'DOMAIN \ johndoe'항목을 제거 할 수 없습니다. / etc / passwd를 보았는데 해당 항목이" 도메인 "계정?
00fruX 19.44에

1
@ 00fruX 예 ... 중앙 집중식 사용자 데이터베이스를 사용하는 경우 직접 처리해야합니다.
Oli


87

키보드에서 Ctrl+ Alt+ T를 누르면 터미널이 열립니다. 열리면 아래 명령을 실행하십시오.

cat /etc/passwd

또는

less /etc/passwd
more /etc/passwd

awk를 사용할 수도 있습니다 : awk

awk -F':' '{ print $1}' /etc/passwd

명령으로 사용자를 추가하는 방법?
nux

useradd 명령을 사용할 수 있습니다 .
Mitch

@nux 파티에 약간 늦었지만 adduser대신 명령 행 useradd에서 작성자가 실제로 자신의 작업을 알고있는 스크립트로 제한해야합니다.
flindeberg

64

이러한 종류의 정보를 얻는 가장 쉬운 방법 명령 맨 페이지를getent 참조하십시오 . 이 명령은 OS의 여러 요소 목록을 제공하기 때문에 기억하는 데 유용한 것과 동일한 출력을 제공합니다.getent맨 페이지 아이콘cat /etc/passwd

입력 한 모든 사용자 목록을 얻으려면 (사용자가에 나열되어 있음 /etc/passwd)

getent passwd

시스템에 사용자 newuser 를 추가하려면 다음을 입력하십시오.

sudo adduser newuser

모든 기본 설정이 적용된 사용자를 만듭니다.

보너스 : 모든 사용자 (예 : anyuser )를 그룹 (예 : cdrom ) 유형에 추가하려면

sudo adduser anyuser cdrom

다음을 사용하여 사용자 (예 : 폐기 됨 ) 를 삭제합니다.

sudo deluser obsolete

그의 홈 디렉토리 / 메일을 삭제하려면 다음을 입력하십시오.

sudo deluser --remove-home obsolete

sudo deluser --remove-all-files obsolete

사용자 제거 하고 전체 시스템이 사용자가 소유 한 모든 파일을.


8
getent는 / etc / passwd에서 사용자의 출력을 출력 할뿐만 아니라 / etc / passwd 또는 LDAP 등 지정된 시스템에서 구성된 모든 userdb 백엔드의 모든 사용자를 인쇄한다는 점을 기억하는 것이 좋습니다.
Marcin Kaminski

@MarcinKaminski가 맞습니다. 서버에 액세스 할 수있는 SSO 시스템의 사용자 설정도 인쇄합니다. 이 답변은 getent passwd올바른 명령 인 최고의 답변입니다
ulkas

모든 열거 가능한 userdb 백엔드의
@MarcinKaminski


27

이것은 대부분의 정상적인 상황 에서 모든 일반 (시스템이 아닌, 이상한 것이 아닌 등) 사용자에게 표시됩니다.

awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd

이것은 다음에 의해 작동합니다.

  • 에서 읽기 /etc/passwd
  • 사용 :구분 기호로
  • 세 번째 필드 (사용자 ID 번호)가 1000보다 크고 65534가 아닌 경우 첫 번째 필드 (사용자의 사용자 이름)가 인쇄됩니다.

많은 Linux 시스템에서 1000 이상의 사용자 이름은 권한이없는 (일반적으로 말할 수 있음) 사용자를 위해 예약되어 있기 때문입니다. 여기 에 대한 몇 가지 정보 :

UID (사용자 ID)는 Unix 계열 운영 체제에서 각 사용자에게 할당 한 고유 한 양의 정수입니다. 각 사용자는 UID로 시스템에 식별되며 사용자 이름은 일반적으로 사람을위한 인터페이스로만 사용됩니다.

UID는 해당 사용자 이름 및 기타 사용자 별 정보와 함께 / etc / passwd 파일에 저장됩니다.

세 번째 필드에는 UID가 포함되고 네 번째 필드에는 그룹 ID (GID)가 포함되며 기본적으로 모든 일반 사용자의 UID와 같습니다.

Linux 커널 2.4 이상에서 UID는 0에서 4,294,967,296 사이의 값을 나타낼 수있는 부호없는 32 비트 정수입니다. 그러나 16 비트 UID 만 수용 할 수있는 이전 커널 또는 파일 시스템을 사용하는 시스템과의 호환성을 유지하려면 최대 65,534까지만 값을 사용하는 것이 좋습니다.

UID 0은 특별한 역할을합니다. 항상 루트 계정입니다 (즉, 전능 한 관리 사용자). 이 계정에서 사용자 이름을 변경하고 동일한 UID를 사용하여 추가 계정을 만들 수 있지만 보안 관점에서 어떤 조치도 현명하지 않습니다.

UID 65534는 일반적으로 권한이없는 일반 사용자와 달리 시스템 권한이없는 사용자는 누구에게도 예약되어 있지 않습니다. 이 UID는 종종 FTP (파일 전송 프로토콜) 또는 HTTP (하이퍼 텍스트 전송 프로토콜)를 통해 시스템에 원격으로 액세스하는 개인에게 사용됩니다.

UID 1 ~ 99는 전통적으로 wheel, daemon, lp, operator, news, mail 등과 같은 특수 시스템 사용자 (의사 사용자라고도 함)를 위해 예약되어 있습니다. 일부 관리 작업은 일반 사용자에게 제공되는 것보다 더 많은 권한이 필요합니다.

일부 Linux 배포판 (예 : 버전)은 권한이없는 사용자의 UID를 100에서 시작합니다. Red Hat과 같은 다른 배포판은 500에서 시작하고, 다른 데비안에서는 데비안에서는 1000에서 시작합니다. 배포판의 차이로 인해 수동 조직의 네트워크에서 여러 배포가 사용되는 경우 개입이 필요할 수 있습니다.

또한 1000 ~ 9999와 같은 로컬 사용자를위한 UID 블록과 10000 ~ 65534와 같은 원격 사용자 (예 : 네트워크의 다른 사용자)를위한 다른 블록을 예약하는 것이 편리 할 수 ​​있습니다. 중요한 것은 결정하는 것입니다. 계획을 세우고 준수하십시오.

특정 유형의 사용자를 위해 숫자 블록을 예약하는이 방법의 장점 중 하나는 의심스러운 사용자 활동에 대해 시스템 로그를 검색하는 것이 더 편리하다는 것입니다.

대중적인 신념과는 달리 UID 필드의 각 항목이 고유하지 않아도됩니다. 그러나 고유하지 않은 UID는 보안 문제를 일으킬 수 있으므로 전체 조직에서 고유 한 UID를 유지해야합니다. 마찬가지로, 이전 사용자의 UID 재활용은 가능한 오랫동안 피해야합니다.


1
거의 완벽한 대답은하지만, IMO가 사용하는 청소기의 getent에서 직접 읽는 대신 /etc/passwd및 조회 UID_MIN/ UID_MAX대신 하드 코딩 값을 :getent passwd | awk -F: "{if (\$3 >= $(awk '/^UID_MIN/ {print $2}' /etc/login.defs) && \$3 <= $(awk '/^UID_MAX/ {print $2}' /etc/login.defs)) print \$1}"
최대 Truxa

17

로그인 할 수있는 모든 사용자 목록 (bin, deamon, mail, sys 등과 같은 시스템 사용자는 없음)

awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow

새로운 사용자 추가

sudo adduser new_username

또는

sudo useradd new_username

사용자 이름 삭제 / 제거

sudo userdel username

홈 디렉토리를 삭제하려는 경우 (기본 디렉토리 / home / username)

sudo deluser --remove-home username

또는

sudo rm -r /path/to/user_home_dir

이 사용자로부터 시스템의 모든 파일을 삭제하려는 경우 (홈 디렉토리뿐만 아니라)

sudo deluser --remove-all-files

1
어쩌면 당신은 사이의 차이를 설명한다 adduseruseradd. 또한 sudo첫 번째 명령에 -prefix를 추가하십시오 . 비밀번호 섀도 파일은 루트로만 읽을 수 있습니다.
s3lph

1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadowbin, daemon 등을 포함한 모든 사용자에게 다음 경고를 표시했습니다. escape sequence \$' treated as plain $ '이 게시물 stackoverflow.com/a/25867768/847954를 발견 하고 백 슬래시를 하나 더 추가했으며 정상적으로 작동했습니다.awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
jeff musk

8

여기에 이것을 정렬하는 데 도움이되는 트릭이 있습니다. 사용자를 입력하고 Tab 키를 두 번 누르면 터미널이 자동 완성됩니다. 사용자와 함께 존재하는 모든 명령이 처음 4 자로 나열됩니다.

user (tab tab)


당신이 구글에 명령에 대한 자세한 내용을 알고 싶다면 manadd userdel usermod users users-admin 가능한 옵션으로 나에게 man man useradd giveuseradd-새로운 사용자를 만들거나 기본 새로운 사용자 정보를 업데이트하십시오 ...

사용자를 나열하려면 Mitch가 말한 내용을 따라야합니다.

bash에서 탭 완성을 좋아하면 기억하는 것을 막을 수 있습니다.


6

머신의 / home-folder에 홈 디렉토리가있는 사용자를 찾으려면 다음 명령을 실행하십시오.

cd /home
ls 

그런 다음 서버에 로그인 할 권한이있는 사용자를 볼 수 있습니다. 모든 사용자의 파일을 조사하려면 루트 사용자 여야합니다.


8
의 내용 만 표시합니다 /home. 우분투는 기본적으로 사용자 디렉토리를 저장하지만 필수는 아닙니다.
David Foerster

ls /home삭제 된 사용자의 사용자 디렉토리를 포함 할 수도 있습니다.
Suraj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.