뭉게뭉게 엔지니어

사용자 & 그룹 관리 본문

☁ Server/기초 따라가기

사용자 & 그룹 관리

어푸어푸🌊 2022. 6. 30. 18:20

● account (계정) : 사용자를 식별하고 인증을 받거나 로컬/네트워크 자원에 접근하는 것을 가능케 해주는 객체

                                        └ 인증/접근  

● group (그룹) : 비슷한 객체(user)의 논리적인 집합으로, 권한을 편리하게 할당하기 위해 사용

                                                                                                                    └ 보안성 향상

                                      ※하나의 그룹에 소속된 계정은 그룹의 권한을 그대로 상속 받음!

1. 사용자 관리

accout 관리 파일

 

※ 사용자 생성 > 확인 > 비밀번호 설정 > 사용자 삭제   과정은 반드시 할 수 있어야 한다!

 

 

사용자 생성  > 확인 > 비밀번호 설정 ]

# useradd test01
# passwd test01
  ┖ 비밀번호를 설정해주지 않으면 GUI 에 뜨지 않아 접속을 할 수 없다!

생성확인]
# tail -1 /etc/passwd

GUI 로그인]
새로운 계정으로 로그인 되면 끝!
> 터미널을 열어서 프롬프트 확인하기!
  $ : 일반 사용자
  # : 수퍼 유저(관리자)

 

사용자 삭제 ]

# userdel -r test01
           ┖ 관련 정보 및 폴더 모조리 지우는 옵션!
             -r 옵션을 하지 않으면 홈디렉터리에 남아있게 된다. 
              >> 홈디렉터리만 남아있게 되는 경우, userdel을 했을 때 사용자가 없다고 뜸!
                >> 이럴 땐 rm -rf 로 지워주면 된다! (rm -rf는 완전 삭제 명령어니까!)
                
                ※rm -r : 디렉터리 삭제 옵션. 디렉터리와 하위디렉터리를 삭제할지 묻지 않고 삭제함.
                  rm -f : 존재하지 않는 파일은 출력하지 않으며 강제로 파일 또는 디렉터리를 삭제함.

 

 

 

usermod ]

사용자 설정을 변경한다.
자주쓰는 옵션으로는 -c (comment : 주석 추가) , -s (shell 변경) , -d (홈디렉터리 변경)

ex) test02 생성, 주석 추가 : t2 , shell 변경 : /bin/csh , 홈디렉터리 변경 test02
사용자 생성]
# useradd test02
# passwd test02

조건 변경]
# usermod -c t2 -s /bin/csh -d /test02 test02

변경 확인]
# tail -1 /etc/passwd
            ┖ account의 정보가 담겨있음!
test02:x:1002:1002:t2:/test02:/bin/csh

 

 

/etc/skel ]

- 사용자 계정의 홈 디렉터리에 제공 할 기본 환경설정 파일이 저장된 디렉터리
- 사용자 홈 디렉터리의 초기 환경 제공을 위해 사용 됨
- 사용자 계정을 생성 했을 때 skel 디렉터리에 있는 파일들이 자동으로 사용자 홈 디렉터리로 복사됨

/etc/skel : 홈디렉터리 생성시 기본디렉터리 
/etc/skel 을 복사하여 해당 홈디렉터리가 생김
미리 /etc/skel안에 파일을 복사 해놓으면 사용자 생성시 해당파일이 무조건 생김

생성시 -M
# useradd -M test02
# ls /home/test02
ls: cannot access /home/test02: 그런 파일이나 디렉터리가 없습니다

생성시 -mk 
새로운 /etc/skel 을 만들어서 지정 
# cp -r /etc/skel /sk
# echo hi > /sk/hello.txt
# ls -a /sk
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla  hello.txt

 

2. 그룹 관리

그룹 관리 파일

-g : 사용자 생성 시 지정된 그룹에 추가하는 옵션.
-G : 사용자 생성 시 지정된 2차 그룹으로 추가하는 옵션.

※해당 그룹은 미리 생성되어 있어야하며, 관련정보는 /etc/group 에 있음!

# cat /etc/group
root:x:0:
~
ktest:x:1000:ktest 일반사용자는 1000번 부터 
test01:x:1001:
test02:x:1002:

groups : 사용자 소속 그룹 확인 
[root@localhost ~]# groups test02
test02 : test02
[root@localhost ~]# groups test03
groups: test03: no such user

[root@localhost ~]# grep ktest /etc/passwd
ktest:x:1000:1000:ktest:/home/ktest:/bin/bash  - 1차그룹 g

[root@localhost ~]# grep ktest /etc/group
wheel:x:10:ktest - 2차 그룹 G
ktest:x:1000:ktest 

[root@localhost ~]# groups ktest
ktest : ktest wheel



# useradd -g test01 -G ktest test02
# groups test02
test02 : test01 ktest

다른 홈디렉터리용 
# mkdir /h

uid 지정 , comment , shell , 홈디렉터리 위치
# useradd -u 1500 -g 1500  -d /h/test02 -s /bin/csh test02
useradd: '1500' 그룹이 없습니다

사용자 생성시에는 사용자 이름과 같은 그룹이 만들어 지던지 또는 별도의 존재하는 그룹을 지정 
존재하는 그룹 1001 을 확인 
[root@localhost ~]# tail -3 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
ktest:x:1000:1000:ktest:/home/ktest:/bin/bash
test01:x:1001:1001::/home/test01:/bin/bash

생성 
[root@localhost ~]# useradd -u 1500 -g 1001 -d /h/test02 -s /bin/csh test02

생성후 정보 
[root@localhost ~]# tail -1 /etc/passwd
test02:x:1500:1001::/h/test02:/bin/csh

skel 디렉터리 적용 여부 
[root@localhost ~]# ls /h/test02/
hi.txt

- home 디렉터리 없이 생성 
[root@localhost ~]# useradd -M test02
[root@localhost ~]# ls /home/
ktest/  test01/
[root@localhost ~]# ls /home/test02
ls: cannot access /home/test02: 그런 파일이나 디렉터리가 없습니다
[root@localhost ~]# man useradd
[root@localhost ~]# cp -r /etc/skel /sk
[root@localhost ~]# echo gotohell > /sk/warning.txt
[root@localhost ~]# ls -al /sk

기존 사용자 삭제
[root@localhost ~]# userdel -r test02
userdel: test02 home directory (/home/test02) not found : -M 옵션을 써서 그런거!!!

새로 생성한 skel 디렉터리 적용하면서 생성 후 확인 
[root@localhost ~]# useradd -mk /sk test02
[root@localhost ~]# ls -a /home/test02/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla  hi.txt  warning.txt

 

 

# chage 명령어 옵션 개념도

groupadd / groupdel / groupmod

그룹 생성 삭제 
[root@localhost ~]# groupadd tgroup
[root@localhost ~]# grep tgroup /etc/group
tgroup:x:1003:
[root@localhost ~]# tail -1 /etc/group
tgroup:x:1003:
[root@localhost ~]# groupdel tgroup
[root@localhost ~]# tail -1 /etc/group
test02:x:1002:

gid 지정 생성 > 삭제 
[root@localhost ~]# groupadd -g 1500 tgroup
[root@localhost ~]# tail -1 /etc/group
tgroup:x:1500:
# groupdel tgroup

testgroup 생성 > gid , 그룹명 을 동시에 변경
[root@localhost ~]# groupmod -n tgroup -g 1500 testgroup
[root@localhost ~]# tail -1 /etc/group
tgroup:x:1500:

[root@localhost ~]# userdel -r test01
[root@localhost ~]# userdel -r test02

사용자 생성시 1차그룹이름으로 지정 
[root@localhost ~]# useradd -g testgroup  test01
useradd: 'testgroup' 그룹이 없습니다
[root@localhost ~]# useradd -g tgroup  test01
[root@localhost ~]# tail -1 /etc/passwd
test01:x:1001:1500::/home/test01:/bin/bash

사용자 생성시 test01 삭제후 다시 gid 번호를 지정을 하여 1차그룹 지정 
[root@localhost ~]# userdel -r test01
[root@localhost ~]# useradd -g 1500 test01
[root@localhost ~]# tail -1 /etc/passwd
test01:x:1001:1500::/home/test01:/bin/bash

-G : 2차 그룹 지정 
[root@localhost ~]# userdel -r test01
[root@localhost ~]# useradd -G 1500 test01 -0 2차 그룹 지정 
[root@localhost ~]# tail -1 /etc/passwd
test01:x:1001:1001::/home/test01:/bin/bash

- 2차그룹 표시 확인 
[root@localhost ~]# tail -3 /etc/group
ktest:x:1000:ktest
tgroup:x:1500:test01
test01:x:1001:

[root@localhost ~]# groups test01
test01 : test01 tgroup

3. /etc/passwd 파일

root 사용자 계정 이름  
x 패스워드가 암호화되어 /etc/shadow파일에 저장되어 있음  
0 uid (관리자 : 0 , 사용자 : 1000 이상) 사용자/그룹에 대한 고유 번호
0 gid (관리자 : 0 , 사용자 : 1000 이상) 그룹에 대한 고유번호
사용자 생성시 그룹도 같은 이름으로 생성됨.
※gid와 uid는 달라질 수도 있다.
root 계정 정보 (comment)  
/root 사용자의 홈 디렉터리
관리자 : /root , 사용자 :  /home/계정이름 
 
/bin/bash 사용자의 shell 정의 (default : bash)  

 

4. /etc/shadow 파일

hash id 	: $6
salt 	    : $nsXkw6Pt5sjSlIcj
hashvalue	:$Ma9VZWc3s3GKIDjRKN7f3BstOwPPSO~

hashid : 암호화 방식 - SHA512 
비밀번호 + salt -> hash id, 암호화 값이 hashvalue
결론 : salt 에 따라서 값이 달라짐

비밀번호 검증은 어떻게 이루어지는가 ?
사용자가 입력한 비밀번호 + salt 하여 암호화 한 값 = 미리 저장된  hashvalue 비교하여
맞으면 로그인 성공

 

'☁ Server > 기초 따라가기' 카테고리의 다른 글

Compress(tar,gzip,bzip2)  (0) 2022.07.17
Special permission & ACL(확장퍼미션)  (0) 2022.07.08
Permission  (0) 2022.07.08
Ownership  (0) 2022.07.05
vi editor  (0) 2022.06.30
Comments