별도의 시스템 사용자와 서비스 사용자


8

우리는 모두 시스템 사용자와 서비스 사용자가 있다는 것을 알고 있습니다. 시스템 사용자와 서비스 사용자 목록으로 분리하는 방법을 찾고 있습니다.

어떤 방법이 있습니까?

답변:


7

gid따라 시스템 사용자와 서비스 사용자는 다음과 같이 분리 될 수 있습니다 .

/etc/passwd다른 정보와 함께 모든 사용자의 목록을 포함합니다. 서비스 사용자 또는 실제 사용자는 gid1000 이상입니다. 따라서 실제 사용자 목록은 다음과 같이 얻을 수 있습니다.

awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd

또한 시스템 사용자 목록 ( gid<1000)은 다음과 같이 추출 할 수 있습니다.

awk -F: '($3<1000){print $1}' /etc/passwd

작동 원리

내용 /etc/passwd은 같다

    root:x:0:0:root:/root:/bin/bash
    ...
    souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash

awk함께 사용 -F:하면 행의 내용이 :필드 구분 기호로 취급되는 여러 필드로 분할 됩니다. 첫 번째 필드에는 사용자 이름이 있고 세 번째 필드에는가 있습니다 gid.

따라서 실제 사용자를 추출 awk하려면 세 번째 필드의 값을 확인하는 것이 1000보다 크며 아무도 사용자 가 아니며 첫 번째 필드, 즉 사용자 이름을 인쇄합니다.

방금 확인한 모든 시스템 사용자를 나열하려면 gid1000 미만이며 사용자 이름을 인쇄합니다.

편집하다

root실제 사용자 목록에 (gid = 0) 을 나열하고 싶습니다 . 실제 사용자를

awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd

시스템 사용자를

awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd

참고 항상 nobody사용자를 무시하고 있습니다.


루트 사용자를 어떻게 관리 할 수 ​​있습니까?
rɑːdʒɑ

요점을 이해하지 못했습니까? 시스템 사용자로 root를 얻게됩니다. 실제 사용자 목록에 루트를 포함 하시겠습니까?
souravc

그는 또한 사용자이기 때문에 그렇습니다.
rɑːdʒɑ

@rajagenupula 괜찮아?
souravc

나는 실제 사용자 목록 @S에서 루트 사용자 싶은
rɑːdʒɑ

2

로그인 할 수있는 로컬 (시스템 사용자)을 나열하고 homedir 및 GID가 1000보다 작은 경우

 cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1

다른 모든 사용자를 나열하려면 : (주로 시스템 사용자이고 GID가 1000보다 작음) :

cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]"  | cut -d: -f1

1
루트 사용자의 그룹 ID와 사용자의 ID가 1000보다 적습니다. 답변 해 주셔서 감사합니다
rɑːdʒɑ

@rajagenupula 그렇습니다. 루트 만 예외입니다. 우분투에서 일반적으로 루트는 기본적으로 로그인 할 수 없습니다.
kamil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.