본문 바로가기

Operating System/Linux

[Ubuntu] 리눅스 계정 종류, Root 계정 및 시스템 계정 관리

728x90
리눅스 계정 종류
  • 루트 계정 : 모든 권한을 가진 관리자 계정
  • 시스템 계정 : 리눅스 설치 시 기본으로 생성되는 계정
  • 사용자 계정 : 실제 리눅스 사용자를 위한 계정
  • 리눅스에서는 사용자를 관리자(root)와 일반 사용자로 구분
  • 각각의 계정은 번호로 부여하는 UID(User Identity)로 관리
  • UID가 0번인 사용자는 슈퍼 유저로 인식하여 관리자 권한을 갖지만 완벽한 root 계정이 되는 것은 아님
  • 일반 사용자 계정의 UID 범위 /etc/login.defs 파일에서 UID_MIN과 UID_MAX 값을 정의하여 일반 사용자 계정의 UID 범위를 설정
  • 시스템 계정의 UID 범위 /etc/passwd 파일의 기본 설정에 따라 달라질 수 있음
root (Super User) 계정
  • UID 값이 0으로 지정된 관리자 계정
  • 다른 계정을 생성하거나 권한을 부여하고 비밀번호 변경 가능
  • 즉, 모든 권한을 가진 계정이며 다른 계정의 UID값을 0으로 변경하면 관리자와 마찬가지로 모든 권한을 가짐
일반 사용자 (Normal user) 계정
  • 관리자에게 권한을 부여 받아 사용
  • 리눅스에서 파일 생성 시 생성자의 권한을 가지는데, 만약 일반 유저일 경우 root 권한을 가진 파일을 실행하거나 볼 수 없음
    • 따라서 root가 파일의 권한을 부여해야만 일반 사용자가 해당 파일을 열어볼 수 있음
시스템 계정
  • root와 일반 사용자를 제외한 계정이며, 사용자가 직접 생성한 계정이 아닌 시스템 서비스나 데몬(daemon)을 위해 존재
  • 필요에 의해 자동으로 생성되는 시스템계정은 bin, daemon, adm, lp,sync, shutdown, halt, mail 등 여러가지가 있으며 일부 시스템 계정은 특정 서비스를 실행하는 데 필요하며, 보안상 일반 사용자가 로그인 불가


계정 확인
# 현재 사용자의 UID, GID, 그룹정보를 확인하는 명령어
$ id

UID(User ID) : 사용자 식별 번호
  • /etc/passwd에서 확인 가능
  • 슈퍼 유저의 UID : 0 (root 계정)
  • 시스템을 제어하는 계정의 UID : 100 ~ 999 ( 로그인 불가, 서비스 및 데몬 계정 )
    • 과거 배포판(RHEL 5, CentOS 5) : 1 ~499
    • Ubuntu의 경우 1~99는 예약되어 있어 사용되지 않는 것이 일반적
  • 일반 계정의 UID : 1000 ~ 60000
    • 과거 배포판(RHEL 5, CentOS 5) : 500 ~ 60000
grep -E 'UID_MIN|UID_MAX' /etc/login.defs

GID(Group ID) : 그룹 식별 번호
  • 슈퍼 유저의 GID : 0
  • /etc/passwd와 /etc/group에서 확인 가능
  • 리눅스는 그룹을 통해 사용자를 묶을 수 있음
현재 호스트에 로그인되어 있는 모든 사용자 출력
users

모든 사용자 정보 자세히 출력 (터미널 종류, 로그인 시각 등 기본적으로 출력)
who [options]

현재 로그인한 사용자의 사용자명 출력
whoami
id -un
logname

현재 로그인한 사용자가 어떤시스템에서 로그인했는지 어떤 프로세스를 실행하고있는지 출력
  • -h(--no-header) : 컬럼의 헤더를 출력하지 않음
  • -s(--short) : 정보를 간략히 출력
w [option] [user]

  • w -s 명령어 입력 시 세그먼테이션 오류(코어 덤프됨) 이라는 메세지와 함께 오류창이 나올 경우 w 명령어는 procps 패키지에 포함되어 있는데 해당 패키지가 손상되었을 수 있음
  • 그럴 경우 아래의 명령어를 통해 재설치
sudo apt update
sudo apt reinstall procps
프로세스를 종료하지 않고 계정만 로그아웃하여 이전에 사용중인 계정으로 돌아가는 명령어
logout
exit


루트 계정 관리
root 암호 설정
  • 8자리보다 짧을 경우 경고 문구가 나오긴 하지만 문제 없음
  • sudo(superuser do) : 현재 계정에서 root권한을 이용하여 명령어를 실행할 때 사용하는 명령어
sudo passwd root

root 로그인
# 로그아웃을 하지 않고 다른 사용자의 계정으로 전환 (계정명 미입력이면 root로 로그인)
# su뜻 : switch user
$ su [계정명]

root 계정 관리 방안
  • 시스템 초기 환경 설정 시에만 root 계정을 사용하고, 이후 SSH를 통한 root 로그인은 금지
    • SSH에서는 아예 root 계정을 사용할 수 없는 것으로 착각하였는데 그것이 아니였음
    • 'ssh -p 포트번호 root@아이피'로 root에 접근하는 것을 막는 것이고, 일반 사용자로 로그인하여 'su root'로 변경하는 것은 막는 것이 아님 → PAM 설정에서 가능
    • 'PermitRootLogin prohibit-password'root 계정으로 비밀번호를 이용한 SSH 접속은 불가능하지만, 공개 키 인증(SSH key authentication)으로는 접속 가능하게 설정
# root 권한으로 ssh 설정 파일 열기
sudo vi /etc/ssh/sshd_config

# 다음 두 가지 설정 변경
PermitRootLogin no
UsePAM yes
# wq로 vi 편집기 저장 후 나가기

# SSH 서비스 재시작
sudo systemctl restart sshd

 


  • root 계정은 유일해야 하며 UID가 0인 다른 계정이 없는지 정기적으로 확인
awk -F: '$3 == 0 {print $1}' /etc/passwd


  • PAM을 통해 root 계정 로그인 제한
# /etc/pam.d/su 파일을 수정하여 root 계정 로그인 제한
sudo vi /etc/pam.d/su

# wheel 그룹에 속하지 않은 사용자는 su -를 사용하여 root로 전환할 수 없음
auth required pam_wheel.so use_uid

# wheel 그룹 생성
sudo groupadd wheel

# sudo 권한을 부여할 사용자를 wheel 그룹에 추가
sudo usermod -aG wheel 계정명


  • 환경 변수 TMOUT을 설정하여 일정 시간 입력이 없으면 자동 로그아웃
# 관리자 계정일 경우
echo "export TMOUT=600" >> /etc/profile
# 일반 사용자 계정일 경우
sudo sh -c "echo 'export TMOUT=600' >> /etc/profile"

# TMOUT은 자동 로그아웃 시간을 설정하는 환경 변수
# 600은 600초 (10분) 동안 아무런 활동이 없으면 자동으로 로그아웃되는 시간
# >>는 파일에 내용을 추가하는 연산자로, 기존 파일 내용을 덮어쓰지 않고 끝에 추가
# export TMOUT=600은 쉘에서 사용자가 아무런 명령을 입력하지 않으면 10분 후에 자동 로그아웃하도록 설정

# /etc/profile 파일에 설정된 환경 변수나 설정을 즉시 적용하기 위해 사용
# source 명령은 지정된 파일을 현재 셸 환경에서 실행하여 즉시 변경 사항을 적용
source /etc/profile

  • root 계정 사용을 지양하고, 필요 시 sudo 명령어 사용을 권장

시스템 계정 관리
  • 일반 사용자가 로그인 할 수 없으며 특정 서비스나 데몬을 실행하기 위한 계정
  • bin, daemon, mail 등은 로그인 없이 시스템에서만 사용되는 계정
  • 시스템 계정의 UID 100 ~ 999 /etc/login.defs 파일에서 확인하고 수정 가능
시스템 계정 추가 명령어
  • useradd 명령어에서 -r(--system) 옵션을 사용하여 시스템 사용자 계정 추가 가능
  • 시스템 사용자는 만료 날짜 없이 생성되며 일반 계정과 별도의 UID 범위( 100 ~ 999 )
sudo useradd -r 계정명


참고 자료

https://inpa.tistory.com/entry/LINUX-%F0%9F%93%9A-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B3%84%EC%A0%95-%EA%B4%80%EB%A6%AC-%EB%AA%85%EB%A0%B9%EC%96%B4-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC#%EB%A3%A8%ED%8A%B8_%EA%B3%84%EC%A0%95_%EA%B4%80%EB%A6%AC

 

🐧 리눅스 사용자/그룹 계정 관리 명령어 💯 총정리

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

inpa.tistory.com

 

728x90

'Operating System > Linux' 카테고리의 다른 글

[Ubuntu] 그룹 계정 관리  (0) 2025.02.20
[Ubuntu] 사용자 계정 관리  (0) 2025.02.20
[Ubuntu] vi, nano, gedit 편집기  (0) 2025.02.19
[Ubuntu] Linux vi 편집기  (0) 2025.02.06
[Ubuntu] Linux 기본 명령어  (0) 2025.02.06