본문 바로가기

Linux

리눅스 사용자 관리

사용자의 분류

 

1) 사용자의 종류

  • 루트계정 : 모든 권한을 가진 특별한 사용자
  • 시스템 계정 : 리눅스 설치시 기본으로 생성되는 계정
  • 사용자 계정 : 실제 리눅스 사용자를 위한 계정

루트 계정 관리

 

1) root 계정

완전한 권한을 갖는 슈퍼유저 사용자.

해당 시스템의 대표 관리자 계정

UID는 0

 

2) 루트계정 권한 획득 방법

 

1. root 사용자로 로그인

$sudo passwd root

패스워드 입력후 로그인

 

2. root 사용자로 임시 전환

sudo 명령어를 통해 루트권한으로 해당 명령어를 실행

해당명령이 종료되면 root권한도 사라짐

$sudo vi /etc/passwd

 

3. 현재 사용자를 root 사용자로 지정

/etc/passwd 파일에서 사용자의 UID를 0으로 입력하면 해당 사용자는 root 권한을 갖게됨.

 

3) 루트 계정 관리 방안

  • 시스템 초기 환경설정 시에만 이용하고 SSH를 통해 root 사용자 로그인이 되지 않도록 설정
  • 시스템상 root계정을 유일해야 함.
  • PAM을 통해 root 사용자로 로그인 할 수 없도록 설정
  • 환경변수 TMOUT을 설정하여 자동 로그아웃 되도록 설정.
  • root계정으로 로그인하는것을 지양하고 필요할경우 sudo 명령을 사용.
ssh 서비스의 root 로그인 막기

sshd_config 파일을 root 권한으로 수정
$sudo vi /etc/ssh/sshd_config

파일내용중 PermitRootLogin항목을 no로 설정.

sshd 서비스 재시작
$sudo systemctl restart sshd

시스템 계정 관리

 

1) 시스템 계정 설명

시스템의 특정 서비스에 대한 권한을 행사할 수 있는 계정

bin, daemon, adm, lp,sync, shutdown, halt, mail같은 계정들이 시스템 계정

/etc/passwd 파일에서 uid가 1~499 갖는 계정을 살펴봄.

 

UID

시스템 계정은 보통 0~99의 범위를 가짐.

레드햇 계열은 100~499 데비안 계열은 100~999 범위

 

2) 시스템 계정 관리 방안

 

서비스별로 권한을 분리하여 시스템 계정을 생성

리눅스를 설치하면 기본으로 설치되는 시스템 계정을 보면 메일관리는 mail, ssh서비스는 ssh계정이 담당.

 


사용자 계정 관리

 

1) 사용자 계정 설명

일반사용자 계정. 시스템 파일과 디렉터리에 제한적으로 접근하도록 설정해 시스템 보호

리눅스는 그룹단위로 파일접근 권한설정과 프로세스관리를 수행

 

레드햇 centos6 버전의 UID는 500이상의 값을 가짐.

centos7버전과 오픈수세, 데비안의 UID는 1000이상의 값을 가짐.

일반사용자 계정의 UID 범위는 /etc/login.defs에 정의.

 

2)사용자 생성하기

useradd 명령어나 adduser명령어를 사용.

 

useradd [option] username

 

-d, --home 홈디렉터리 지정.
-D, --default 사용자 생성시 사용하는 기본값을 보거나 설정
-e, --expiredate YYYY-MM-DD 형식으로 계정의 만기일 지정
-f. --inactive 패스워드 만료일 이후 유효기간을 설정
1이상의 숫자이면 해당일수만큼 패스워드 유효.
0이면 만료되면 바로 잠김.-1이면 해당기능을 사용하지 않음.
-g, --gid GROUP 사용자 그룹설정.
설정하지 않으면 사용자 이름과 동일한 그룹에 설정.
-G, --groups 기본 그룹이외에 추가로 그룹을 생성할때
-k, --skel SKEL_DIR -m 옵션을 통해 홈 디렉터리 생성할때 복사할 기본파일을 지정할때 사용
-m, --create-home 홈 디렉터리를 지정할 떄 사용하고 디렉터리가 없으면 생성
-k 옵션과 같이 사용해서 홈디렉터리 생성시 복사할 기본 파일경로도 지정
-M 홈디렉터리를 생성하지 않음
-N, --no-user-group 사용자와 동일한 이름으로 그룹을 생성하지 않음.
-p, --password 평문이 아닌 암호화된 패스워드를 설정
-r, --system 시스템 계정을 생성
-s, --shell 사용자가 사용할 셸을 지정
-u, --uid 사용자 유일한 UID값 설정

예제

사용자를 생성한다

#useradd blue

홈 디렉터리를 지정하여 생성 /home/color 경로는 미리 생성되어 있어야 함.

#useradd -d /home/color/blue

UID와 그룹을 지정하여 사용자를 생성. color 그룹은 미리 생성되어 있어야 함.

#useradd -u 999 -g color blue

사용자 계정의 만료일을 지정하면서 생성

#useradd -e 2019-12-25 blue

생성시 기본옵션을 열람

#sudo useradd -D

 

3) passwd를 통한 패스워드 설정

passwd [option][username]

 

-d, --delete 패스워드 삭제. 비밀번호없이 로그인 가능
-e, --expire 사용자의 패스워드를 만료
-i, --inactive 패스워드 만료후 비활성화전 유예기간 일 지정
-l, --lock 사용자 패스워드에 락 걸어 로그인 막음
-n, --mindays 비밀번호 변경할수 있을때까지 유지해야할 일수 설정
-q, --quiet 화면 출력없이 명령을 수행
-S, --status 사용자의 로그임명, 패스워드 상태, 설정여부, 마지막으로 변경한 날짜, 패스워드 변경까지 남은 기간 등 다양한 정보 출력
-u, --unlock 락을 걸었던 패스워드를 다시 해제
-w, --warndays 패스워드 만료전 경고날짜 지정
-x, --maxdays 최대사용기간 설정

예제

사용자 패스워드 설정

$sudo passed blue

현재사용자 패스워드 변경

$passwd

지정한 사용자 패드워드 만료

$sudo passwd -e test

지정한 사용자의 패스워드 상태를 출력

$sudo passwd -S test

지정한 사용자 패스워드 락

$sudo passwd -l blue

지정한 사용자 패스워드 삭제

#sudo passwd -d blue

패스워드 변경후 7일간 변경 불가능, 365일간 사용할수 있고 5일전부터 패스워드 변경 경고. 만료후 10일 유예기간

$sudo passwd -n 7 -x 365 -w 5 -i 10 blue

 

4) su 명령어도 사용자 전환

switch user 약자

다른 사용자의 권한으로 실행

su [options] username

 

-c, --command 지정한 사용자로 셸이 실행할 명령어 지정
-, -l, --login 사용자가 직접 로그인했을때 동일하게 환경변수가 설정되고 홈 디렉토리로 이동
-s, --shell 명시된 셸 사용

root 사용자 전환. 환경변수 등 사용자의 로그인 환경을 설정한 후 전환. 

$su -

$su -l

$su -login

사용자 전환을 하지않고 일시적으로 지정명령 실행

$su root -c "vi /etc/passwd"

 

5) usermod를 사용하여 사용자설정 변경

사용자 셸, 홈디렉토리, 그룹, UID, GID 사용자 설정 변경

useradd 명렁어의 설정 대부분 적용가능.

 

usermod [options] username

 

-a,--append 사용자에 그룹 추가하기위해 -G 옵션과 사용
-c,--comment 사용자에 간단한 정보 입력
-l,--login 로그인 이름 변경
-L, --lock 패스워드에 락
-U,--unlock 패스워드 락 해제

예제

사용자 홈 디렉터리 변경. -m 옵션까지 입력하면 내용도 복사

$usermod -d /home/whiteblue blue

사용자 그룹을 photo 사용자 그룹으로 변경

$usermod -g photo blue

 

6) userdel을 사용한 사용자 계정 삭제

사용자 계정 삭제

userdel [option] username

 

예제

계정삭제. 파일은 남아있음.

$userdel blue

-r 옵션을 통해 사용자 계정 삭제

#userdel -r blue

-f옵션으로 강제 삭제

#userdel -f blue

 

7) chage를 통한 패스워드 관리

사용자 패스워드 만료정보 설정

 

chage [options] username

 

-d,--lastday 패스워드를 변경해야 할 날짜수 지정
-E,--expiredate 계정이 만료되는 날 설정
-I,--inactive 계정만료후 패스워드가 비활성화될때까지 유예기간을 설정
-l,--list 계정의 매스워드 만료 정보 보여줌
-m,--mindays 패스워드 변경할 때 최소 날짜를 지정
-M,--maxdays 패스워드 변경할 때 최대날짜 지정
-W,--warndays 패스워드 만료에 대한 경고 메시지를 보여줄 날짜를 지정

예제

만료정보 출력

$sudo chage -l test

 

test 계정의 패스워드 최소 사용날짜 7일, 최대 사용날짜 365일 5일전부터 경고메시지. 만료후 3일 유예기간

$sudo chage -m 7 -M 365 -W 5 -I 3 test

test 계정의 만료일 지정.

$sudo chage -E 2019-12-24 test

test계정의 패스워드 변경일 10000 설정

$sudo chage -d 10000 test


그룹계정 관리

 

1) group 개요

그룹이란 사용자를 묶어 관리 가능하게 하는 매커니즘. 

모든 사용자는 UID와 그룹에 대한 식별자인 GID 가짐.

그룹을 통해 각 그룹에 보안설정, 접근설정, 권한등을 일괄 적용 관리.

사용자 생성시 사용자 이름과 동일한 그룹을 생성하여 포함시킴.

 

2) groupadd를 통한 그룹생성

새로운 그룹을 생성하기 위한 명령어

groupadd [options] groupname

 

-f, --force 그룹을 생성할때 이미 생성되어 있더라도 성공으로 간주
-r, --system 시스템 그룹을 생성
-g,--gid GID 그룹의 양수의 GID를 지정
-o,--non-unique 그룹을 생성할때 중복된 GID값 허용

예제 

GID 지정하여 그룹을 생성

$sudo groupadd -g 550 colors

 

3) groupmod를 통해 그룹정보 변경

그룹관련 설정파일인 /etc/group, /etc/gshadow, /etc/passwd 에서 그룹관련 속성 변경

$sudo groupadd -g 550 colors

 

-g, --gid 변경할 GID 설정
-o 옵션을 주지않는다면 유일한 정수값
-n, --new-name 그룹의 이름 변경

colors 그룹 이름을 newcolors 그룹으로 변경 

$sudo groupmod -n newcolors colors

GID 567로 변경

$sudo groupmod -g 567 colors

 

4) grouddel을 통해 그룹 삭제

주 그룹에 존재하는 사용자가 없어야 하고 사용자를 삭제한 후 그룹을 삭제할 수 있음.

또한 파일중 그룹이 설정된 파일이 없어야 한다.

groupdel [options] groupname

 

예제

그룹을 삭제

$sudo groupdel colors

 

5) gpasswd를 통해 그룹 패스워드 변경

그룹의 패스워드 정보는 /etc/group과 /etc/gshadow 에 저장되어 있음.

 

gpasswd [options] groupname

 

-a, --add user 그룹에 사용자를 추가
-d, --delete user 구룹에 사용자 삭제
-r, --remove-password group 그룹의 패스워드 제거
그룹멤버는 newgrp 명령어를 사용해 그룹에 참가
-R, --restrict group 그룹 접근 제한
패스워드 가진 그룹멤버만 newgrp통해 그룹에 참가
-A, --administrator user .. 관리자로 지정할 사용자 설정
-M, --memvers user.. 그룹멤버 설정

 

6) newgrp로 그룹 참여

현재 로그인 되어있는 세션의 GID 변경

그룹패스워드가 존재하는데 그룹에 속하지않는 사용자가 이 명령어를 사용하려면 패스워드 입력 필요.

 

newgrp groupname

 

현재 그룹대신 colors 그룹으로 전환

$newgrp colors


사용자 환경설정 파일

사용자 계정과 그룹정보는 /etc 디렉터리 이하에 존재

구분 파일명 설명
계정 및 그룹 설정파일 /etc/passwd 사용자 계정의 아이디, 그룹정보 등 계정정보
/etc/shadow 암호화된 패스워드 및 정책 설정 정보
/etc/group 사용자 그룹의 기본정보
/etc/gshadow 사용자 그룹의 암호화된 패스워드 정보
계정 환경설정 파일 /etc/default/useradd Useradd명령을 사용할 때 기본 설정
/etc/login.defs 로그인 수행시 기본설정
/etc/skel 홈 디렉터리 생성시 기본으로 제공할 파일

 

1) /etc/passwd

로그인시 필요한 UID, GID, 홈디렉터리, 셸 등의 사용자 계정 정보를 포함.

모든 사용자에게 읽기권한 가진 파일

루트 사용자만 쓰기 허용

 a  b  c   d        e              f                 g 

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

a 사용자 명 : 로그인 할때 사용하는 사용자이름

b 비밀번호 : x는 암호화된 패스워드를 보관하고있다는 의미

c UID : 사용자 ID

d GID : /etc/group 파일에 보관된 주 그룹 ID

e 사용자 설명 : 사용자에대한 추가설명 코멘트 필드

f 홈 디렉터리 : 기본디렉터리로 절대경로로 설정

g 셸 : 셸의 위치를 절대 경로로 지정.

 

2) /etc/shadow

사용자 패스워드를 해시 알고리즘으로 암호화한 값과 패스워드와 연관된 여러 속성을 단고있는 파일

/etc/passwd 파일은 각 사용자들에 대한 암호 정보를 담고있음.

 

구조

francis: $fislf2R$R45trhertsdfs:18119:0:99999:7:  :  :

사용자명:패스워드:마지막 변경일: 패스워드 최소사용일:최대사용일:만료경고일:유예기간:만료일

 

3) /etc/default/useradd

사용자 생성시 사용되는 기본 설정값이 저장된 환경설정 파일

useradd -D 로 내용확인 가능.

 

4) /etc/login.defs

쉐도우 패스워드 스위트를 위한 읽기 전용 환경설정파일

패스워드 최대 사용일 PASS_MAX_DAYS 패스워드 최소사용일 PASS_MIN_DAYS 패스워드 만료 경고일 PASS_WARN_AGE 등 설정

 

5) /etc/group

그룹에 속한 사용자를 관리하는 파일.  그룹에 여러 사용자가 속할 수 있음.

 

구조

mail:x:12:mail,postfix

그룹명:패스워드:GID:멤버목록

 

6) /etc/gshadow

그룹의 암호화된 비밀번호 정보를 포함.

루트권한 사용자만 접근 가능

 

구조

test:$65$ssafhasrjkg/sasldfjsadkf:test:francis

그룹명:패스워드:그룹관리자:멤버목록


사용자 및 그룹 정보 관련 명령어

 

1) users 

현재 호스트에 로그인되어 있는 모든 사용자 출력

 

2) who 

현재 호스트에 로그인되어 있는 모든 사용자 출력

터미널 종류, 로그인 시각 등 기본적으로 출력

who [options] 

 

3) whoami 

현재 로그인한 사용자의 사용자명 출력

id명령어에 -un 옵션을 사용한 것과 동일

 

4) w 

현재 로그인한 사용자가 어떤시스템에서 로그인했는지 어떤 프로세스를 실행하고있는지 출력

w [option] [user]

 

-h , --no-header 컬럼의 헤더를 출력하지 않음

-s, --short 정보를 간략히 출력

 

5) logname 

현재 로그인한 사용자 로그인 이름을 출력

 

6) id 

지정한 사용자의 사용자 정보와 그룹정보를 출력하거나 현재 사용자 정보를 출력

id [options] [username]

 

7) groups 

특정 사용자나 현재 로그인한 사용자가 속한 그룹을 표시

 

8) lslogins 

wtmp 및 btmp 로그를 바탕으로 시스템의 전체 사용

lslogins [options]

 

9) pwconv, pwunconv, grpconv, grpunconv 

pwconv 는 /etc/passwd로부터 /etc/shadow 생성

pwunconv 는 /etc/passwd와 /etc/shadow를 /etc/passwd를 생성하고 /etc/shadow를 삭제

grpconv는 /etc/group로부터 /etc/gshadow를 생성

grpunconv는 /etc/group와 /etc/gshadow를 /etc/group를 생성하고 /etc/gshadow를 삭제

 

10) pwck, grpck

pwck는 /etc/passwd 잘못된 내용이 있는지 점검하는 명령어

grpck는 /etc/group 점검하는 명령어

'Linux' 카테고리의 다른 글

리눅스 프로세스 관리  (0) 2020.08.28
파일시스템 관리  (0) 2020.08.23
네트워크의 설정  (0) 2020.08.19
네트워크 기초  (0) 2020.08.16
프로세스  (0) 2020.08.16