[Linux] 사용자, 그룹 및 권한
사용자와 권한 관련 명령어
• 계정종류:
- root 유저와 사용자 계정
- 계정 살펴보기 /etc/passwd, /etc/shadow, /etc/group
- 내 권한 (whoami, id)
- 그룹 계정 및 권한(sudoer & sudo)
- sudo visudo - 수펴유저의 권한을 편집
- 사용자 생성과 그룹 생성 (adduser, useradd, usermod, deluser, userdel, addgroup, delgroup)
- 파일 권한 다루기 (chmod, chown, chgrp, umask)
- 파일 다루기 상급
• setuid, setgid
사용자를 sudo 권한에 추가
- useradd -aG user1 sudo (Ubuntu)
- useradd -aG user1 wheel (Amazon AMI)
사용자 계정 - 권한의 대여 - su
su [username]
사용자의 권한을 대여 (즉, 사용자로 로그인 한 것과 같은 효과)
언제 사용하느냐? 관리자가 사용자 계정을 관리하고 이슈/장애를 분석 할 때
사용방법:
• su user2
user2의 id로 로그인 한다 (user2의 pw 필요)
• su - user2
user2 의 id로 로그인 한다 (user2의 pw 필요, user2 의 home 디렉토리 사용)
• su 혹은 su root
root 의 id 로 로그인 한다 (root의 pw 필요. 하지만 우분투는 root 암호 비활성화.)
• sudo su
내 권한을 상승하여 root 사용자의 권한으로 로그인 한다 (현재 디렉토리 사용) • sudo su -
내 권한을 상승하여 root 사용자의 권한으로 홈 디렉토리 사용 (root의 home)
• sudo su - user2
user2 사용자의 권한으로 홈 디렉토리 사용 (sudoer(user1)의 pw 필요, user2 의 home)
사용자 계정과 그룹 계정
- cat /etc/passw : 사용자 계정 확인
- cat /etc/shadow : 사용자 암호
- cat /etc/group : 사용자 그룹 확인
사용자 계정과 그룹 계정 - 사용자 계정 (/etc/passwd)
• cat /etc/passwd : 사용자 계정 확인

사용자 계정과 그룹 계정 - 사용자 계정 (/etc/shadow)
- cat /etc/shadow : 사용자 암호
- 리눅스(유닉스)의 모든 시간 epoch = 1970년 1월 1일 00:00:00 UTC
사용자 추가 (adduser - add user)
사용자 암호 정책 변경 / 암호 변경 (chage - change age / passwd)
chage [option] user
사용자암호정책변경
- chage user2 : 암호 정책 변경
- chage -l user2 : 암호 정책 확인
- chage -E 2020-12-31 -m 1 -M 90 -W 7 user2
- passwd [options] user : 암호변경
- passwd -l user : 계정 잠금
- passwd -u user : 계정 잠금 해제
- passwd -S user : 계정 상태 확인
- passwd -n <mindays> user : 암호 최소 기간
- passwd -x <maxdays> user : 암호 최대 기간
- man passwd
사용자 삭제 (deluser - delete user) deluser [options] user
사용자 계정 삭제
- deluser user2
- deluser user2 --remove-home
userdel user
none-interactive 모드로 모두 삭제
- userdel user2 : 사용자 계정 삭제 (홈 삭제)
- userdel -f user2 : 로그인 중이더라도 삭제
- 새로운 사용자를 동일ID 로 만들경우, 이전 디렉토리에 맵핑
그룹 계정 / 사용자 할당 (또는 사용자 정보 수정) (usermod - user mod)
usermod [options] user
사용자 계정 정보 수정 (moduser 는 없음 (interactive 방식인...)) 사용자를 그룹에 추가
- usermod -c <name change> user2 : 사용자 이름 수정
- usermod -a -G sudo user2 : user2 를 sudo 그룹에 추가
- adduser user2 sudo : user2 를 sudo 그룹에 추가
- deluser user2 sudo : user2를 sudo 그룹에서 제거ㅇ
- (실행후 결과 번역 오류)

파일의 생성 권한 (umask - user mask) 파일/디렉토리 생성 권한의 확인
소유자(User) / 그룹(Group) / 그외 (Other)
- 리눅스의 기본 파일 권한: 666
- 리눅스의 기본 디렉토리 권한: 777
이 말은, umask 가 0 일 경우 새로 생성되는 파일의 권한은 666 (rw-rw-rw-) 을 갖게 됨) 여기서, umask 가 2 (혹은 0002) 일 경우에는 파일 기본권한 666 에서 002를 빼면 - 디렉토리 권한은 777 (rwxrwxrwx) 을 갖게 됨
- 110 110 110 = 666
- 000 000 010 = 002
- 110 110 100 = 664, 즉 rw-rw-r-- 로 생성 됨
- 디렉토리 기본권한 777 에서 002를 빼면
- 111 111 111 = 777
- 000 000 010 = 002
- 111 111 101 = 775, 즉 rwxrwxr-x 로 생성 됨
파일의 권한 - 권한 변경 (chmod - change mode) chmod [OPTION]... [MODE]... file...
파일/디렉토리 권한의 변경 소유자(User) / 그룹(Group) / 그외 (Other)
- chmod 777 hello.txt : 숫자값을 통한 user/group/other 에 rwx 권한 부여
- chmod 700 hello.txt : 숫자값을 통한 user 에 rwx 권한 부여 (group/other 에는 --- 권한 부여)
- chmod u+x hello.txt : user 에 x(실행) 권한 추가
- chmod u-x hello.txt : user 에 x(실행) 권한 삭제
- chmod g+rw hello.txt : group 에 rw(읽기/쓰기) 권한 추가
- chmod g-rx hello.txt : group 에 rw(읽기/쓰기) 권한 삭제
- chmod o+rwx hello.txt : other 에 rwx(읽기/쓰기/실행) 권한 추가
- chmod o-rwx hello.txt : other 에 rwx(읽기/쓰기/실행) 권한 삭제
- chmod +x hello.txt : user/group/other 에 x(실행) 권한 추가
파일의 권한 - 소유권 변경 (chown - change owner, chgrp - change group) chown [OPTION]... [USER][:GROUP] FILE...
파일/디렉토리의 소유자/그룹 변경 chgrp [OPTION]... [GROUP] FILE...
파일/디렉토리의 그룹 변경 소유자(User) / 그룹(Group) / 그외 (Other)
- chown user2 hello.txt : 해당 파일(hello.txt) 의 소유자를 user2 로 변경
- chown user2:user2 hello.txt : 해당 파일(hello.txt) 의 소유자와 그룹을 모두 user2 로 변경
- chown :user2 hello.txt : 해당 파일(hello.txt) 의 그룹을 user2 로 변경
- chgrp user2 hello.txt : 해당 파일(hello.txt) 의 그룹을 user2 로 변경
파일의 특수 실행 권한 (setuid, setgid, sticky bit)
파일의 권한을 일시적으로 소유주(setuid) 혹은 소유그룹(setgid)의 권한으로 빌려서 실행함
Sticky bit은 해당 디렉토리에 생성된 파일은 해당 사용자의 소유주로 저장됨 소유자(User) / 그룹(Group) / 그외 (Other)
• SetUID 는 4xxx, SetGID 는 2xxx 로, StickyBit 은 1xxx 로 설정한다. 각각 설정 위치는 rws------, rwxrws---, drwxdrxdwt 로 표시된다.
• 기존권한의위치에덮어쓰기때문에,해당기능만존재할경우대문자S/S/T로표기된다. 각각 설정 위치는 rwS------, rwxrwS---, drwxdrxdwT 로 표시된다.
기존 권한 (실행권한) 을 포함하고 있는 경우 소문자 s/s/t로 표시된다.
- chmod u+s filename
- chmod g+s filename
- chmod +t directoryname
파일의 특수 실행 권한 (setuid, setgid, sticky bit) (다소 복잡한) 실습
시나리오 : 두명의 사용자가 있고, user1 이 만든 읽기 전용 파일에 user2 가 setuid 권한을 통해 접근
user1, user2 두명의 사용자
- user1의 readonly 파일 생성
- /bin/cat 을 복사해서 mycat 으로 생성 및 setuid 를 통해 실행 권한을 부여
- user2 가 readonly 파일을 직접 읽을 수는 없지만,
- setuid 가 실행된 파일로는 읽을 수 있음.