ELITE HACKER bootcamp/Linux 운영체제 (1주)
사용자 및 권한 관리
hy30nq
2024. 2. 21. 19:14
728x90
: 각 사용자의 권한은 일반 사용자 또는 root 사용자 중의 하나로 정의
: 일반 사용자는 실행할 수 있는 퍼미션을 가진 파일에만 접근 가능
: root 사용자는 소유 여부에 관계 없이 모든 파일에 접근 가능
사용자 계정의 이해
- 리눅스에서 계정은 파일의 설정에 따라 관리
- 리눅스 계정과 관련 파일
- /etc/passwd : 계정 이름과 관련 정보
- /etc/shadow : 패스워드와 관련 정보
- /etc/group : 계정 그룹과 보조 그룹 계정 정보
사용자 계정 생성
- 사용자 계정 생성
- 명령어 : adduser & useradd
- /etc/passwd 파일 안에 /home/kisa 디렉터리를 계정 홈으로 가짐
- adduser 옵션
- -c 설명 : 패스워드 파일에 새로운 사용자 설명을 추가
- -d 디렉터리 : 새 계정에 대한 디렉터리 위치를 지정
- -e 유효기간 : 지정된 날짜에 사용자의 계정을 삭제
- -f 비활성일수 : 패스워드가 만기된 후 계정이 영구히 말소될 때까지의 기간
- -u uid : 사용자의 ID에 대한 값
- -s shell : 사용자의 로그인 쉘을 지정
- -n : 사용자 계정 추가 기본모드를 지정하지 않을 때
- -G[그룹] : 사용자가 기본 그룹이외의 다른 그룹에 추가하고자 할 때
계정 관리
- adduser 실행 절차
- 1. /etc/passwd 와 /etc/shadow 사용자 추가
- 2. 사용자명과 동일하게 /etc/group에 추가
- 3. /home/<사용자명> 디렉터리 생성
- 4. /etc/skel 디렉터리 파일 /home/kisa 디렉터리에 복사
- userdel
- 사용자 계정 삭제
- usuerdel [계정명]
- passwd
- 사용자 암호 변경
- passwd [계정명]
- /etc/passwd 파일
- <계정><pw><UID><GID><COM><계정위치><쉘>
- /etc/shadow 파일
- shadow 파일은 9개 필드로 콜론(:)에 의해 구분
- 1. 계정명
- 2. 암호화된 패스워드
- 3. 최종 암호 변경일
- 4. 암호 변경 최소 일수
- 5. 암호변경 유예기간
- 6. 암호변경 경고 일수
- 7. 계정 사용 불가 날짜
- 8. 계정 만료일
- 9. 예약
- shadow 파일은 9개 필드로 콜론(:)에 의해 구분
- /etc/skel 디렉터리
- 해당 디렉터리 안에 들어있는 파일 및 디렉터리를 계정 생성시 홈 디렉터리에 제공
- /etc/default/useradd 파일
- 별도의 옵션없이 ‘useradd 사용자명'으로 계정 생성 시에 기본적으로 적용되는 설정이 들어있는 파일
- useradd -D 또는 cat /etc/default/useradd 로 확인 가능
- /etc/login.defs 파일
- 해당 파일에서 정의 되어지는 주요 값
- 패스워드 정책 관련 설정(최소/최대 사용기한, 최소길이 등)
- GID/UID의 최소/최대값, 기본 UMASK 값
- 홈 디렉터리 생성 여부, 패스워드에 적용하는 암호화 알고리즘
- 해당 파일에서 정의 되어지는 주요 값
pwconv 명령어 사용시 /etc/passwd 파일의 두번재 필드에 있는 암호화된 패스워드를 모두 x로 표시하고 /etc/shadow의 두번재 필드에 저장하게 되며, root만 읽을 수 있도록 수정
- pwconv / pwunconv
- 일반적으로 사용자 암호는 해쉬화 되어 /etc/shadow에 저장 되지만 pwunconv 명령어로 /etc/passwd 파일에서 해쉬화 된 암호를 볼 수 있다
/etc/group 폴더는 그룹명과 보조 그룹에 속한 계정들의 정보를 보관하고 있는 파일
- group 관리 명령어
- groupadd
- 그룹 생성
- groupadd [그룹명]
- 그룹 삭제 : groupdel
- 그룹 삭제
- groupdel [그룹명]
- 그룹 속성 변경 : groupmod
- 그룹 속성 변경
- groupmod [옵션] [그룹명]
- groupadd
퍼미션과 소유권
리눅스는 멀티 유저 운영체제이기 때문에 시스템의 자원인 파일을 소유할 수 있는 권리와 접근 권한 , 즉 소유권과 퍼미션을 root가 부여하게끔 되어 있음.
- 퍼미션(ermission)과 소유권(owmership)
- 리눅스 시스템에 있는 모든 파일과 디렉터리에서는 그것을 액세스 할 수 있는 소유자와 그룹에 대한 소유권(ownership)을 가진다.
- 이런 파일과 디렉터리에 액세스 할 수 있도록 해주는 퍼미션(permission)으로 접근을 제어 할 수 있다.
- 소유권은 그 파일과 디렉터리를 생성한 사용자가 가지는데, 보통 계정이름으로 표기되거나 어떤 경우에는 UID로 표기 된다.
- 소유권(owmership)
- chown 명령어 사용
- chown [소유자.그룹] 파일/디렉터리 명
- 사용자 소유권 변환
- 그룹 소유권 변환 (chgrp)
- chown 명령어 사용
- 퍼미션 형식 구조(chmod)
- 파일 퍼미션은 다음과 같은 구조
- -rwxrwxrwx
- 파일 유형 / 사용자(Users) / 그룹(Group) / 기타(Other)
- 읽기 허용(Read)
- 파일을 내용을 읽을 수 있는지 여부를 결정
- 쓰기 허용(Write)
- 파일을 쓰거나 지울 수 있는지, 덮어쓸 것인지 결정
- 실행 허용(eXecution)
- 실행 파일들에 대해서 실행권한 부여 여부를 결정
- 파일 퍼미션은 다음과 같은 구조
- 퍼미션 계산 예제
- 사용자/그룹/기타
- r w x / r w x / r w x
- 4 2 1 / 4 2 1 / 4 2 1
- 4자리 절대모드 퍼미션
비트 이름 | 절대 표기 값 | 문자 |
Sticky bit | 1000 | Other (실행)권한에 t |
SetGID | 2000 | Group (실행)권한에 s |
SetUID | 4000 | Users (실행)권한에 s |
일반적으로 파일을 실행시키면 실행시킨 권한으로 실행이 되지만, 절대모드 퍼미션은 파일을 소유한 권한으로 실행이 됨
실행 권한이 없고 절대모드 퍼미션만 있으면 위의 값들은 대문자로 표시
- sticky bit
- 모든 사용자가 쓰고 삭제할 수 있는 디렉터리에 적용
- 리눅스에서 /tmp 디렉터리가 이 비트에 적용
- 이 비트를 적용한 파일은 어떤 사용자라도 읽고 쓸 수 있지만 삭제를 할 수 있는 사람은 이 파일을 생성한 사용자만이 삭제 가능
- SetGID 와 SetUID
- 이것은 파일을 실행할 때 그 파일의 소유자 또는 그룹의 권한으로 실행되도록 하는 것이다.
- 이 권한은 시스템에서 작업이 이뤄질 수 있도록 루트 권한이 필요한 경우나 어떠한 시스템 자원을 이용하기 위하여 필요하다.
- 예를 들어 /bin/ping라는 명령어에서 SetUID를 제거하게 되면 일반 사용자가 이 명령어를 사용 하는데 오류가 발생하게 된다.
파일과 디렉터리 이해
: 리눅스 파일 시스템은 파일과 디렉터리의 계층적 구조를 가지고 있다. 이는 디렉터리, 일반 파일, 특수 파일로 구분됨.
- 모든 것은 파일 (Everything is a file)
- UNIX에서 부터 유래된 리눅스의 모토
- 유닉스 프로그램의 모토로, 이전까지는 마우스, 키보드, 프린터마다 각각 다르게 처리함.
- 유닉스는 각각의 장치를 파일로 처리, I/O Redirection을 이용하여 디렉터리 어디서든 장치들과 입출력이 가능
- 리눅스에서도 모든 것이 파일로 액세스됨
- 일반 파일
- 디렉터리 파일
- 특수 파일
- 블록 장치 파일
- 캐릭터 장치 파일
- 심볼릭 링크 파일 등
- UNIX에서 부터 유래된 리눅스의 모토
- 트리 구조
- 리눅스 파일 시스템은 파일과 디렉터리의 계층적 구조를 가지고 있으며, 보통은 서로 연관된 파일들을 하나의 그룹으로 모으고 각 그룹을 고유의 디렉터리에 보관
- 이 계층 구조의 기초에는 루트 디렉터리가 있고, /(슬래시)로 나타냄
- 모든 파일과 디렉터리는 루트 디렉터리의 자식 혹은 먼 후손
디렉터리 | 설명 |
/bin | 리눅스가 가지고 있는 각종 기본 프로그램을 포함한다. 보통 리눅스 명령어가 저장되어 있다. |
/boot | 리눅스를 부팅할 때 부팅에 관련된 중요한 파일들 즉, 커널 이미지와 부팅 정보를 포함하고 있다. |
/dev | 특수한 Device 파일을 포함한다. 보통은 사용자가 쓸 일은 없지만 또 다른 디바이스를 추가하기 위해서 사용한다. |
/etc | 시스템 관리자를 위해 필요한 파일을 담아 놓는다. 대표적인 것이 바로 password 파일이다. |
/home | 글자 그대로 사용자들이 사용할 수 있는 독립적인 공간이다. 대부분의 사용자들이 디렉터리를 생성하거나 파일을 저장할 때 사용한다. |
/lib | 시스템 프로그래밍을 위한 각종 라이브러리를 포함한다. |
/proc | 커널의 기능을 제어하기 위하여 커널에 대한 정보를 담고 있는 가상파일 시스템을 포함한다. |
/tmp | 리눅스 시스템이 사용하는 임시 파일을 저장한다. |
/var | 시스템이 현재 운영 중인 시스템의 자료의 모든 변경사항을 기록하는 디렉터리이다. |
- ls -l 명령어를 수행했을 때 출력되는 파일 구조
- <파일 종류><허가 권한><링크 수><소유자 명(계정 명)><그룹 명><파일 크기><마지막 변경된 날짜><마지막 변경된 시간><파일 이름>
- Inode
- 리눅스에서 파일에 접근할 때 실제로는 파일의 이름이 아닌 이름과 매핑된 숫자로 접근
# : 주석

728x90