사용자와 그룹 관리

Violet_Evgadn·2023년 4월 26일
0

Linux

목록 보기
15/34

사용자 관리

Linux Account 유형

  • Root Account
    • Super User로써 관리자 계정 역할을 담당
  • System Account
    • 시스템 운용에 필요한 Account
    • System의 특정 기능을 수행할 수 있음
  • User Account
    • 일반적인 서버 사용 User
    • Critical System 파일 및 디렉터리에 Access가 제한되어 있음

사용자 추가

1. Uesr ID 추가

useradd [Option] [Username]
Option
  • -d [Path] : 계정의 Home Directory
  • -c "[Name]" : 계정의 사용자 이름
  • -s [Shell] : Login 할 떄 사용할 Shell 정보 입력
    • 대부분 /bin/bash를 사용함(Linux에서 기본적으로 사용하는 Shell)
  • -g [GID] : GID에 해당하는 Group에 속하도록 함
  • -u [UID] : 사용자 UID를 직접 지정함
  • -e : 계정 만기일을 지정함

2. Password 설정

1번에서 추가한 계정에 대한 Password를 설정해줘야 한다.

만약 설정하지 않을 경우 해당 Username으로 로그인할 수 없게 된다.

passwd [Username]

사용자 수정

usermod [Option] [Username]

Option

  • -d [Path] : 계정의 Home Directory 변경
  • -m : Home Directory 변경 시 기존 Home Directory에 있는 파일들을 옮김
  • -g : 사용자 Group 변경
  • -s : Login 할 떄 사용할 Shell 변경
  • -u : User의 UID 변경
  • -e : 계정 만기일 변경
  • -I : 사용자 ID(Username) 변경
  • -L : 패스워드 Lock(로그인 불가)
  • -U : 패스워드 Lock 해제

사용자 삭제

userdel [Option] [Username]

Option

  • -r : 계정 및 계정의 Home Directory 삭제

사용자 정보 확인

id [Option] [User]
# User를 입력하지 않을 경우 현재 로그인한 계정의 User 정보를 출력

Option

  • -G : User가 속해 있는 모든 Group ID(GID) 출력
  • -n : UID 대신 User Name을 출력
  • -u : Effective User ID만 출력
  • -r : Effective ID 대신 Real ID 출력
    • -n, -r은 무조건 g, G, u 옵션 중 1개와 같이 사용되어야 함

여기에 "Effective ID"와 "Real ID"라는 새로운 개념이 나타난다.

Real User는 프로세스를 실행했을 경우 명령어를 실행시킨 User이고 Effective User는 프로세스가 실행되면서 Access 할 파일 등에 대한 권한을 가지는 user이다.

대부분의 경우 Real User와 Effective User가 같으며 만약 둘이 다를 경우 꽤 복잡한 조건이 필요하다.

먼저 A라는 파일이 777(rwxrwxrwx) 권한을 가지고 있고 A 파일을 실행시킬 경우 770(rwxrwx---) 권한을 가지는 B 파일이 수정된다고 가정하자.

만약 Other에 속하는 사람이 A 파일을 실행시켰다고 가정하자. 이 때 A 파일 자체는 Other도 실행시킬 수 있으므로 실행은 되겠지만 B 파일에 대해서는 어떤 작업도 수행하지 못하므로 권한 문제가 발생할 것이다.

이때 Program에 "chmod u+s A"를 통해 실행 권한을 "rwsrwxrwx"로 만들 수 있다.

이 경우 A 파일을 실행하는 Real User는 Other에 속하는 사람이지만 Effective User는 파일의 Owner로 간주되어 프로세스 전체를 실행할 수 있는 것이다.

(물론, Other에 속하는 사람은 여전히 A 파일을 제외하면 B 파일에는 접근 불가하다)

존재하는 모든 사용자 확인

users

Group 관리

Group이란?

Linux에는 User 이외에도 Group이라는 개념이 있다.

회사에서 부서 사람들만 볼 수 있는 파일을 만들 듯 Multi-User OS인 Linux에서도 특정 User들에게 파일을 공유하고 싶을 수 있는데 이때 특정 User들을 Group으로 묶어 Group 내 사람들은 파일에 접근할 수 있게 만드는 것이다.

Group은 따로 설정하지 않을 경우 기본적으로 User를 생성할 때 Username과 동일한 이름으로 같이 생성된다.

Group 추가

groupadd [Options] [GroupName]

Options

  • -g [숫자] : Group 고유 값인 GID를 입력 숫자값으로 설정함
  • -r : System Account를 위한 Group을 생성하는 것으로써 500번 이하의 가장 빠른 GID를 생성함

Group Password 변경(거의 일어나지 않는 상황)

gpasswd [Option] [GroupName]

Options

  • -r : Group에 Password 삭제

Group 변경

groupmod [Option] [GroupName]

Options

  • -g [숫자] : Group 고유 값인 GID를 입력 숫자값으로 변경함
  • -n [New GroupName] : 새로운 Group Name으로 변경

Group 삭제

groupdel [Option] [GroupName]

Options

  • -f : 강제로 Group을 삭제

존재하는 모든 Group 확인

groups

User & Group 정보 직접 수정

User들에 대한 정보는 /etc/passwd, 암호(Password)에 관한 정보는 /etc/shadow, Group에 관한 정보는 /etc/group에 저장되어 있다.

이 파일들에 접근하여 직접 User와 Group들에 대한 설정을 수정해줄 수도 있다.

/etc/passwd & /etc/group은 모두 Root 계정이 소유하고 있는 파일들이며 644(rw-r--r--)의 권한을 가지고 있으므로 Root 계정만 파일을 수정할 수 있다.

/etc/shadow는 한 층 더 중요한 정보로써 640(rw-r-----)의 권한을 가지고 있어 Root 계정이 아닌 계정은 파일을 읽을 수 조차 없다.

/etc/passwd 형식

Username:Password:UID:GID:Comment:Home Directory:Login Shell

/etc/shadow형식

Username:$alogorithm_id$salt$암호화된 패스워드:마지막 Password 변경일:Password 최소 사용기간:Password 최대 사용기간:경고:비활성화:만료일
  • algorithm_id : 암호화시킨 Hash ID
    • 1 : MD5
    • 2 : BlowFish
    • 5 : SHA-256
    • 6 : SHA-512
  • salt : 각 Hash에 첨가할 랜덤 값으로써 이 값과 Hash Function에 의해 암호화가 수행된다.
  • 마지막 변경일 : 1970년 1월 1일 기준으로 일수로 표시함
  • 패스워드 최소 사용 기간 : 패스워드를 변경한 후 최소 이 값의 일수가 지난 후 암호 변경이 가능함
  • 패스워드 최대 사용 기간 : 마지막 패스워드 변경 이후 패스워드가 만료되는 일수
  • 경고 : 패스워드 만료일에 이 값 전부터 패스워드 만료에 대한 경고문을 보냄
  • 비활성화 : 패스워드 만료된 이후 계정이 잠기기 전까지 일수(Date). 만약 만료 후 이 값 동안 패스워드를 변경하지 않을 경우 계정이 잠김
  • 만료일 : 계정 만료일. 1970년 1월 1일 기준으로 일수로 표시함

/etc/group 형식

Group Name:Password:GID:그룹에 속한 사용자 이름들

위 3개 파일들을 형식에 맞게 수정하여 User 및 Group에 대한 설정값을 직접 변경할 수 있다.


이후에 배울 Linux는 네트워크에 관련된 설정들이다.

필자는 Linux 네트워크 기능 활용법을 알아보기 전에 (면접 준비도 겸해서) 네트워크 공부를 먼저 하는게 좋다고 생각하여 한동안 네트워크 관련 공부를 하기로 결정했다.

profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글