본문 바로가기
컴퓨터 활용(한글, 오피스 등)/50_2.운영체제_리눅스

[UNIX / Linux] 사용자 정보, 그룹 정보

by 3604 2023. 4. 28.
728x90

[UNIX / Linux] 사용자 정보, 그룹 정보

출처: https://eunguru.tistory.com/88

사용자 정보

1. /etc/passwd 파일

- 시스템 관리자가 사용자 계정을 만들 때마다 해당 사용자와 관련된 정보를 /etc/passwd 파일에 저장함

- 시스템을 이용하는데 필요한 기본 정보들이 담겨 있음

- /etc/passwd 파일의 각 라인은 개별 사용자에 대한 정보로 이루어져 있음

- 구분자 ':'를 이용하여 7개의 필드로 구분

 

1) /etc/passwd 파일의 형식

2) 예시

① root: 사용자 계정, 로그인 이름

② x: 사용자의 패스워드 

③ 0: 사용자 ID로 특정 사용자를 나타내는 숫자로 된 ID(UID)

④ 0: 기본 그룹 ID로 사용자가 소속된 그룹을 나타내는 숫자로 된 ID(GID)

⑤ root: 사용자 관련 기타 정보(코멘트, 참고사항)

⑥ /root: 로그인에 성공한 후에 사용자가 위치할 홈 디렉토리 명

⑦ /bin/bash: 명령어를 처리하는 쉘의 종류를 지정

* 참고: /sbin/nologin, /bin/false

쉘의 종류를 나타내는 필드에 /sbin/nologin 또는 /bin/false가 기입되어 있다면, 그 계정은 시스템에서 사용하는 로그인이 필요없는 계정임을 나타낸다. 대부분 UID 100이하, 6000이상은 일반적으로 시스템에서 사용하는 로그인이 필요없는 계정이다. 

시스템에서 사용하는 로그인이 필요없는 사용자 계정을 생성하려면 useradd -s 옵션을 사용하여 로그인 쉘을 /sbin/nologin 또는 /bin/false로 지정하여 새로운 사용자 계정을 생성한다.

예) useradd -s /sbin/nologin testuser

 

2. /etc/passwd 파일 변경을 통한 해킹 방법, 대응책

1) 방법 1 - 해킹 시 주로 ③번 UID, ④번 GID를 0으로 변경

- 시스템이 UID, GID 기준으로 권한을 부여하기 때문에 계정이름이 root가 아니더라도 UID, GID가 0이면 root가 됨

(윈도우 계열 운영체제에서 시스템의 관리자 계정, 일반 계정을 구분하는 식별자인 윈도우의 보안 식별자(Security Identifier, SID) 500번이 관리자인 것과 같은 개념,

보안 식별자에 대한 자세한 내용은 http://ko.wikipedia.org/wiki/보안_식별자 참조)

2) 방법 2 - ⑦번 쉘 부분을 변경하여 사용자들이 로그인 시 악성 쉘이 실행되게 하는 방법

3) 대응책

- 주기적으로 /etc/passwd 파일의 변경 여부를 확인해서 취약점을 제거해야 함

 

3. 사용자 확인

- id 명령: 접속 중인 사용자를 확인하는 명령어, 사용자의 UID, GID를 출력

1) id 명령어 도움말

2) id 명령어 실행 결과 예시

 

4. 패스워드 변경

- passwd 명령: 사용하던 패스워드 변경, 패스워드가 없는 사용자 계정에 패스워드 부여

- passwd 명령 실행

a. 일반 사용자: 자신의 패스워드만 변경 가능

b. 슈퍼유저(root)는 자신을 포함하여 시스템에 등록된 모든 사용자들의 패스워드 변경 가능

 

1) passwd 명령어 도움말

2) passwd 명령어 실행 예시

 

5. 패스워드 암호화

- /etc/shadow 파일에 각 사용자 계정에 대한 패스워드가 암호화 되어 있음

1) /etc/shadow 파일의 형식

 

2) 예시

① root: 사용자 계정, 사용자 계정을 인덱스로 하여 /etc/passwd파일과 사용자 정보를 서로 연계

②$6$ACsZJcs/$sPdN/48UyxLi..ZoiYLKSItHe7OLDp1tHT9doOciy4UtOyJY8guf2xFFhsM1gOvSovmaILQ602.bJqIlHVnmh/: 암호화된 패스워드, 복호화가 불가능, 사용자가 입력한 패스워드를 암호화 하여 필드 값과 비교

- $6: SHA512 ($1: MD5, $2: blowfish, $5: SHA256)

- $ACsZJcs/: salt값

- $sPdN/48UyxLi..ZoiYLKSItHe7OLDp1tHT9doOciy4UtOyJY8guf2xFFhsM1gOvSovmaILQ602.bJqIlHVnmh/

: salt값 + 사용자 입력 패스워드

③ 16550: 마지막으로 패스워드를 변경한 날 (1970년 1월 1일부터 며칠이 지났는지 그 일수로 표기)

④ 0: 최소 변경 일수(패스워드를 변경할 수 없는 기간의 일수 지정)

⑤ 99999: 최대 변경 일수(현재 사용중인 패스워드를 변경하지 않고 사용할 수 있는 기간의 일 수 지정)

⑥ 7: 경고일수(max 필드에 지정한 일수가 며칠 남지 않았음을 알리는 필드, 로그인 할 때마다 경고 메시지 출력)

⑦ (현재 값지정 안함): 최대 비활성 일수(시스템에 로그인을 자주하지 않는 사용자의 경우 사용자 계정을 비활성화 시켜서 로그인이 되지 않도록 하는 기능)

⑧ (현재 값 지정 안함): 사용자 계정이 만료되는 날(1970년 1월 1일 부터 며칠이 지났는지 그 일 수로 표기)

⑨ (현재 값 지정 안함): 사용 안함

 

3) ②번 암호화된 패스워드 값의 의미

- 암호화된 패스워드 값은 정상 암호, NP, *LK*, 공백 등이 올 수 있음

a. 정상암호: 시스템 관리자가 암호를 지정하거나 일반 사용자가 passwd명력어를 통해 설정

b. NP: no password를 의미함, 주로 애플리케이션을 사용하는 사용자들에게 해당 암호를 지정

c. *LK*: lock이 설정된 사용자, 일반 사용자를 생성하고 정상 암호를 설정해주지 않는 경우 lock이 걸림

d.공백: 시스템 관리자가 암호를 설정해서 사용자에게 알려주는 방식이 아니라 일반 사용자가 처음 로그인시 암호를 직접 설정해서 사용할 수 있도록 함

 

6. 사용자 관련 명령어

- 각 명령어 실행으로 /etc/passwd, /etc/shadow, /etc/group 파일의 내용이 변경됨

- useradd: 사용자 계정 추가

- usermod: 사용자 계정 변경

- userdel: 사용자 계정 삭제

- 각 명령어 도움말

 

 

 

그룹 정보

1. 그룹명과 그룹 ID

- 자원에 대한 접근 권한 및 보안 등의 관리를 위해 사용자와 사용자가 소속된 그룹에 대한 식별 필요

- 사용자와 그룹을 식별하는 식별자: 사용자 ID, 그룹 ID (유일한 정수값)

 

2. 기본 그룹과 보조 그룹

- 자원의 소유자가 소속된 그룹에 별도의 접근 권한을 지정할 수 있음

- 같은 그룹에 소속된 사용자는 자원에 대해 동일한 접근 권한을 갖음

- 사용자 계정은 하나의 기본 그룹(Primary Group), 복수의 보조 그룹(Secondary Group)에 소속될 수 있음

- 기본 그룹: 자원의 소유를 기술하기 위하여 사용, /etc/passwd 파일의 4번째 필드 값

 

3. /etc/group 파일

1) /etc/group 파일의 형식

 

2) /etc/group 파일 예시

① audio: 그룹명

② x: 사용 안함, 그룹의 암호화된 패스워드 (현재 미사용)

③ 29: 기본 그룹 ID(GID), 그룹명을 대신하는 정수형 숫자

④ pulse: 소속된 사용자 계정들

 

4. 그룹 관련 명령어

- groupadd: 그룹 만들기

- groupmod: 그룹 설정 내용 변경하기

- groupdel: 그룹 삭제하기

- 각 명령어 도움말

공유하기
게시글 관리
구독하기오늘도 난, 하하하

 

출처: https://hwang890.tistory.com/entry/Rocky-Linux-User-Group-%EA%B4%80%EB%A6%AC

windows는 최상의 관리자를 Administrator(Admin)입니다.

linux는 root입니다.

 

Windows도 Windows Server가 있지만 리눅스가 서버사용률이 더 높습니다.

음...통계 볼필요도없어요...제가 봤음. 

이라고 했지만 ... 검색해보니 윈도우서버가 더 많네요....허허허.... 

왜인지 모르겠네요. Windows는 라이센스도 비싼데 

 

무튼 기업입장에서 굳이 비싼 Windows 라이센스를 사서 사용해야할까요?

저 같아도 공짜가 짱입니다. 

그래서 CentOS, MariaDB, 학생들이 많이 공부합니다.

리눅스도 무조건 공짜는 아니지만 유능한 엔지니어가 있다면 굳이 윈도우를 사용할 필요는 없습니다.

 

기본적인 리눅스 관리 user 관리를 해볼까요?

user관리

생성, 삭제, 확인, 수정

1. useradd -user 추가

2. userdel - user 삭제

3. users - 현재 login User

4. passwd - user 패스워드 설정 및  변경

5. usermod - user 설정 변경

 

 

#계정추가
[root@localhost test01]# useradd test02
[root@localhost test01]# ls -ahil /home/
합계 4.0K
     147 drwxr-xr-x.  5 root     root       50  9월  6 06:59 .
     128 dr-xr-xr-x. 17 root     root      224  9월  3 20:44 ..
 2422668 drwx------. 15 hwang890 hwang890 4.0K  9월  5 18:47 hwang890
34432045 drwx------.  3 test01   test01     78  9월  6 04:57 test01
 1529297 drwx------.  3 test02   test02     78  9월  6 06:59 test02
 
 
 
#passwd파일은 사용자 정보 확인
[root@localhost test01]# cat /etc/passwd | grep test02
test02:x:1002:1003::/home/test02:/bin/bash

#패스워드 정책 정보
[root@localhost test01]# cat /etc/shadow | grep test02
test02:!!:18876:0:99999:7:::
#계정 삭제
[root@localhost test01]# userdel test02



#홈디렉토리는 삭제되지 않았습니다.
[root@localhost test01]# ls -ahil /home/
합계 4.0K
     147 drwxr-xr-x.  5 root     root       50  9월  6 06:59 .
     128 dr-xr-xr-x. 17 root     root      224  9월  3 20:44 ..
 2422668 drwx------. 15 hwang890 hwang890 4.0K  9월  5 18:47 hwang890
34432045 drwx------.  3 test01   test01     78  9월  6 04:57 test01
 1529297 drwx------.  3     1002     1003   78  9월  6 06:59 test02
 
 #passwd, shadow는 검색해도 나오지 않습니다.
[root@localhost test01]# cat /etc/passswd | grep test02
cat: /etc/passswd: 그런 파일이나 디렉터리가 없습니다
[root@localhost test01]# cat /etc/shadow | grep test02

 

userdel 만한경우 

삭제해야할 정보 

/etc/passwd

/etc/shadow

/etc/group

/etc/gshadow

/home/[삭제할 계정]

/var/spool/main/[삭제할 계정]

 

입니다. 삭제를 완료해야 정상 생성이 됩니다. 

그리고 다시 아까 생성한 useradd test02를 하면 정상적으로 다시 생성됩니다.

 

아니 한번에 다 삭제 할수 없는가 ?

네 편한방법이 있죠 

userdel -r test02 를 하면 위에 적어놓은 곳에 test02 유저 정보가 삭제됩니다.

그리고 다시 test02를 생성하면 잘 생성됩니다.

 

저는 아주 기본적인 정보를 알려드립니다. 

다양한 옵션은 인터넷에 잘 정리해놓은게 많습니다.

그리고 useradd 

passwd test02 로 패스워드를 설정해줘야 접속을 할수있습니다.

 

group관리

1. groupadd - 그룹추가

2. groupdel - 그룹 삭제

3. groups - 현재 login 된User의 Group

4. gpasswd - group패스워드 설정 및 변경

5. groupmod - group설정 변경

6. groupmems  -그룹사용자 관리 명령어

 

솔직히...아직 까지 실제로 group을 사용하는 경우는 거의 보지 못했습니다. 

실제로 사용해보신분들 말씀좀....

 

하지만 알아두면 뭐 사용할 때가 있겠죠

 

[root@localhost home]# groupdel client
[root@localhost home]# groupadd client
[root@localhost home]# groupdel client

[root@localhost home]# groupadd client
[root@localhost home]# gpasswd client
client 그룹의 암호를 바꾸는 중
새 암호:
새 암호를 다시 입력하십시오:
[root@localhost home]#

group은 생성삭제 시 따로 부수적인 옵션이나 작업이 필요없습니다.

 

그럼 test02를 client group에 한번 옴겨볼까유?

 

[root@localhost home]# groupmems -g client -a test02
[root@localhost home]# cat /etc/group | grep client
client:x:1004:test02

 

이렇게 관리하면 됩니다. 

 

오늘은 user관리, group관리를 설명했습니다.

user는 useradd시 

/etc/passwd

/etc/shadow

/etc/group

/etc/gshadow

/home/[삭제할 계정]

/var/spool/main/[삭제할 계정]

생성된다가 중요포인트입니다.

 

useradd환경설정은.

/etc/default/useradd -

# useradd defaults file
#기본 소속 그룹
GROUP=100

#홈디렉토리 경로
HOME=/home

#패스워드 종료일 이후 유효여부
#1이상 만료후 해당 기간만큼 패스워드 유효
#0 만료시 바로 잠김
#-1 비활성화
INACTIVE=-1

#계정 만료기간
EXPIRE=

#Base쉘
SHELL=/bin/bash

#홈디렉토리 생성시 함께 생성되는 skel디렉토리 경로
SKEL=/etc/skel

#계정생성시 메일 생성 여부
CREATE_MAIL_SPOOL=yes

/etc/login.defs

[root@localhost home]# cat /etc/login.def

MAIL_DIR        /var/spool/mail

UMASK           022

PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7


UID_MIN                  1000
UID_MAX                 60000


SYS_UID_MIN               201
SYS_UID_MAX               999


GID_MIN                  1000
GID_MAX                 6000
SYS_GID_MIN               201
SYS_GID_MAX               999


CREATE_HOME     yes


USERGROUPS_ENAB yes

ENCRYPT_METHOD SHA512

 

/etc/skel/

useradd명령어가 실행시 홈디렉토리로 에 복사할 기본설정 내용들

[root@localhost home]# ls -ahil /etc/skel/
합계 24K
    6788 drwxr-xr-x.   3 root root   78  9월  3 20:44 .
16777345 drwxr-xr-x. 140 root root 8.0K  9월  6 07:39 ..
  176169 -rw-r--r--.   1 root root   18  6월 16 19:42 .bash_logout
  176170 -rw-r--r--.   1 root root  141  6월 16 19:42 .bash_profile
  176171 -rw-r--r--.   1 root root  376  6월 16 19:42 .bashrc
16811556 drwxr-xr-x.   4 root root   39  9월  3 20:43 .mozilla

 

열공해서 리눅스 마스터 하세요!

728x90