CS

[Linux] 사용자와 그룹

kyoulho 2024. 9. 18. 19:30

사용자(User)란?

사용자(user)는 리눅스 시스템에서 자원을 사용할 수 있는 개별적인 계정을 의미한다. 각 사용자는 고유한 사용자 이름과 사용자 ID(uid)를 가지며, 시스템 내에서 특정 권한과 접근 권한을 부여받는다.

리눅스는 다중 사용자 시스템이며 root라는 이름을 가진 슈퍼유저가 있다.

그룹(Group)이란?

그룹(group)은 여러 사용자를 하나로 묶어 공통된 권한을 부여하기 위한 단위이다. 각 그룹은 고유한 그룹 이름과 그룹 ID(gid)를 가지며, 그룹에 속한 모든 사용자는 동일한 그룹 권한을 공유하게 된다.

사용자와 그룹의 관계

리눅스 시스템에서는 사용자가 하나 이상의 그룹에 속할 수 있으며, 이를 통해 파일과 디렉토리에 대한 접근 권한을 세밀하게 관리할 수 있다. 기본적으로 각 사용자는 하나의 기본 그룹(primary group)을 가지며, 추가적인 보조 그룹(secondary group)에 속할 수 있다.

 

사용자 및 그룹 관리 명령어

리눅스에서는 다양한 명령어를 통해 사용자를 추가, 삭제, 수정하고 그룹을 관리할 수 있다.

명령어 설명 예시
useradd 새로운 사용자를 시스템에 추가한다. useradd newuser
-u: ID 지정
-g: 그룹 지정
-d: 홈 디렉터리 지정
-s: 셸 지정
userdel 기존 사용자를 시스템에서 삭제한다. userdell newuser
usermod 기존 사용자의 정보를 수정한다. usermod -g root newuser
passwd 사용자의 비밀번호를 설정하거나 변경한다. passwd newuser
groupadd 새로운 그룹을 시스템에 추가한다. groupadd newgroup
groupdel 기존 그룹을 시스템에서 삭제한다. groupdell newgroup
groupmod 기존 그룹의 정보를 수정한다. groupmod -n newgroup mygroup
gpasswd 그룹의 암호를 설정한다. gpasswd newgroup
id 특정 사용자의 UID, GID, 그룹 정보를 확인한다. id
groups 특정 사용자가 속한 그룹 목록을 확인한다. gourps
newgrp 현재 세션에서 기본 그룹을 변경한다. newgrp sudo
change 사용자의 암호를 주기적으로 변경하도록 설저한다. change -m 2 newuser

사용자 추가: useradd

새로운 사용자를 시스템에 추가할 때 사용한다.

$ sudo useradd -g thesun -s /bin/bash john
  • -g: thesun 이라는 그룹의 소속된다.
  • -s /bin/bash: 기본 쉘을 /bin/bash로 설정한다.
  • john: 추가할 사용자의 이름이다.

사용자 삭제: userdel

기존 사용자를 시스템에서 삭제할 때 사용한다.

$ sudo userdel -r john
  • -r: 사용자의 홈 디렉토리와 메일 스풀도 함께 삭제한다.
  • john: 삭제할 사용자의 이름이다.

사용자 수정: usermod

기존 사용자의 정보를 수정할 때 사용한다.

$ sudo usermod -aG sudo john
  • -aG sudo: 사용자를 sudo 그룹에 추가한다.
  • john: 수정할 사용자의 이름이다.

비밀번호 설정/변경: passwd

사용자의 비밀번호를 설정하거나 변경할 때 사용한다.

$ sudo passwd john
  • john: 비밀번호를 설정할 사용자의 이름이다.

그룹 추가: groupadd

새로운 그룹을 시스템에 추가할 때 사용한다.

$ sudo groupadd developers
  • developers: 추가할 그룹의 이름이다.

그룹 삭제: groupdel

기존 그룹을 시스템에서 삭제할 때 사용한다.

$ sudo groupdel developers
  • developers: 삭제할 그룹의 이름이다.

그룹 수정: groupmod

기존 그룹의 정보를 수정할 때 사용한다.

$ sudo groupmod -n devs developers
  • -n devs: 그룹의 이름을 devs로 변경한다.
  • developers: 수정할 기존 그룹의 이름이다.

사용자 및 그룹 정보 확인: id

특정 사용자의 UID, GID, 그룹 정보를 확인할 때 사용한다.

$ id john
uid=1001(john) gid=1001(john) groups=1001(john),27(sudo)

사용자 소속 그룹 확인: groups

특정 사용자가 속한 그룹 목록을 확인할 때 사용한다.

$ groups john
john : john sudo

현재 세션의 그룹 변경: newgrp

현재 세션에서 기본 그룹을 변경할 때 사용한다.

$ newgrp sudo
  • sudo: 현재 세션의 기본 그룹을 sudo로 변경한다.


/etc/passwd
파일

리눅스 시스템에서 사용자 계정 정보는 /etc/passwd 파일에 저장된다. 이 파일은 각 사용자에 대한 기본 정보를 담고 있으며, 시스템의 중요한 구성 요소 중 하나이다./etc/passwd 파일은 콜론(:)으로 구분된 여러 필드로 구성된 텍스트 파일이며 각 라인은 하나의 사용자 계정을 나타낸다. 기본적인 구조는 다음과 같다.

사용자이름:암호:UID:GID:GECOS:홈 디렉토리:쉘
필드 설명
사용자이름 사용자의 로그인 이름
암호 사용자의 암호 (일반적으로 x로 표시되며 실제 암호는 /etc/shadow에 저장됨)
UID 사용자 ID (고유 숫자)
GID 기본 그룹 ID
GECOS 사용자 정보 (이름, 전화번호 등)
홈 디렉토리 사용자의 홈 디렉토리 경로
사용자의 기본 쉘 (예: /bin/bash)

예시

john:x:1001:1001:John Doe:/home/john:/bin/bash
  • john: 사용자 이름
  • x: 암호는 /etc/shadow 파일에 저장됨
  • 1001: UID
  • 1001: GID
  • John Doe: 사용자 정보
  • /home/john: 홈 디렉토리
  • /bin/bash: 기본 쉘

 

/etc/group 파일

사용자 그룹 정보는 /etc/group 파일에 저장된다. 이 파일은 각 그룹에 대한 정보를 담고 있으며, 사용자가 속한 그룹을 관리하는 데 사용된다. /etc/group 파일도 콜론(:)으로 구분된 여러 필드로 구성된 텍스트 파일이다. 각 라인은 하나의 그룹을 나타낸다. 기본적인 구조는 다음과 같다.

그룹이름:암호:GID:사용자목록

예시

developers:x:1002:alice,john
admins:x:1003:alice
  • developers: 그룹 이름
  • x: 그룹 암호 (비워둠)
  • 1002: GID
  • alice,john: 그룹에 속한 사용자들

 

/etc/skel 파일

/etc/skel은 새로운 사용자가 생성될 때 그 사용자의 홈 디렉토리에 기본으로 복사되는 파일과 디렉토리를 포함하는 디렉토리이다. 이 디렉토리는 기본 설정 파일들(예: .bashrc, .profile)을 포함하여 사용자가 처음 로그인할 때 필요한 초기 환경을 제공한다.

  • 기본 설정 제공: 새로운 사용자의 홈 디렉토리에 기본 설정 파일을 자동으로 배치하여 일관된 환경을 유지한다.
  • 템플릿 역할: 시스템 관리자가 /etc/skel 디렉토리를 수정하여 모든 새로운 사용자에게 동일한 초기 설정을 제공할 수 있다.

 

 

참고 자료:

'CS' 카테고리의 다른 글

[Linux] 마운트  (0) 2024.09.18
[Linux] vi 에디터  (1) 2024.09.18
[Linux] 런레벨  (0) 2024.09.18
[Linux] 가상 콘솔  (0) 2024.09.18
[Linux] 개요  (1) 2024.09.15