2023. 10. 6. 17:20ㆍ리눅스/CentOS
사용자 & 그룹
- 사용자 계정이란?
운영체제를 사용하기 위해 로그인하는 계정, 일반적으로 운영체제를 사용하는 이용자마다 각각 서로 다른 사용자 계정을 만들어준다
사용자 계정을 각각 부여하여 특정 작업을 어느 사용자가 했는지 확인이 가능
권한을 부여하기 위해 사용(특정 파일을 a 사용자는 볼 수 있고 b 사용자는 보지 못하게 만드는 등의 작업이 가능)
- 그룹이란?
사용자 계정을 묶어주는 계정
그룹에 사용자를 소속시켜 놓고, 그룹에 권한을 부여하여 소속된 사용자들에게 동일한 권한을 한 번에 적용
일반 사용자가 제어 X(관리자가 그룹의 생성/수정/삭제, 그룹에 소속된 사용자 목록 변경 등의 작업을 수행)
사용자
- 사용자 계정에 관련된 파일
1. /etc/passwd : 사용자의 일반적인 정보들이 저장된 파일
* 파일 내용 보는 방법
itbank:x:1000:1000:dust:/home/itbank:/bin/bash
itbank : 계정명, 뒤의 정보들이 어느 사용자의 정보인지 표시
x : 암호, 사용자 로그인 시 사용하는 비밀번호 영역
/etc/passwd 파일에는 보안상의 이유로 암호 표시 X
1000(왼쪽) : UID, 해당 사용자의 고유 번호
1000(오른쪽) : GID, 해당 사용자가 주요 그룹으로 사용 중인 그룹의 고유 번호
dust : 사용자 별칭, GUI 환경에서 표시 용도로 사용, 로그인에 사용 X
/home/itbank : 해당 사용자의 홈 디렉토리 경로와 이름, 무조건 절대경로로 표시
시스템 내부에서 홈 디렉토리를 찾아갈 때 참고하는 정보
/bin/bash : 사용자의 shell 정보, 무조건 절대경로로 표시
** UID, GID
시스템이 사용자와 그룹을 식별하기 위해 사용하는 숫자 값
0 : root
1 ~ 999 : service or system accounts
1000 ~ : 일반 사용자 & 그룹 accounts
** shell
kernel에 명령어를 전달해주는 역할, shell마다 사용할 수 없는 명령어가 존재
/etc/shells 파일에서 현재 시스템에 설치된 shell 목록을 확인할 수 있다
2. /etc/shadow : 사용자의 고급 정보가 저장된 파일
* 파일 내용 보는 방법
itbank:$6$~~$~~~::0:99999:7:::[같은 비밀번호라도 난수처리 때문에 다른게 나옴]
itbank : 계정명, 뒤의 정보들이 어느 사용자의 정보인지 표시
$6$~~$~~~ : 암호, 해당 사용자의 비밀번호를 암호화하여 저장
19437 : 암호 생성 일자, 1970년 1월 1일을 기준으로 며칠째 되는 날 생성된 암호인지 표시
운영체제 설치 과정에서 생성된 암호는 생성 일자 표시 X[시간이 없기 때문이다]
0 : 암호 최소 사용 일자
99999 : 암호 최대 사용 일자(암호 만료 일자)
7 : 암호 만료 전 경고 일자
** 이후의 정보들은 잘 사용하지 않아 생략
3. /etc/login.defs : 사용자 & 그룹 생성 및 삭제에 관련된 몇몇 정보들이 저장
- 비밀번호 변경
passwd : 명령어를 입력한 사용자 자신의 암호 변경(모든 사용자)
passwd 사용자명 : 해당 사용자의 암호 변경(관리자 전용)
- 사용자 생성
useradd [옵션] [값] ... [옵션] [값] 사용자명 :
* 옵션
-u : UID 지정
-g : GID 지정
-c : 별칭 지정
-s : shell 지정
-d : 홈 디렉토리 지정[절대경로!], /etc/login.defs 파일 내부 CREATE_HOME 설정이 없거나 no이면 -m 옵션과 함께 사용
-m : make directory
-k : skel로 사용할 디렉토리 지정, 반드시 -m 옵션과 함께 사용
-D : 사용자 생성 시 적용되는 기본 정보 몇 가지 확인, 이 옵션을 사용하면 사용자 생성 기능은 없어진다
특정 옵션을 함께 사용하여 기본 생성 정보를 제어할 수 있다
(ex. -b 옵션으로 홈 디렉토리 생성 위치 변경)
* /etc/skel : 사용자 홈 디렉토리의 뼈대가 되는 디렉토리
사용자 생성 시 함께 만들어지는 홈 디렉토리 내부에는 /etc/skel 내용물들이 복사된다
운영체제 설치 시 /etc/skel 내부에 만들어지는 파일/디렉토리는 사용자 홈 디렉토리에 무조건 있어야 한다
* /etc/default/useradd
: 사용자 생성 시 사용되는 기본 정보 몇 가지를 저장한 파일(useradd -D 옵션이 출력하는 정보)
이 파일의 내용을 수정하여 사용자 생성에 적용되는 기본 설정을 바꿔줄 수 있다
- 사용자 계정 정보 수정
usermod 옵션 값 [옵션] [값] ... [옵션] [값] 사용자명
* 옵션
옵션은 useradd의 옵션 대다수를 똑같이 사용 가능
-k 옵션과 -D 옵션은 usermod에서는 사용 X
-m 옵션은 make directory가 아닌 move directory로 사용
- 사용자 삭제
userdel [옵션] 사용자명
* 옵션
-r : 해당 사용자 소유의 파일/디렉토리를 함께 삭제
그룹
- 사용자를 묶어주는 용도로 사용
- 그룹에 관련된 파일
/etc/group : 그룹에 대한 일반적인 정보들이 저장된 파일
* 파일 내용 보는 방법
itbank:x:1000:
itbank : 뒤의 정보들이 어느 그룹의 정보인지 표시
x : 암호, 그룹에는 별도의 암호를 지정하지 않는다
1000 : GID, 해당 그룹의 고유 번호
마지막 필드 : 해당 그룹에 일반 소속된 사용자들의 목록
단, OS 설치 시 생성된 그룹은 함께 생성된 사용자가 해당 목록에 들어가있다
- 그룹 생성
groupadd [옵션] [값] ... [옵션] [값] 그룹명
* 옵션
-g : GID 지정
- 그룹 정보 수정
groupmod 옵션 값 [옵션] [값] ... [옵션] [값] 그룹명
* 옵션
-g : GID 지정
-n : 이름 지정
- 그룹 삭제
groupdel 그룹명
* 사용자가 자신의 주요 그룹으로 사용 중인 그룹은 삭제 X
사용자 + 그룹
- 사용자가 그룹에 소속되는 방식을 두 가지로 분류
1. 해당 그룹을 자신의 주요 그룹으로 사용(= GID로 사용)
2. 그룹에 일반 소속되어 사용
* 사용자는 반드시 하나의 그룹을 주요 그룹으로 사용해야 한다
- 사용자를 생성하면 기본적으로 같은 이름의 그룹이 함께 생성
> 옵션을 사용하지 않으면 사용자는 해당 그룹을 자신의 주용 그룹으로 사용
- 사용자가 그룹에 소속되는 방식은 언제든지 변경이 가능
1. 주요 그룹의 변경은 usermod의 -g 옵션을 사용
2. 사용자를 그룹에 일반 소속 시키기 위해
1) usermod의 -G 옵션을 사용(가급적 사용 X)
2) gpasswd 명령어 사용
gpasswd
- 그룹을 기준으로 하여 해당 그룹의 일반 소속된 사용자 목록을 편집
- 형식
gpasswd 옵션 값 그룹명
* 옵션
-a : 일반 소속된 사용자 목록에 특정 사용자 추가
-d : 일반 소속된 사용자 목록에서 특정 사용자를 제거
id
- 사용자의 UID와 GID, 소속된 그룹 목록을 출력
- 형식
id 사용자명
실습
문제
<skel 실습>
사용자 test를 만들어서 /usertest/test/public/ 경로 확인해보기
조건 1. test는 사용자 test의 홈 디렉토리
조건 2. public은 사용자 생성 시 홈 디렉토리 내부에 자동으로 생성
* 기본 skel을 사용하시거나 skel을 만들어 사용하세요
</etc/default/useradd 실습>
사용자 user7 생성
(단, 옵션은 사용하지 않고 아래의 정보가 적용되도록 설정 후 생성)
shell의 이름 : tcsh
홈 디렉토리 생성 위치 : /test
skel로 사용할 디렉토리 : /skelkg
* 확인은 useradd -D 결과와 생성된 사용자 홈 디렉토리 내부 목록을 보여주시면 됩니다
<실습>
1. itbank 이후에 만들어진 모든 일반 사용자의 홈 디렉토리를 /export/home/<username> 으로 변경
* 잘 못 만들어서 홈 디렉토리가 없는 경우에는 사용자 정보만 수정
2. 사용자의 shell은 bash shell, 별칭은 전부 없도록 정보 수정(별칭 제거 시 ''사용)
아래 조건에 맞는 사용자 생성해보기
user : testuser
UID : 1200
GID : tg
shell : csh
home directory 생성 위치 : /hosting
skel : /kgskel
자동생성 디렉토리 : public_html
자동생성 파일 : .kg
조건 1. 모든작업은 기본정보(useradd -D, /etc/default/useradd)를
수정하지 않고 옵션만 사용
조건 2. 사용자 생성 후 다른 명령어를 사용하여 정보 수정 X
(usermod 등등)
확인사항 : 사용자 생성에
사용한 명령어, 사용자 일반 정보, 홈 디렉토리 내부 내용물