뭉게뭉게 엔지니어
사용자 & 그룹 관리 본문
● account (계정) : 사용자를 식별하고 인증을 받거나 로컬/네트워크 자원에 접근하는 것을 가능케 해주는 객체
└ 인증/접근
● group (그룹) : 비슷한 객체(user)의 논리적인 집합으로, 권한을 편리하게 할당하기 위해 사용
└ 보안성 향상
※하나의 그룹에 소속된 계정은 그룹의 권한을 그대로 상속 받음!
1. 사용자 관리
※ 사용자 생성 > 확인 > 비밀번호 설정 > 사용자 삭제 과정은 반드시 할 수 있어야 한다!
사용자 생성 > 확인 > 비밀번호 설정 ]
# 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
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