1. 계정 및 그룹 생성
- 오늘날짜 변경
#date -s "2017-01-01 10:10:00"
- 계정명 : user10 - 패스워드 : 123
- UID : 808 - Home : /practice/user10
계정 유효기간 : 2017년 01월 7일
최초 설정한 암호는 최소 하루뒤에 변경 할 수 있으며, 암호는 5일에 한번씩 변경해야하고
최소 3일전에는 암호를 변경할 수 있도록 경고를 한다. 만약 암호가 만료된 10일 뒤에도
암호를 바꾸지 않으면 계정을 비활성화 시킨다.
#useradd -u 808 -d /practice/user10 user10
#chage -E 2017/01/07 -m 1 -M 5 -W 3 -I 10 user10
계정이 정상적으로 설정되었는지 date 및 chage 명령어를 이용해 확인 및 테스트 하기
1. 최소 암호 변경일 확인
$su - user10
$passwd 암호변경을 위해 조금더 기다려야함 (최소1일 -m 1)
#date -s "2017-01-01 10:10:00" date명령을 이용해 1일 이후로 변경
$su - user10 $passwd 암호변경 가능
2. 최대 암호 변경일 및 경고 확인
변경일확인 하는법 : chage -l [계정명]
#date -s "2017-01-04 10:10:00" 2일전 -->chage를 통해서 비밀번호 만료를 알 수 가 있다.
#date -s "2017-01-05 10:10:00" 1일전
#date -s "2017-01-06 10:10:00" 0일전
#date -s "2017-01-07 10:10:00" 암호 만료
3. 암호 만료 후 10일 뒤에도 변경 하지 않을 시 계정 잠금
#date -s "2017-01-17 10:10:00" 계정 잠금
4. 계정 잠금 (계정 유효기간 : 2018년 02월 24일)
#chage -d 2018-02-20 user10 //마지막 암호 날짜 변경
#date -s "2018-02-25 10:10:00" //2018년 02월 25일로 변경
로그인 테스트
암호와 상관없이 계정이 만료 확인
/etc/login.defs
MAIL_DIR
- 사용자 계정의 메일 관련 파일이 위치할 경로
PASS_MAX_DAYS
- 암호 변경 최대 일 수 (chage -M)
PASS_MIN_DAYS
- 암호 변경 최소 일 수 (cahge-m)
PASS_MIN_LEN
- 허용 할 수 있는 최소한의 패스워드 길이 지정
UID_MIN, GID_MIN
- 시작되는 최소 UID, GID 범위 지정
UID_MAX, GID_MAX
- 최대 UID, GID 범위 지정
CREATE_HOME
- 사용자 계정을 생성 시 홈디렉 토리 생성 여부
UMASK
- 사용자 계정이 가질 기본 접근 권한
USERGROUP_ENAB
- 사용자 계정 제거 시 그룹도 함께 제거할지에 대한 여부
ENCRYPT_METHOD
- 암호화 알고리즘 지정
---------------------------------------------------------------------------------------------
groupadd - 그룹 추가
groupmod - 그룹 수정
groupdel - 그룹 제거
---------------------------------------------------------------------------------------------
사용자 계정 특징과 생성과정
- 계정의 이름과 자신의 고유한 UID와 그룹을 나타내는 GID가 있다.
- /etc/default/useradd 와 /etc/login.defs에 정의한 내용을 바탕으로 사용자 계정의
각종 정보와 암호 정책에 의해서 생성된다.
- 생성된 계정은 /etc/passwd, /etc/group 파일에 사용자 계정의 정보가 저장된다.
- 홈디렉토리 생성 시 /etc/skel 디렉토리에 파일을 홈 디렉토리로 복사 한다.
---------------------------------------------------------------------------------------------
그룹 생성 및 수정
- 특정 디렉토리 및 파일의 접근을 권한이 있는 계정만 허용하기 위해 해당 계정들을
그룹 단위로 묶어 관리 할 수 있다.
#groupadd WEB_USER // WEB_USER 그룹 생성
#cat /etc/group // 마지막에 추가된 WEB_USER 그룹 확인
#groupmod -g 800 WEB_USER // WEB_USER 그룹의 GID 변경
#cat /etc/group // GID 변경 확인
#groupadd -g 900 WEB_ADMIN // GID 900번인 WEB_ADMIN 그룹 생성
#cat /etc/group // GID 900번 확인
#useradd -g WEB_USER web-user1 // web-user1 계정 생성 시 그룹을 지정하여 생성
#useradd -g 900 web-admin1 // web-admin1 계정의 GID를 900을 지정하여 생성
#cat /etc/passwd | tail -2 // passwd파일 확인, 4번째 필드가 800, 900 확인
#useradd -g 800 web-user2 // WEB_USER 그룹에 포함하여 web-user2 계정 생성
#cat /etc/passwd | tail -3 // 생성 확인
web-user1, 2 계정은 WEB_USER 그룹에 속한다. (GID가 같기때문에)
#groups [계정명] - 해당 계정이 속한 그룹을 출력
#groups web-user1
#groups web-user1 web-user2 //복수 지정 가능
#groups web-admin1
----------------------------------------------------------------------------------------------
디렉토리 및 파일의 권한과 소유권
- 시스템에 있는 모든 파일과 디렉토리는 접근할 수 있는 권한 및 소유권이 부여되어 있다.
- 파일이나 디렉토리의 접근을 제한 하는 것을 허가권 또는 퍼미션(Permission)이라 한다.
- 파일이나 디렉토리의 소유권한을 소유권(Ownership)이라고 한다.
---------------------------------------------------------------------------------------------
chown (change ownership) - 소유권 변경
chown [소유계정명]:[소유그룹명] [적용할파일명]
#cd /home
#ll // web-admin1 계정의 홈디렉토리 소유자, 소유그룹 확인
// 소유 계정 : web-admin1
// 소유 그룹 : WEB_ADMIN
#cd /home/web-admin1
#touch test // 테스트 파일 생성
#ll // 방금 생성한 테스트 파일 소유자/소유그룹 확인
// root root (현재 로그인 한 계정의 소유권을 따라감)
#su - webadmin1 // web-admin1 계정으로 스위칭
#pwd
/home/web-admin1
$touch test1 //test1 파일생성
$ll //소유자, 소유 그룹 확인
//web-admin1 WEB_ADMIN
#exit //root 변경
#chown web-user1 test1 //test1 파일에 소유자를 web-admin1 -> web-user1로 변경
#ll //변경 확인
#chown web-admin1 test1 //test1 파일에 소유자를 web-user1 -> web-admin1로 변경
#ll //변경 확인
//web-admin1 WEB_ADMIN
#chown web-user1:WEB_USER test1 //test1 파일에 소유자 소유그룹 동시에 변경
#chown web-admin1.WEB_ADMIN test1 //test1 파일에 소유자 소유그룹 동시에 변경
#chown :WEB_USER test1 // 구분자 기준으로 오른쪽(소유그룹)만 작성하여
#chown .WEB_ADMIN test1 // 소유 그룹만 변경이 가능
---------------------------------------------------------------------------------------------------------------------------
허가권 (Permission)
파일유형 필드에 퍼미션 구조
읽기 권한, 쓰기권한, 실행권한 등 세가지 필드로 구성
- r w x r w x r w x
파일유형 소유자/사용자(user) 소유그룹(Group) 기타사용자(Other)
rwx의 의미
r : 디렉토리/파일을 읽을 수 있는 권한 (Read)
w : 디렉토리/파일을 생성, 수정, 삭제 권한 (Write)
x : 디렉토리 접근, 파일의 실행권한 (Access/eXute)
- : 해당권한이 없는 경우 (bar)
rwx r-x r-x : 소유자는 읽기,쓰기,실행 권한을 모두가지고 있다.
그룹은 읽기, 실행 권한
기타사용자는 읽기, 실행 권한
rw- --- --- : 소유자는 읽기, 쓰기 권한이 있고, 그룹, 기타사용자는
권한이 없다.
#mkdir /home/real_madrid
#ll //root root
#chown :RM real_madrid //root RM
#ll
#su - ronaldo
$pwd // /home/ronaldo
$cd .. // /home
$ll
-----------------------------------------------------------------------------
chmod - 허가권 변경 (change mode)
두가지 모드로 허가권을 변경 할 수 있다.
1. 기호모드 (상대값) (Symbolic Method) - 사람의 입장
2. 숫자모드 (절대값) (absolute Method) - 컴퓨터의 입장
기호모드
+ : 허가 권한 부여 u : 사용자(소유자) 권한
- : 허가 권한 제거 g : 그룹 권한
= : 허가 권한 유지 o : 기타 사용자
s : SetUID, SetGID a : 사용자, 그룹, 기타 사용자 모두
t : StickyBit
기호모드는 대상 (u, g, o, a)에 대하여 rwx권한을 부여할 것인가 제거할 것인가를
모두 기호로 설정 하는 것
ex) dongsam -> rwx r-x r-x
1. 기타사용자의 x권한을 제거
chmod o-x dongsam
2. 그룹사용자의 쓰기, 기타사용자 쓰기권한 추가
기존 -> rwx r-x r--
chmod g+w,o+w dongsam -> rwx rwx rw-
기호모드
+ : 허가 권한 부여 u : 사용자(소유자) 권한
- : 허가 권한 제거 g : 그룹 권한
= : 허가 권한 유지 o : 기타 사용자
s : SetUID, SetGID a : 사용자, 그룹, 기타 사용자 모두
t : StickyBit
1. chmod_symbolic 파일의 소유자와 그룹과 기타 사용자에 실행권한 추가
#chmod a+x chmod_symbolic
#chmod u+x,g+x,o+x chmod_symbolic
#ll -> rwx r-x r-x
2. 그룹에 쓰기 권한 추가
#chmod g+w chmod_symbolic
#ll -> rwx rwx r-x
3. 그룹에 쓰기, 실행권한 제거, 읽기만 가능하게 설정
#chmod g-wx chmod_symbolic
------------------------------------------------------------------------------
숫자모드 - 각각의 허가권 필드를 3자리의 8진수로 표기
- 완전한 표기법은 4자리이나 일반적으로 3자리를 사용
2진수 표기 - 1 해당 권한 부여
0 해당 권한 해제
사용자 필드 사용자 그룹 기타 사용자
허가권 r w x r w x r w x
자리수 4 2 1 4 2 1 4 2 1
2진수 1 1 1 1 1 1 1 1 1
8진수 7 7 7
r w x r - - r - x
1 1 1 1 0 0 1 0 1
7 4 5
chmod 745 [파일명] - > rwx r-- r-x
r - x r - x - - -
1 0 1 1 0 1 0 0 0
4 1 4 + 1 0
5 5 0
r w - - - x - w -
6 1 2
rwx rwx rwx -> 숫자모드 (777)
rwx r-x r-x -> 숫자모드 (755)
rwx r-- --- -> 숫자모드 (740)
/home/real_mardrid
messi 계정은 접근 불가능
ronaldo 해당디렉토리 접근 가능, 파일 목록 출력 가능
ronaldo 계정이 chmod_symbolic 수정 가능하게 설정
#chmod -R 000 /home/real_madrid
#chown -R root:root /home/real_madrid
real_madrid 디렉토리 소유자 root 그룹 root
계정 : ronaldo (그룹:RM)
d --- --- --- real_madrid root root
- --- --- --- chmod_symbolic root root
#chown ronaldo: real_madrid
d --- --- --- real_madrid ronaldo root
#chmod 500 real_madrid
d r-x --- --- real_madrid ronaldo root
#chmod chmod_symbolic
#mkdir perm_test
#chmod 000 perm_test // --- --- ---
#cd /perm_test
#touch test_file
#chmod 000 test_file // --- --- ---
#mv perm_test / //perm_test 디렉토리 최상위로 '/' 이동
세션 하나 추가 후, 일반 사용자 계정으로 로그인 (ronaldo)
#ll /perm_test // d --- --- --- root root
ronaldo 계정이 /perm_test 디렉토리로 이동하기 위한 최소 권한 설정 (chmod 사용)
$cd /perm_test 명령이 실행이 되도록 설정
#chmod 001 /perm_test // --- --- --x
// 디렉토리 접근을 위해서는 최소 x 권한은 필요
$ls // 파일 목록 출력 불가능
#chmod 005 /perm_test // 디렉토리내 파일 목록 확인
// --- --- r-x
$ls // 파일 목록 출력 가능
// 디렉토리 파일을 보기위해서는 r 권한이 필요
$tocuh test1 // 해당 디렉토리 내에서 파일 생성 test
#chmod 007 /perm_test // 쓰기 권한 추가
$touch test1 // 파일 생성 테스트
// 파일 생성을 위해서는 w 권한이 필요