Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

사용자 계정 관리 본문

운영체제/Linux - CentOs

사용자 계정 관리

세레프 2023. 3. 12. 07:49

 사용자는 계정이나 아이디를 통해 운영체제에 접속이 가능하다. 아이디(identifier)란 시스템을 사용가능한 식별자로, 시스템을 사용할 수는 있지만, 시스템을 생성이나 수정은 할 수 없다. 즉, 서버에게 아이디를 인증받으면, 서버를 사용할 수 있지만, 개발자처럼 수정은 불가능하다.

 

 반대로 계정(Account)은 시스템에 들어갈 수 있는 관리자로, 시스템을 사용하는 것은 물론, 시스템 서버를 생성, 수정을 할 수 있는 권한을 가진다. 이때, 계정에도 상하관계가 있는데, 일반적으로 만들어 지는 사용자 계정은 일부 권한만 가지고 있는 일반 관리자로, 시스템의 생성 및 수정이 제한적이다. 하지만 운영체제를 설치할 때 부터 존재한 사용자 계정은 최고 관리자이기 때문에, 모든 시스템의 생성 및 수정이 가능한 것이다.

 

 

프롬프트

 프롬프트사용자의 명령을 받기위해서 대기중인 명령 대기모드로, 어떤 사용자가 어느 호스트 서버에서 어떤 디렉토리로 작업하는지 알 수 있다. 

[[사용자명]@[호스트명][현 작업중인 디렉토리]][사용자 구분자]

위의 구조는 프롬프트의 구조로, 사용자와 호스트, 현 디렉토리의 위치를 알 수 있다. 이때, 사용자의 종류를 구분해야하는데, 사용자 구분자에서 "$"는 일반 사용자이며, "#"은 슈퍼 사용자(최고 권한 사용자)를 뜻 한다. 즉, "[root@localhost ~]#"은 최고사용자인 root는 localhost(내 PC)에서 root 홈 디렉토리에서 명령을 기다린다는 뜻이다. 

 

프롬프트 관련 횐경설정파일
"/etc/bashrc"은 쉘 관련 환경설정파일로, 41번째 줄을 보면 프롬프트 관련 설정이 있는 것을 확인 할 수 있다. "/root"에도 존재하는데 bashrc파일이 존재하지만, "/etc/bashrc"가 우선으로 적용된다.
[\u@\h \W]\\$ :  \[사용자명]@\[호스트명]\[최종 디렉터리 출력]\\$
사용가능 설정 
\t : 24시간제 출력,         \T : 12시간제 출력,        \@ : 12시간제(오전/오후),        \w : 전체경로 출력,        \W : 최종 디렉터리 출력
\d : 날짜 출력,               \u : 사용자명 출력,         \h : 호스트명 출력

 

사용자 계정 관련 파일 / 디렉토리

 우리가 사용자 계정을 생성하면, 운영체제는 다음 파일에 사용자에 대한 정보가 저장되며, 다음 디렉토리가 생성된다.

 

  • /etc/passwd

 사용자 정보 등록파일로, 총 7개의 사용자 정보를 저장하고 있다.

[계정명]: [패스워드 자리] : [UID] : [GID] : [설명] : [홈디렉터리] : [셸 종류or 셸 상태] 

  • 패스워드 자리: 계정의 패스워드의 정보 유무를 알려주는 자리로, x는 패스워드가 존재한다는 의미, 해당 패스워드는  shadow에 암호화되어서 저장
  • UID : 계정의 사용자 아이디를 나타내는 자리로, 일반 사용자는 1000부터 시작하며, "/etc/login.defs"파일에서 수정이 가능
  • GID : 계정의 그룹 아이디를 나타내는 자리로, 사용자 아이디와 같이 1000 부터 시작하며, "/etc/login.defs"파일에서 수정이 가능
  • 설명사용자에 대한 설명을 적는 자리로, 기본적으로는 계정은 1인 1개이며, 주로 사용하는 사람의 이름을 작성
  • 홈디렉터리 : 사용자의 홈디렉터리를 적는 자리로, root계정은 /root이며, 일반 사용자는 /home에 저장
  • 셸 종류 : 사용자가 기본으로 사용할 셸을 적는 자리로, 보통 "bin/bash"가 적혀있으며, "chsh"명령어로 변경이 가능
  • /etc/shadow (파일)

 패스워드 정보 등록 파일로, 암호화 되어 있는 파일이며, 최고관리자만 읽을 수 있다. 해당파일은 총 7개의 패스워드 정보를 저장하고 있다.

[계정명]:[패스워드]:[패스워드 변경일]: [최소 변경일] :[최대 유효기간]:[만료 경고일]:[비 활성화기간]:[계정만료일]: 

 

  •  패스워드 : 패스워드를 암호화하여 적은 자리로, "$hash type$salt값$패스워드+salt"로 구성. 만약 패스워드가 재설정 되어 있지 않을경우, !!가 있으며 현 계정은 패스워드가 잠겨있는 상태
    • hash type :  단방향 암호화 기법으로, 데이터를 고정된 길이의 비트열로 변경하는 함수로, 무결성을 증명할 때 사용한다.
    • salt : 원문 데이터에 임의의 무작위 문자열을 붙히는 데이터로, 해시 함수 돌리기 전에 salt데이터를 원본 데이터에 붙힌 뒤에 해시함수를 돌린다.
해시 함수 종류
$1: MD5(128bit)
$2: blowfish
$5: SHA-256
$6: SHA-512
  • 패스워드 변경일 : 패스워드를 변경한 날, 1970.01.01를 기준으로 일 수를 사용
  • 최소 변경일 : 패스워드를 변경할 수 있는 일 수로, "0"은 변경일의 제한이 없으며, "1"은 변경하고 하루 제한을 두고 변경 가능
  • 최대 유효기간 : 패스워드를 사용 할 수 있는 최대 일수
  • 만료 경고일 : 만료일이 되기 전 사용자에게 경고 메시지를 출력할 일수 
  • 비 활성화기간 : 패스워드가 만료되고, 사용자 계정이 잠금 상태로 변경되는 전에 패스워드를 변경해야 하는 기간
  • 계정만료일 : 사용자 계정의 만료일

 

  • /etc/group (파일)

 그룹 정보 등록파일로, 총 4개의 사용자 정보를 저장하고 있다.

[그룹명] : [패스워드 자리] : [GID] : [그룹 사용자 구성]

  • 패스워드 자리: 계정의 패스워드의 정보 유무를 알려주는 자리로, x는 패스워드가 존재한다는 의미, 해당 패스워드는  gshadow에 암호화되어서 저장되어 있다.
  • GID : 계정의 그룹 아이디를 나타내는 자리로, 사용자 아이디와 같이 1000 부터 시작하며, "/etc/login.defs"파일에서 수정이 가능하다.
  • 그룹 사용자 구성 : 그룹에 해당하는 사용자들의 구성을 적는 자리

 

  • /var/spool/mail (디렉토리)

 사용자 계정의 메일을 모아두는 디렉토리로, 사용자를 생성하면 해당 디렉토리에 파일형태로 생성이 되며, 해당 계정에게 오는 메일은 전부 해당 디렉토리에 저장된다.

 

 

  • /home (디렉토리)

 일반 사용자의 홈 디렉토리를 모아두는 디렉토리로, 사용자를 생성하면 해당 디렉토리에 사용자명으로 사용자가 사용할 기능들을 모아두는 디렉토리가 생성한다.

 

 

사용자 생성 참조 파일 / 디렉토리

/etc/login.defs

사용자를 생성할 때, 사용자 정보의 디폴트값을 가지고 있는 파일로, 생성할 때만 사용하며, 수정은 root계정으로 할 수 있다.

 

/etc/skel 

 사용자가 로그인, 로그아웃, 로그인 후 명령을 하기위한 파일이 참조하고 있는 디렉토리로, 전부 숨김파일로 되어있으며, 파일이 손상이 될 경우, 백업 할 때 주로 사용된다.

 

 

사용자 생성/ 삭제 명령어

  • useradd [옵션] [계정명] : 계정명으로 사용자 생성하는 명령어로, UID는 최근에 만들어진 ID에 +1한 값
예시
useradd test1 : test1이라는 일반 유저 계정을 생성

useradd test1 명령어의 결과

  • userdel [옵션] [계정명] : 계정명을 가진 사용자를 삭제하는 명령어로, 옵션이 없을 경우 메일함과 홈디렉터리는 제외하고 삭제
옵션 예시
-r : 디렉토리와 파일도 같이 삭제 (완전삭제) userdel test3 : test3의 메일함과 홈디렉터리 제외 삭제

userdel -r test3 :test3을 완전삭제

 사용자는 함부로 삭제하면 안된다. 삭제할 경우 사용자 소유인 모든 데이터가 삭제되기에 함부로 삭제할 수는 없다. 그래서 복구하는 방법과 계정 비활성화(일시 중지)에 대해서 배워야 한다.
 

 

사용자 암호 관련 명령어

  • passwd [옵션] [계정명] : root 사용자가 패스워드를 설정하는 명령어로, root 버전옵션을 주면서 계정명의 암호를 설정할 수 있으며, 일반 사용자 버전은 자신만 암호를 설정할 수 있으며, 옵션없이 "passwd"명령어만 사용 가능하다. 
옵션 예시
-S: 계정의 비밀번호의 상태 출력

-l : 패스워드 잠금 (계정 일시중지)

-u : 패스워드 해제 (계정 중지 해제)

-f : 강제이행
passwd test1 : test1의 암호 재설정

passwd -S test1 : test1의 계정 암호 상태 확인

passwd -l test1 : test1의 암호를 잠금, 이때 shadow파일에 "!!" 생성

passwd -u test1 : test1의 암호를 잠금해제, 이때 shadow파일에 "!!" 삭제

passwd : 일반사용자로 로그인상태에서 암호 변경하는 명령어
(현재 pw 물어보며 복잡한 암호 요구)

 비밀번호가 잠겨있을때에는 로그인이 되지 않으며, 로그인 정보가 옳바르지 않다고 출력된다.

test1의 암호를 잠금한 후 로그인한 경우

 

 

계정 비활성화

 계정을 오랫동안 사용하지 않는다면, 계정을 비활성화 해줘야 한다. 계정 일시 정지 방법passwd명령어를 통해 암호 잠금상태로 만드는 방법도 있지만, vi 편집기를 통해 passwd의 셸 종류 변경하는 방법도 있다.

/bin/false or /sbin/nologin

 위의 두 파일은 셸을 사용하지 못하게 하는 파일로, 계정에 로그인을 하지 못하게 한다. 이때, 셸 종류를 해당 파일로 변경한 계정은 로그인을 할려고 하면, 로그인 정보가 옳바르지 않다고 출력되는 것이 않고, "exit"명령어를 사용한거 처럼 로그인 창이 다시 나타난다.  

 

 

사용자 정보, 사용자 암호 정보 변경 명령어

 사용자 정보와 사용자 암호정보는 passwd파일과 shadow파일를 vi편집기로 편집 변경할 수 있지만, 명령어를 통해 정보를 변경할 수 있다.

  • usermod [옵션] [변경사항] [사용자] : 사용자 정보를 변경하는 명령어
옵션 예시
-u : UID

-l : 계정명

-g
: GID


-c : 설명

-d : 홈디렉터리

-s : 셸 변경

-G : 그룹 소속 변경(기존의 그룹에서 새로운 그룹으로 변경)
usermod -l test11 test1 : test1의 계정명을 test11로 변경

usermod -u 1010 test1 : test1의 UID를 1010으로 변경

usermod -g 1010 test1 : test1의 GID를 1010으로 변경(이때, GID가 1010인 그룹이 존재해야 함)

usermod -c kim test1 : test1의 설명칸의 설명을 kim으로 변경

usermod -d /home/mdir test1 : test1의 홈디렉터리를 home디렉토리에 있는 mdir로 변경

usermod -s /bin/false test1 : test1의 셸 속성을 /bin/false로 변경

usermod -G test1 test3 : test3를 소속된 그룹에서 삭제하고, test1 그룹으로 소속 변경

usermod -G test1,test2 test3 : test3를 소속된 그룹에서 삭제하고,  test1그룹과 test2그룹으로 소속 변경

위의 명령어 후 passwd의 내용중 일부

 

  • chage [옵션] [변경사항] [사용자] : 사용자 암호 정보를 변경하는 명령어
옵션 예시
-m : 최소변경일

-M : 최대 유효기간

-W : 만료 경고일

-I : 비활성화 기간

-E : 계정 만료일 

-l : 패스워드 정보 확인
chage -l test1 : test1의 암호 정보를 출력

chage -m 10 test1
: test1의 암호 변경 가능 날 수를 10일로 변경

chage -M 100 test1
: test1의 암호를 바꿔야 하는 최대 날 수를 100일로 변경

chage -W 50 test1 : test1의 만료 경고일을 오늘을 기준으로 50일로 변경

chage -I 90 test1
: test1의 비활성화 기간을 오늘을 기준으로 90일뒤로 변경

chage -E 2023-12-31 test1
: test1의 계정 만료일을 23.12.31로 변경 

예시를 명령 후 암호 정보를 출력

 

 

그룹 생성/삭제 명령어

  • groupadd [그룹명] : 그룹명으로 그룹생성하는 명령어로, 이때 생성되는 그룹은 일반 그룹이다.

  • groupdel [그룹명] :  그룹명을 가진 그룹을 삭제하는 명령어로, 일반그룹은 명령어로 삭제가 되지만 디폴트그룹(사용자 생성과 함께 생성된 그룹)은 삭지가 되지 않음

 

 

그룹 관련 명령어/옵션

  • gpasswd [옵션] [변경사항] [그룹] : 그룹의 정보를 수정하는 명령어
옵션 예시
-r : 암호 삭제

-a : 그룹에 사용자 추가

-d : 그룹에 사용자 삭제
gpasswd kr1 : 그룹 kr1의 암호 변경

gpasswd -r kr1 : 그룹 kr1의 암호 삭제

gpasswd -a test1 test3 : test1그룹에 test3사용자를 추가 (기존 소속 유지)

gpasswd -d test1 test3 : test1그룹에 test3사용자를 삭제

 

gpasswd -a test1 test3 명령 후 group파일 출력결과

 

'운영체제 > Linux - CentOs' 카테고리의 다른 글

서버의 이해와 원격 접속 시스템(Telnet,SSH)  (0) 2023.03.19
소유권과 허가권  (0) 2023.03.13
네트워크와 프로세스  (0) 2023.03.06
디스크, 파티션 관리  (1) 2023.03.05
데이터 관리 기본 명령어  (1) 2023.02.27
Comments