Linux

[Rhel/CentOS] 3. 로컬 사용자 및 그룹 관리

5_Clock 2021. 12. 7. 20:12
반응형

사용자(User)

사용자 계정은 다른 사용자와 명령을 실행할 수 있는 프로그램 간에 보안 경계를 제공하는 데 사용됩니다.

그룹(Group)

그룹은 파일 및 기타 시스템 리소스에 대한 엑세스를 공유해야 하는 사용자 컬렉션입니다.

 

$ ls -l
total 24
              UID   GID   <SuperBlock>
              ---   ---   
drwxr-xr-x  2 root  root  4096 12월  7 19:22 ./
drwxrwxr-x 11 sihun sihun 4096 12월  6 18:02 ../
-rw-r--r--  1 sihun sihun 4622 12월  7 18:19 day1.txt
-rw-r--r--  1 sihun sihun 7820 12월  7 18:19 day2.txt

 

super user

  • uid, gid 0번이거나 혹은 이와 동등한 권한을 가지고 있는 사용
  • root 로그인하는 경우: super user

normal user

  • rhel7 기준으로 uid, gid가 100번 이상인 사용자. 이사용자는 시스템 제어 권한은 가지고 있지 않다.
  • 일반 사용자
  • 배포판 별로 일반 사용자(uid, gid) 범위가 각자 다름
     * 65534(UID): nobody

service user

  • 201~999 uid, gid 기준
  • postfix, httpd, vsftpd 이와 같은 서비스가 실행 시 서비스 계정이 요구함
  • 위의 범위 안에서 서비스 계정을 만듦
      * SELinux에서 차단
      * 잘못하면 UID, GID가 손실

kernel user

  • uid, gid 0번 사용자
  • uid, gid 0,0
  • 커널이 메모리에 올라가서 구동시 0:0으로 모든 프로세스 및 초기화 실행
  • 0:0 초기화가 완료 되면 "super user"에게 다시 권한 이양

 

슈퍼유저 액세스 권한 취득

슈퍼유저 권한을 얻는 방법은 크게 "sudo, su, su -" 세가지 방법이 있습니다. 

su -와 su의 차이점은 해당 사용자로 새로 로그인 한 것처럼 쉘 환경을 설정하는 반면, su는 해당 사용자로 쉘을 시작하지만 원래 사용자의 환경 설정을 사용한다는 것이다.

 

sudo의 경우는 Debian 계열에서 많이 사용하다가 RHEL6 이후로 적극적으로 사용한다.

 

$ sudo -u <USER> <COMMAND>
  # sudo -u student ls  ;; student 사용자로 ls 명령어 실행
  # password: 본인의 패스워드

$ sudo -i # 대화형 모드(interactive mode)
$ sudo -i -u student

 

* sudoer 설정: visudo(vi에디터 기반으로 실행)

 

/etc/sudoers.d/

별도의 파일로 저장해 설정을 분리 운영이 가능하게 한다.

 

$ echo "%<GROUPNAME> ALL=(ALL) ALL" >> /etc/sudoers.d/<USERNAME>

 

%뒤는 그룹을 말한다. ALL=(ALL)은 이 파일이 있을 수 있는 호스트에서 group이 모든 명령을 실행할 수 있음을 지정하는 것이다.

마지막 ALL은 group이 이러한 명령을 시스템 사용자로 실행할 수 있음을 지정한다.

 

 

로컬 사용자 계정 관리

useradd: System v 스타일(SCO Unix)
adduser: BSD 스타일(Debian, Slackware, SuSE)

useradd: 사용자 추가(home생성, 그룹아이디 생성, 기본 파일 복사)

home 생성: /home/<USERNAME>
그룹 아이디 생성: /etc/group에 사용자 이름과 같은 그룹 생성(uid, gid)
기본 파일 복사: /etc/skel, 기본 파일 제공해주는 재료 디렉터리

useradd: usermod 수정
groupadd: groupmod 수정

 

$ useradd test1 	# uid:gid = 1000:1000
$ groupadd shared   # gid 1001
$ useradd test2  	# uid:gid = 1001:1002


그냥 vi로 /etc/passwd, group 파일 직접 수정하면 됨.

 

user를 특정 그룹에 포함시키기

$ sudo usermod -aG <GROUPNAME> <USERNAME>




RedHat제안 --> # groupadd -g 10000 shared : 10000번부터 사용하는 것을 권장한다.

 

         /etc/login.defs
                ^
                |
            groupadd ---> /etc/group
            별도의 그룹
               생성


                                       .->  echo "passwd" | passwd --stdin <USERNAME>
                                      /
                                     / 
                        .---> /etc/passwd (2) -- failed --> all stop
                        |---> /etc/group (3)
                        |      uid, gid + uname으로 정보 생성
                        | 
                        +---> mkdir /home/<USERNAME> (4) <--- skel --- /etc/skel (5)
                        |                       
/etc/login,defs <--- useradd ---> passswd ---> /etc/shadow
      SRV ACC           |           (6)         [SHA512]
      NOR ACC(d)        |         /               
       |\_______________|________/
       |                |
노말/서비스 계정인지        |
                        |
                        v
                /etc/default/useradd (1)
                첫번째로 참조하게 된다.
                (기본적으로 가져가는 값들)




                     .--->student:x:1000:10000
                     |            -
                     |             \_________
                    (2)                      \
passwd ---> /etc/password --mapping--> /etc/shadow  (4) pub + salt + rsa pass = 진짜 패스워드
             /   (legacy)                      |
            /                                  |
login-----'                                 mapping
  (1)                                          |
                                               V
                                            gshadow (3)

 

사용자 암호 관리 

최근에 사용자 암호 관리는 리눅스에서 잘 안쓰인다. 왜냐하면 LDAP이나 IPA로 인해 굳이 리눅스에서 할 필요성이 없어졌기 때문이다.

$ sudo chage -m 0 -M 90 -w 7 -I 14 <USERNAME>

해당 명령어를 알아두면 좋을 것 같다.

  • m: 암호 최소 사용기간
  • M: 암호 최대 사용기간
  • W: 만료전 경고기간
  • I: 비활성화 기간

엑세스 제한

$ sudo usermod -L test1
# 유저에 접근 못하도록 잠금

$ sudo usermod -U test1
# 잠금 해제

서버 점검시 종종 쓴다...

 

파일 권한 관리

rwx rwx rwx: 심볼릭(현재 이 방법으로 권장)

$ chmod u+rwx,g-w,o=rw
    # +: 퍼미션 추가
    # -: 퍼미션 제거
    # =: 퍼미션 강제 대입

 $ chmod 724 # chmod u=rwx,g=w,o=r
             # chmod a=rwx (a는 u,g,o 모두 일괄 적용)
             # chmod u+s: Set UID
             #       g+s: Set GID
             #       o+t: Sticky
728x90
반응형