1. 명령행 인터페이스(2) - 사용자, 그룹 관리하기

프라이마리모·2025년 11월 8일
post-thumbnail

자주 쓰이는 사용자 계정 관리 명령

명령어설명
whoami로그인 한 사용자 계정 표시
who사용자의 접속 정보 표시
w현재 접속한 사용자 정보와 시스템 정보를 함께 표시
sudo시스템 관리 권한 획득
useradd, userdel사용자 계정 추가 및 삭제
passwd로그인 비밀번호 변경
usermod사용자 계정 정보 수정
groups사용자가 속해있는 그룹 조회
groupadd, groupdel그룹을 생성 및 삭제
gpasswd그룹 정보 수정

whoami, who, w : 로그인한 사용자 정보 조회하기

  • whoami : 현재 로그인 한 사용자 계정 조회

  • who : 로그인한 사용자 계정, 접속한 터미널 정보, 로그인 시각, 접속한 IP 주소를 차례로 보여준다. 접속자가 여럿이면 각각의 접속정보가 표시된다.

    • :0 : 그래픽 환경에서 생성된 첫번째 터미널임을 의미한다.
    • tty : 기본 터미널 장치. 우분투 서버에 직접 접속하는 콘솔 환경인 경우 tty1로 표시된다.
    • pts : 의사 터미널 장치. ssh를 이용해 원격 접속하면 터미널 정보가 pts/0으로 표시된다,
  • w : 현재 접속해 있는 사용자 정보와 함께 시스템 정보를 화면에 출력한다.
    시스템 시간 정보, 부팅 이후 경과한 시간, 접속한 사용자 수, 시스템의 평균 부하율이 차례로 표시된다. uptime 명령 결과와 동일하다.

    • USER : 접속한 사용자 계정
    • TTY : 터미널
    • FROM : IP주소
    • IDLE JCPU PCPU : 사용자가 사용하고 있는 CPU 점유율 정보
    • WHAT : 접속자가 현재 사용하고 있는 명령

sudo : 루트 권한 획득하기

리눅스는 여러 사용자가 동시에 사용 가능한 다중 사용자 운영체제이다. 사용자는 권한에 따라 시스템 자원에 대한 접근, 사용여부가 결정된다.

일반적으로 리눅스는 사용자 실수로 시스템에 돌이킬 수 없는 문제가 발생하는 사고를 방지하고자 루트 사용자의 로그인을 제한한다. 시스템 관리자도 일반 사용자 계정으로 로그인해야하며, 루트 권한이 필요할 때 루트 권한을 획득하는 과정을 거친다.

루트 권한이 없어 허가 거부 오류 메시지가 보이는 경우

루트 권한 부여 후 명령 처리

  • apt update : 패키지 저장소에서 새로운 패키지 목록을 가져오는 명령. 실행 시 루트 권한이 필요하다.
  • sudo 로 획득한 루트 권한은 일정 기간 유지되므로 명령을 실행할 때마다 매번 패스워드를 입력할 필요는 없다.

useradd : 사용자 계정 추가하기

useradd [옵션] [사용자 계정] 형식으로 입력한다.

  • 옵션 -m(--create-home)을 사용하면 사용자 계정을 추가함과 동시에 홈 디렉터리를 함께 생성한다.
  • ls 명령으로 새로 생성된 홈 디렉터리를 확인할 수 있다.

passwd : 사용자 계정의 패스워드를 변경한다.

  • 다른 사용자의 패스워드를 변경하려면 루트 권한이 필요하므로 sudo를 함께 쓴다.
  • 새로 설정할 패스워드를 입력 후 확인을 위해 재입력한다.
  • 현재 로그인 해 있는 사용자 계정의 패스워드를 변경할 때는 sudo 없이 passwd만 입력해도 된다.

cat etc/passwd 로 사용자 계정 목록을 확인할 수 있다.

  • cat : 파일 내용을 화면에 표시한다.
  • 파일의 각 행은 사용자 계정 정보를 의미한다.
    콜론(:)으로 구분해둔 필드는 왼쪽부터 [사용자계정]:[패스워드]:[UID]:[GID]:[추가정보]:[홈디렉터리]:[로그인셸] 을 의미한다.
    • 사용자 계정 : 시스템 운영을 위해 자동으로 생성된 사용자 계정이 대부분이며, 설치 과정에서 등록한 사용자, useradd로 추가한 사용자 계정을 확인할 수 있다.
    • 패스워드 : 아주 오래된 리눅스 시스템은 사용자 패스워드를 passwd 파일에 평문으로 저장했지만, 지금은 모든 패스워드를 x로 표시한다. 누구도 알아보지 못하도록 암호화하여 저장된다.
    • UID : 사용자 계정을 식별하는 고유번호(User ID)이다.
    • GID : 사용자가 속해있는 그룹 식별번호(Group ID)이다.
      UID와 GID가 동일한 이유는 일반적으로 사용자 계정이 만들어지면 계정 이름과 동일한 그룹이 자동 생성되기 때문이다.
    • 추가정보 : 설치 과정에서 사용자 실제 이름을 입력했다면 추가 정보로 저장된다. adduser 명령에서 입력하는 정보들이 여기에 저장된다.
    • 홈 디렉터리 : 로그인 후 사용하는 기본 작업 디렉터리 경로이다.
    • 로그인 셸 : 로그인 후 사용할 기본 셸을 지정한다.

adduser : useradd 와 passwd를 한번에 사용한다.

  • adduser의 인자로 추가할 사용자 계정을 넘겨 실행한다
  • 패스워드를 설정한다.
  • 사용자 추가 정보를 입력한다. 여기서는 사용자 이름만 입력했다.
  • 입력이 끝나면 Y를 눌러 사용자를 등록한다.

사용자 등록 후 cat /etc/passwd로 파일을 조회하면 새로 등록한 사용자 정보를 확인할 수 있다.

userdel [옵션] [사용자 계정] : 사용자 계정 삭제

  • -r(--remove) : 사용자 홈 디렉터리까지 함께 제거한다.

  • -r 옵션을 사용하지 않은 경우 계정 삭제 후에도 홈 디렉터리가 남아있다. 이 때 rm -rf로 디렉터리를 삭제할 수 있다.


사용자 계정 전환하기

sudo를 실행할 수 있는 권한은 sudo 설정 파일인 /etc/sudoers에서 지정한다.


사용자 계정 root, 그룹 admin(%admin), 그룹 sudo(%sudo)에 속하는 사용자는 모든 명령에 대해 sudo로 루트 권한을 얻을 수 있다.

su [옵션] [사용자 계정] : 사용자 계정 전환

  • whoami로는 su명령으로 전환한 사용자 계정이 표시된다.
  • who로는 로그인한 사용자 계정 정보를 보여준다.
  • su 명령을 자주 사용할 때 처음 로그인한 사용자 계정을 확인하기위해 who가 쓰인다.

groups : 사용자가 속한 그룹 조회


계정을 생성할 때 자동으로 같은 이름의 사용자 그룹이 생성된다.

새로 추가한 사용자와 달리 우분투를 설치하면서 등록한 사용자는 다양한 시스템 그룹에 속해있다. sudoers에서 살펴보았듯이 sudo 그룹에 속한 사용자는 sudo 명령을 사용할 수 있다.

루트 권한이 없는 사용자는 sudo를 사용할 수 없다.

exit : su 명령 전 원래 사용자 계정으로 복귀

usermod [옵션] [사용자 계정] : 사용자 계정 정보 변경

루트 권한을 가진 시스템 관리자는 sudo 로 다른 사용자 계정 정보를 변경할 수 있다.
다음 명령은 사용자 계정을 sudo 그룹에 포함시킨다.

  • -a(--append) : 변경 대신 정보를 추가하는 옵션
    -a 없이 명령을 실행하면 사용자 계정의 정보는 '추가'가 아니라 '변경' 되어버린다. 즉, 기존 정보가 모두 삭제되므로 주의해야 한다.
  • -G(--groups) : 사용자 계정의 그룹을 대상으로 한다.

아까 tester 계정은 사용자 권한이 없어 sudo 명령을 실행할 수 없었다.
sudo 그룹에 추가된 후 sudo 명령을 실행할 수 있음을 확인할 수 있다.

새로운 사용자 계정 추가 시 -G 옵션을 사용하여 바로 그룹을 지정할 수도 있다.

sudo useradd -m -G sudo testuser

위 명령어는 새로 testuser라는 계정을 생성할 때 바로 sudo 그룹에 포함시킨다.

sudo 그룹 권한을 해지할 수도 있다.

  • -G 옵션으로 사용자 그룹 정보를 재지정한다.
  • 해당 사용자 계정으로 로그인(su)하여 그룹 정보를 확인해보면 sudo 그룹 권한이 사라져있음을 확인할 수 있다.
  • 단순히 그룹 사용자를 삭제하려면 그룹 관리 명령인 gpasswd를 사용하는 것이 더 편리하다.

그룹 관리하기

groupadd [옵션] [그룹] : 새로운 그룹 생성

  • -a(--add) : 그룹에 사용자 추가 (단건)
sudo gpasswd -a [사용자 계정] [그룹]

  • -M(--members) : 그룹에 사용자 추가 (다건)
sudo gpasswd -M [사용자 계정],[사용자 계정],[사용자 계정] [그룹]

  • groups [사용자 계정] : 해당 사용자가 속해있는 그룹을 화면에 표시한다.

  • /etc/grouop에서 그룹 정보를 조회할 수 있다.
    각 필드는 [그룹]:[패스워드]:[GID]:[사용자 목록] 을 의미한다.

  • -d(--delete) : 그룹에서 사용자 삭제

sudo gpasswd -d [사용자 계정] [그룹]


groups로 삭제됨을 확인할 수 있다.

  • groupdel : 그룹을 삭제


    /etc/group 파일에서 salesA 그룹이 삭제됨을 확인할 수 있다.
profile
개발공부 요약노트

0개의 댓글