개인/리눅스

[리눅스] 사용자계정 명령어와 파일

OmeGa2 2020. 1. 13. 17:56

리눅스에서 사용자를 구분하는 방법은

리눅스에서는 사용자를 root(관리자)일반사용자로 구분한다. 각각 계정은 흔히 사용하는 ID가 아니라 번호로 부여하는 UID(User Identity)로 관리한다. UID가 0번인 사용자는 슈퍼유저로 인식해서 관리자계정이 된다.

 

root (Super User)계정UID값이 0으로 지정된 관리자계정이다. 여기서는 다른 계정을 생성하거나 권한을 부여하고 비밀번호를 바꿀 수 있다. 즉 모든 권한을 가진 계정이다. 만약 다른계정에 UID값을 0으로 변경한다면 관리자와 마찬가지로 모든 권한을 가질 수 있다. 

 

Normal user라고 불리는 일반사용자는 관리자에게 권한을 부여받아 사용한다. 리눅스에서 파일을 생성 시 소유주의 권한을 가지는데 만약 일반유저라면 root 권한을 가진 파일을 실행하거나 볼 수 없다. 따라서 root가 파일의 권한을 부여해야만 일반관리자가 해당 파일을 열어볼 수 있다.

 

root와 일반사용자를 제외한 계정으로는 시스템계정이 있다. 필요에 의해 자동으로 생성되는 시스템계정은 bin, adm 등 여러가지가 있으며 일반적으로 로그인은 불가능하다. 보통 특정 프로그램에 관리자권한을 부여한다면 여러가지 오류 등 문제점이 생길 수 있기 때문에 프로그램에 관련된 권한만 모두 가진 시스템 계정을 생성해서 관리하면서 문제점을 줄일 수 있다.

 

 

 

로그인 메시지 관련 파일

리눅스는 다수의 사용자가 사용할 수 있는 운영체제이다.

로그인하는 방법에 따라 출력되는 메시지를 설정할 수 있다.

 

/etc/issue

사용자가 로컬로 로그인할 때 login이라는 메시지를 보여주기 전에 출력되는 내용을 적는 파일

 

/etc/issue.net

텔넷(telnet)을 통한 네트워크에 원격 접속시 출력되는 메시지를 기록한다.

 

/etc/motd

성공적으로 로그인 되었을 때 접속된 사용자에게 보여주는 메시지를 기록하는 파일

 

 

 

 

 

 

사용자 관련 파일

리눅스에서는 대부분의 정보가 텍스트 파일에 저장돼서 관리하며 계정 정보 또한 파일에 저장된다.

 

사용자 계정을 새로 만드는 useradd 명령 실행시 

/etc/default/useradd 에서 정보를 가져오고 /etc/skel의 파일을 사용자에게 제공한다.

/etc/passwd 와 /etc/shadow에 생성된 사용자의 정보가 기록된다.

 

useradd 명령 사용 전

▶ 참조

/etc/default/useradd

/etc/skel

/etc/login.defs

 

useradd 명령 사용 후

▶ 생성

/etc/passwd

/etc/proup

/etc/shadow

/hone/[계정명]

 

 

 

 

계정과 관련된 파일 상세내용

 

▶ /etc/default/useradd

/etc/default/useradd 파일

 

useradd 명령으로 계정을 생성할 떄 기본적으로 적용되는 설정이 들어있는 파일이다. useradd 명령으로 사용자 계정을 생성할 때 /home 안에 계정명으로 디렉터리가 생성되며 기본으로 bash셸을 제공한다. 

 

 

▶ /etc/login.defs

 

주석과 빈행을 제거한 /etc/login.defs 파일

메일디렉터리, 패스워드 관련 설정 및 UID 설정값의 범위 등이 정의되어 있는 파일이다. 패스워드의 사용기한과 계정생성시 UID값이나 GID값의 범위 및 기본권한(UMASK)등이 설정되어있는 파일이다.

 

▶ /etc/skel

사용자를 생성하면 기본적으로 제공되는 파일이나 디렉터리가 들어있다. 기본값은 아무것도 지정된 파일이 없으며 만약 skel 디렉터리 안에 A라는 파일을 생성할 경우 계정생성시 사용자의 /home 디렉토리안에 A파일이 자동으로 생성된다.

 

 

 

▶ /etc/passwd 

root:x:0:0:root:/root:/bin/bash

/etc/passwd 파일

사용자의 목록을 저장하고 있는 파일이다. 시스템 계정을 제외한 사용자는 로그인해서 자원을 이용할 수 있다. 이 파일의 정보로 어떤 사용자가 로그인하고 로그아웃했는지 구분할 수 있고 콜론(:)으로 각각 정보를 구분한다.

 

각 필드의 값 = (ID : 패스워드 : UID : GID : 추가정보의 위치 : 로그인시 사용하는 셸) 

x로 표시되는 패스워드는 암호화되어 별도로 /etc/shadow에서 관리된다. 

 

 

▶ /etc/shadow

/etc/shadow 파일의 마지막10줄

kang라는 계정을 만들어 암호를 지정한 뒤 확인해보면 콜론(:)으로 구분된 두 번째 필드에 "$6$zi..."로 암호화된 패스워드를 확인할 수 있다. 다음 필드인 18009는 패스워드가 바뀐 마지막 날짜를 뜻하며 다음 0값은 패스워드를 변경한 뒤 최소한의 유예기간을 말한다.

 

관리자 계정으로만 접근할 수 있으며 패스워드 변경일 및 계정만기일을 설정해서 사용자의 계정을 못쓰게 만들 수 있다.

 

 

 

 

 

 

사용자 계정 관리 명령어

 

  • useradd [option] [계정 이름]

사용자 계정을 생성한다.

 

# 주요 옵션

-d : 사용자의 홈 디렉터리 지정 (기본위치는 /home)

-g : 계정의 그룹 지정

-p : 사용자의 암호 추가 시에 지정

-e : 계정의 만기일 지정

-u : UID  값을 지정

 

ex)

useradd test

-> test라는 이름의 계정을 생성한다.

useradd test -d./home/korea

-> test 이름의 계정을 생성하면서 홈 디렉터리는 /home/korea 안에 생성한다.

 

 

  • passwd [계정명]

생성된 사용자의 계정에 암호를 부여한다.

등록된 사용자의 계정에 암호를 부여하거나 변경할 수 있으며

-d 옵션을 사용하지 않을 경우 암호를 지정하지 않으면 로그인이 안된다.

 

# 주요 옵션

-S : 사용자의 패스워드 정보를 알 수 있다.

-l : 사용자의 패스워드에 LOCK를 걸어 로그인을 막는다.

-u : LOCK 되어있는 사용자의 잠금을 해제한다 (unlock)

-d : 사용자의 패스워드를 제거한다. 이 경우 패스워드 없이 로그인이 가능하다.

 

 

  • su [option] [계정명]

사용자 전환 명령어

 

시스템에 로그인되어있는 상태에서 다른 계정의 권한으로 로그인할 수 있다.

사용자명을 입력하지 않으면 root로 전환한다. 

 

# 주요 옵션

-, -ㅣ : 옵션 없이 su명령어를 사용하면 그 계정의 권한만 갖는다.

         실제 사용자가 로그인한 것처럼 사용하려면 반드시 필요한 옵션이다.

 

-c : 사용자 전환을 하지 않고 일시적으로 권한을 가지고 명령을 수행할 때 사용한다.

     (--command)

 

 

  • usermod [option] [계정명]

사용자의 계정을 관리할 수 있다.

shell이나 홈 디렉터리, UID 등 사용자 관련 정보 대부분을 변경할 수 있다.

 

# 주요 옵션

-d   : 사용자의 홈디렉터리를 변경한다.

-m  : 홈 디렉토리 변경 시 사용하던 파일도 모두 같이 옮겨준다.

-s   : 사용자가 로그인할 때 기본 shell을 변경한다.

-u   : 사용자의 UID값을 변경한다.

-l    : 사용자의 ID를 변경한다.