ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유저와 그룹의 관리
    Technique/LPIC 2019. 10. 27. 20:35
    반응형

    Linux는 복수의 유저가 동시에 이용하는 것이 가능한 멀티유저 시스템이다. 유저의 정보는 텍스트 파일로 보관되어 있다.

     

    유저 아카운트와 /etc/passwd

    Linux에서는 유저 어카운트 정보는 /etc/passwd 파일에 보관되어 있다. /etc/passwd파일은 plaintext 이기 때문에 cat 커맨드 등으로 내부를 볼 수 있다. /etc/passwd 파일은 1행에 1 유저 어카운트의 정보를 기록하게 되어있다. 항목은 [:]으로 나눠진다. 각 항목의 의미는 아래와 같다.

     

    • ①유저명 - 시스템 내의 아카운트 명 
      유저 명의 이름이나 프로그램명이 사용된다. 같은 시스탬네에 중복될 수 없다.
    • ②패스워드 - 암호화 되어 있는 패스워드
      위의 상황에선 섀도우 패스워드가 사용되고 있으므로 이 파일에서는 x 가된다.
    • ③UID( 유저 ID ) - 유저를 식별하기 위한 일련의 ID
      root유저는 반드시 0이며 일반 유저는 통상 1000 이하의 번호가 주어지며 1~99까지는 시스템 관리용으로 사용된다.
    • ④GID( group id ) 그룹을 식별하기 위한 ID
      GID와 그룹명의 대응은 /etc/group 파일에 정의한다.
    • ⑤GECOS - 코멘트
      유저의 풀네임과 같은 기타 정보를 기록한다
    • ⑥홈 디렉터리
      유저의 홈 디렉터리의 대응하는 패스를 저장한다.
    • ⑦기본 쉘
      유저가 로그인하거나 쉘을 열었을 경우 시동되는 쉘의 대응하는 패스를 기록한다
    plain text
    순수히 문자정보로 구성되어 있는 데이터이다. palin text를 저장하는 파일이 텍스트 파일이다. 장식 정보가 포함되어 있는 HTML 파일 등은 plain text가 아니다.

    /etc/passwd 파일은 일반 유저도 읽기 가능하다. 패스워드는 암호화되어있다곤 하나, 시간을 들이면 암호해독은 가능하다, 따라서 패스워드를 이 파일에 기록하는 것은 세큐리티적 관점에서는 좋지 않다. 때문에 현재에는 shadow password를 사용하여 패스워드 정보는 /etc/shadow에 격납하도록 되어 있다. /etc/shadow는 슈퍼 유저 (root)뿐만 읽을 수 있기 때문에 세큐리티 적으로 강화된다.

    shadow password를 사용하지 않더라도 일반 유저에는 /etc/passwd 파일의 읽기 금지를 시키면 되지 않냐는 말을 할 수도 있지만, /etc/passwd 파일로부터 일반 유저의 읽기 권한을 지워 버리면 다양한 오류가 발생할 수 있다/ 예를 들면 일반 유저로는 프롬프트가 절절히 표시되지 않거나 ls -l 커맨드의 표시가 이상하게 될 가능성도 있다. 

    그룹 계정과 /etc/group

    그룹의 설정은 /etc/group 파일에 저장되어 있다.

    • ① 그룹명
      그룹의 이름이 들어가 있다.
    • ② 그룹 패스워드
      그룹 멤버용의 패스워드가 들어가 있다. 현재에는 shadow password가 사용되기 때문에 이 파일에는 x가 들어간다.
    • ③ GID( group ID )
      그룹을 식별하기 위한 GID가 들어간다.
    • ④ 그룹 멤버
      이 그룹을 서브 그룹으로서 소속되어 있는 유저의 유저명이 들어가 있다. 복수의 유저가 들어가 있을 경우[.]로 구별된다.

    위의 예에는 staff라는 group에 유저 linux와 lpic가 소속되어 있다. 기본 그룹 룹을 나누는 것에는 일반 유저는 모두 특정 그룹에 소속되어 있는 것이나, 유저 아카운트를 작성하는 것에 해당 유저의 전용 그룹도 작성하여 부여하는 등 리눅스의 버전에 따라 다르다.

    유저는 복수의 그룹에 소속되는 것이 가능하다. 유저에게 있어 기본이 되는 그룹을 primary group( 기본 그룹 ) 그 이외에 참가되어 있는 그룹을 서브 그룹 ( 참가 그룹 )이라고 한다.  파일이나 디렉터리를 작성한 경우에 소유 그룹으로 디렉터리에 적용되는 것이 primary group이다. 유저의 primary group은 /etc/passwd 파일의 GID 필드에서 확인 가능하다.

    커맨드를 이용한 유저 그룹의 관리

    Linux에서는 그래픽컬 한 도구를 사용하여 유저나 그룹을 관리하는 것인 가능하지만 tool은 버전에 따라 상이하다. 버전에 의존하지 않은 체 유저 관리 그룹 관리가 가능하도록 하기 위해선 커맨드를 사용한 조작을 이해해둘 필요가 있다.

    useradd 커맨드

    유저 어카운트를 작성하기 위해서는 useradd 커맨드를 사용한다.

    useradd [옵션] 유저명
    옵션 설명
    -c 코멘트 코멘트 필드를 지정한다.
    -d 패스 홈 디렉터리를 지정한다.
    -g 그룹 명/GID primary group을 설정한다.
    -G 그룹 명/GID primary group 이외에 소속된 그룹을 지정한다.
    -s 패스 기본 쉘을 지정한다.
    -D 기본 설정값을 표시또는 설정한다.
    -m 홈 디렉토리를 자동적으로 만든다.

    홈 디렉터리의 기본 파일

    유저 어카운트를 작성하면 보통 홈 디렉토리도 동시에 작성된다. 그 순간 기본적인 설정 파일과 같은 여느 유저에게도 필요하다고 여겨치는 파일도 동시에 배치된다면 편린하다. 홈 디렉터리 작성시에 배치하고 싶은 파일의 서식은 /etc/skel 디렉터리에 비치해둔다. 홈 디렉터리가 작성됨과 동시에 /etc/skel 디렉터리 내의 파일이 신규작성되는 홈 디렉터리내부에 복사된다. ( 파일의 소유자는 신규 작성되는 유저로 변경된다 ) 

    usermod커맨드

    기존의 유저 아카운트를 변경한다 /etc/passwd 파일의 해당 필드를 변경할 경우와 동일한다. useradd 커맨드와 많은 옵션을 공유한다.

    usermod [옵션] 유저명
    옵션 설명
    -c 코멘트 코멘트 필드를 변경한다.
    -d 패스 홈 디렉토리를 변경한다.
    -g 그룹 명/GID primary group 을 변경한다.
    -G 그룹 명/GID 소속 그룹을 변경한다.
    -s 패스 기본 쉘을 변경한다.
    -L 패스워드를 잠금하여 일시적으로 무효화 한다.
    -U 패스워드의 잠금을 해제한다.

    -g 옵션을 사용하면 primary group이 변경된다. 이것으로 인해 -G 옵션을 사용한 경우  primary group은 변경되지 않고 소속된 그룹을 변경한다. 아래의 예는 유저 lpic가 primary group 이외에 소속한 그룹을 bproject에 변경한다.

    usermod -G bproject lpic

    장기휴가 등과 같은 유저가 일시적으로 어카운트를 사용하지 않을 경우 세큐리티상의 관점으로부터 해당 아카운트를 이용불가로 변경할 필요가 있다. 이 경우 아카운트를 삭제하는 것이 아니라 -L 옵션을 사용하여 잠금을 건다면 아카운트를 일시적으로 무효화 시킨다. 

    아래의 예는 유저 lpic의 아카운트를 무효화 시킨다.

    usermod -L lpic

    userdel 커맨드

    유저 아카운트를 삭제한다. 유저 아카운트를 삭제하기만 한다면 유저가 이용하고 있는 홈 디렉터리가 남게 된다. 홈 디렉터리도 삭제하기 위해서는 -r 옵션을 사용한다.

    userdel [옵션] 유저 명
    옵션 설명
    -r 홈 디렉토리도 같이 삭제한다.

    passwd 커맨드

    패스워드를 변경한다. 슈퍼유저 이외는 자신의 패스워드만을 변경한다. 또한 usermod 커맨드와 같이 유저 어카운트를 잠금 하는 것도 가능하다.

    passwd [옵션] [유저 명]
    옵션 설명
    -l 패스워드를 잠금하여 일시적으로 무효화 한다.
    -u 패스워드의 잠금을 해제한다.

    groupadd 커맨드

    그룹을 작성한다.

    groupadd 그룹 명

    그룹을 지정하여 유저를 작성할 때에 그룹도 같이 작성해둔다.

    groupmod 커맨드

    기존의 그룹 정보를 변경한다.

    groupmod [옵션] 그룹 명
    옵션 설명
    -g GID GID를 변경한다.
    -n 그룹 명 그룹명을 변경한다.

    groupdel 커맨드

    그룹을 삭제한다. 삭제 대상 그룹을 primary group으로 하는 유저가 있는 경우 삭제가 불가능하다.

    groupdel 그룹 명

    하지만 이 그룹을 primary group으로 하고 있는 유저가 있기 때문에 삭제가 되지 않는다는 메시지가 표시된다. 이렇듯 삭제 대상의 그룹을  primary group으로 하는 유저가 1인이라도 있다면 그룹은 삭제되지 않는다. 혹시 이런 그룹을 삭제하고 싶을 경우 어느 그룹에도 소속되지 않는 유저가 돼버릴 가능성이 발생하기 때문이다.

    id 커맨드

    유저가 소속된 그룹은 id 커맨드로 알아볼 수 있다.

    id [유저 명]

    시스템에 따라서는 LDAP 등을 사용하여 유저 정보나 그룹 정보를 종합 관리하고 있는 경우가 있다. 이 경우는 LDAP 서버에 있는 유저 정보나 그룹 정보가 사용된다. getent 커맨드를 사용하면 localhost나 LDAP 서버 등에 있는 유저 정보, 그룹 정보 등을 일괄적으로 출력하는 것이 가능하다.

    getent 대상

    대상에는 유저 정보가 있다면 passwd 그룹 정보라면 group을 지정한다.

    LDAP
    디렉터리 서비스에 사용하는 프로토콜이다. 디렉터리 서비스를 사용하면 유저 정보나 그룹 정보 등을 일원 관리하는 것이 가능하다.

    shadow passord

    현재의 시스템에는 shadow password가 채용되오 있기 때문에 암호화된 패스워드가 /etc/shadow 파일에 기록되어 있다. /etc/shadow 파일은 root 유저만이 읽을 수 있기 때문에 /etc/passwd 파일에 패스워드를 저장하던 시절과 비교해서 상당히 세큐리티가 올라갓다고 볼 수 있다.

    아래는 shadow password를 사용한 경우의 /etc/passwd 파일과 /etc/shadow파일이다.

     

    - /etc/passwd

    - /etc/shadow

    암호화된 패스워드가 /etc/passwd의 제2 필드에 저장되어 있다.

     

    반응형

    'Technique > LPIC' 카테고리의 다른 글

    cron과 at의 접근제한  (0) 2019.10.29
    job schedule 관리  (0) 2019.10.27
    접근성  (0) 2019.10.22
    LightDM 의 설정  (0) 2019.10.22
    네트워크 경우로의 X 이용  (0) 2019.10.22

    댓글

Designed by Tistory.