set [옵션] noclobber
--> 현재 있는 디렉터리에서 파일 내용을 겹쳐 쓰이는 상황을 막거나 풀 수 있는 명령
-o : 현재 디렉터리 내에서 엎어쓰기(리다이렉션) 안됨
+o : 현재 디렉터리 내에서 엎어쓰기(리다이렉션) 허용
길이가 긴 명령어나, 자주 쓰는 명령어를 입맛대로 사용하기 위해 다른 이름을 붙이는 기능
#HISTORY 관련 변수들
HISTSIZE : 생략
HISTFILE : 명령줄을 기록하는 파일의 위치
HISTFILESIZE : 히스토리 기록하는 파일의 크기 제한
#변수에 값을 저장하는 방법
변수=값
HISTFILE=/root/HF ==> HISTFILE 값이 /root/HF
HISTSIZE=500 ==> HISTSIZE값이 500
a == b : a와 b는 값이 같다
a = b : a는 b다
#.bashrc
alias나 기타 배시 셸을 이용할 때 필요한 설정들을 담는 개인 파일
기본적으로 /etc/bashrc를 우선적으로 참고한 후에 적용
#.bash_profile
환경변수나 시스템적인 설정들을 넣어주는 파일
#.bash_logout
시스템을 종료하거나 셸에서 빠져나갈 때, 실행할 스크립트
! 모든 설정파일은 새로 로그인하거나, source 명령어를 통해서 적용
다른 셸들의 경우도 각각 ~rc라는 이름으로 설정파일이 위치
ex).cshrc / .tcshrc
리눅스 ==> multi-user, 다중 로그인 작업 환경이기 때문에 각자의 계정, 그룹에 대한 권한을 설정해서 파일을 관리
#접근 권한의 대상
-소유자 --> 해당 파일을 만든 사람이 기본, 유저
-소유그룹 --> 해당 파일을 만든 유저가 속한 그룹이 배당
-other, 기타 --> 그 외 모두
#리눅스 사용자 계정
계정이 생성되면 계정의 이름으로 그룹이 생성됨
그리고 각각의 계정과 그룹은 고유한 번호를 갖게 됨
#권한설정의 대상은 기본적으로 개인이 아닌 그룹
#접근 권한의 종류
rwx ==> 읽고 쓰고 실행하기
쓰고 ==> 쓰고 지우고 만들고
실행하기 ==> 명령어를 실행하는 것까지(디렉터리나 스크립트 파일)
일반파일 ?? ==> 기본적으로 스크립트 용으로 사용하는게 아닌 이상,실행이 X
#stat
파일의 정보들을 모두 보여주는 상세한 조회 명령
#기본 접근 권한
파일이나 디렉터리가 생성될 때, 기본적으로 부여되는 권한
umask를 전체 권한에서 뺀 것.
디렉터리는 777이 전체 권한, 파일은 666이 전체 권한
#umask
umask라고 쳐서 현재 접근 권한 마스크 값을 출력하고 umask [제한 값]으로 생성 시, 부여될 기본 권한을 제어
업무적으로는 활용할 일이 거의 없지만, 권한의 역할을 알고있어야함
SetUID
파일이 실행되는 동안, 소유자의 권한을 빌려와서 사용.
주로 root의 권한을 빌려오기 위해 사용하는 경우가 많으며 해당 권한을 가진 파일들의 목록을 꾸준히 모니터링 할 필요가 있음(root의 권한이 누출되는 것을 모니터링 하는 용도) 부여 시, 실행권한이 x --> s로 변경, 기본적으로 실행권한이기 때문에 x가 부여되지 않은 채로 부여 시, S로 오류 표기
SetGID
파일이 실행되는 동안, 그룹의 권한을 빌려옴
그룹의 실행권한 위치에 x ==> s로 변경 됨.
해당 권한이 설정된 디렉터리에서 새로운 디렉터리 파일을 생성시, 권한이 물림되는 문제 때문에 모니터링 대상
Sticky Bit
디렉터리 대상으로 지정, 설정이 되어있는 디렉터리에는 누구나 파일 생성이 가능(-->1777)
파일은 파일을 생성한 소유자가 설정되고, 다른 사용자가 생성한 파일은 삭제 불가
chmod보다 더 상세하게 파일 접근권한을 지정할 수 있음.
특정 유저, 혹은 그룹에 대해서 접근권한을 지정 가능
(기본권한들을 따로 건들지 않아도 됨)
파일을 이용한 관리도 가능
#getfacl [옵션][대상(타겟)]
--> 해당 대상의 acl 접근제어 목록을 조회
조회용으로도 사용 가능하지만 리다이렉션(>)기능을 사용해 ACL 파일을 만드는 용도로도 사용
#setfacl [옵션][권한] [대상]
대상의 접근제어를 관리
-m : ACL 설정 및 수정
ex) setfacl -m u:doug:rwx LABs
-x : ACL 삭제
ex) setfacl -x u:doug LABs
-b : 모든 ACL 제거
ex) setfacl -b LABs
-R : 하위 파일에 대해서도 동일 적용
--set-file [적용시킬 파일] : 해당 파일의 ACL 내용을 적용
ex) setfacl --set-file LABs_acl /BACKUP/
#mask
해당 디렉터리에서 허용 가능한 최대 권한 값
미지정시, 처음 줄 때 모든 권한 중 최대 값을 마스크로 적용하고 별도 지정도 가능
#default
디렉터리에만 적용 가능, 해당 디렉터리에서 생성되는 파일들의 기본접근권한을 지정, umask보다 우선 적용
!_특수권한은 acl 명령을 통해서 지정 불가
acl의 목적이 특정 대상.을 지정해서 권한을 부여하는 것이기 때문에, 계정의 권한을 빌려주는 특수권한들과는 목적성이 다름
#최소 권한의 원칙
권한을 특정 대상에게 부여할 때, 그 대상이 처리해야할 업무와 관련된 최소한의 경계만을 부여
시스템의 계정들의 정보를 담은 문서
UID, GID, 홈디렉터리, 사용하는 셸 등의 정보가 담겨있다.
!!_+리눅스의 모든 계정들은 생성과 동시에 그룹을 갖게 된다. 별도의 지정이 없으면 계정이름과 동일한 이름의 그룹을 갖게된다.
주로 .deny이 같이 블랙리스트 관리문서에 계정을 등록할 때, awk 명령과 함께 조합해서 사용하는 경우가 잦음
ex) awk -F ":" '{print $1}' /etc/passwd
시스템 그룹들이 기록된 문서
그룹명:비밀번호:그룹ID:해당 그룹에 포함된 다른 계정들
!_모든 계정들은 본인 소유의 주그룹 1개와 서브그룹들을 무한정 가질 수 있음
시스템 계정들의 비밀번호가 위치한 문서
읽기 전용 문서로 직접 수정은 지양
로그인명/암호/암호변경일/최소유지일자/최대사용기간/암호만료 전 경고일자/암호 만료 후에도 로그인이 가능한 기간
#비밀번호 부분
6 --> 어떤 암호화 기법을 사용했는지
MD5 == 1, 단방향, 입력값에 대해서 고정 길이로 출력
blowfish == 2, 대칭형 블록 암호
sha256 == 5, 고정길이로 문자열을 변환, 2의 256제곱개의 가짓수가 있음
sha512 == 6, 고정길이로 문자열을 변환, 2의 512제곱개의 가짓수가 있음
!_문자열을 받아서 고정된 길이의 문자열로 변환해주는 것을 해시라고 한다.
!_shadow와 passwd로 굳이 구분하는 이유
DB나 시스템 어플리케이션들이 사용자 계정을 참고해야 할 때가 있음. 이런 경우에 시스템 ID만 필요한데 두 파일이 함께 있던 과거에는 이런 어플리케이션을 타고서 암호가 유출되는 과정들이 있었다.해서 최근 들어서 두 파일을 분리해서 관리하고 shadow에 대해서만 read-only로 관리
#useradd:사용자를 추가하는 명령어
useradd [옵션][추가할 계정명]
-n : /etc/default/useradd 에 적힌 group을 본인의 그룹으로 지정
-g : GID 지정해서 생성 (이미 있는 그룹에 대해 지정)
-G : 서브그룹 지정 (,(쉼표)를 사용해서 여러 그룹에 등록가능)
-u : UID 지정해서 생성 (이미 있는 계정 ID에 대해서 지정불가, -o를 사용시, 중복 가능)
-d : 홈 디렉터리를 지정
-D : 현재 적용된 useradd 파일 내용을 보여줌
-e : 유효기간 지정(만료일자)
-f : 비활성 일자 날짜로 지정
-k [디렉터리] -m : 계정 생성 시, 해당 디렉터리를 /etc/skel처럼 뼈대로 인식(-m을 같이 써줘야 생성)
-m : 유저의 홈 디렉터리를 생성할 거라는 옵션
#userdel : 계정을 지우는 명령어
단독 사용 시, 홈 디렉터리와 계정 메일은 남게 된다.
그래서 -r 옵션을 함께 사용
#usermod
usermod [옵션][대상]
-g(roup) : 기본그룹 변경 (이미 있는 그룹에 대해 지정)
-G(roup) : 서브그룹 추가 지정
-u(ser) : UID 수정 ( 이미 있는 계정 ID에 대해서 기본값은 지정불가, -o를 사용시 중복이 가능해짐)
-d(irectory) : 홈 디렉터리를 변경 (-m을 사용하고 없던 경로를 지정하면 해당 위치로 기존 홈디렉터리를(파일도) 옮김)
-e(xpire) : 유효기간 지정(만료일자)
-f(in) : 비활성 일자 날짜로 지정
-m(ake) : 유저의 홈 디렉터리를 생성할 거라는 옵션
-l(ogin ID) : 로그인 ID를 수정할 수 있음
-L(ock) : 계정 잠금 ( <-> U 옵션으로 풀 수 있음 )
#userdel = 계정 삭제
userdel [계정] ==> 홈디렉터리, 메일파일이 잔존
userdel -r [계정] ==> alias userdel='userdel -r'
#passwd : 비밀번호 관련 명령어
passwd [옵션][대상계정]
-l(ock) : 해당 계정의 비밀번호를 잠금
-(mi)n : 최소 사용기간 설정
-(ma)x : 최대 사용기간 설정
-w(arnning) : 만료 전 경고일자 지정
-i(nactiv) : 만료 뒤, 유예기간 지정
-e(xpire) : 만료일 지정( i, w, n, x 등과 같이 사용 x)
#groupadd : 그룹을 생성하는 명령어
-g : gid 지정
#groupmod : 그룹을 수정하는 명령어
-g : gid 변경
-n(ame) : 그룹의 이름변경
-o(k) : 중복 허용
#groupdel : 그룹 삭제
-f(orce) : 강제 삭제
#gpasswd : 그룹의 비밀번호를 달아주는 명령
-a [계정] : 해당 계정을 그룹에 추가
-d [계정] : 해당 계정을 그룹에서 제거
#이스케이프 문자를 활용한 PS1 커스터마이징
-이스케이프 문자
해당 문자가 갖고 있는 본래의 기능을 탈락시키고 다른 기능적 의미로 사용하는 문자들
\d ==> 요일 월 일 형식으로 날짜를 표시
\e ==> [\e[글자색m]사용하고 뒤에 올 글자들의 색상을 지정
\h ==> 호스트의 이름
\s ==> 현재 사용하고 있는 셸
\t ==> 24시간 형식으로 현재 시간을 표시 (HH:MM:SS)
\T ==> 12시간 형식
\u ==> 사용자의 이름
\W ==> 현재 작업하고 있는 디렉터리 이름
\w ==> 현재 작업하고 있는 디렉터리의 절대경로