리눅스의 가장 큰 특징은 다중 유저, 다중 작업
여러 유저가 여러 작업을 진행하기 때문에 보안이 중요함
따라서 유저/그룹마다 최소한의 권한만을 부여하는 것이 중요한데, 이를 할 수 있는 것이 permission
permission 구조
-rw-rw-r--
첫번째 공간 - d
: 디렉토리 | l
: 심볼릭링크 | 없으면 파일
3개씩 끊어서 사용자/그룹/기타(사용자도 그룹에도 속하지 않음) 의 권한
rw
rw
r
*각 문자가 뜻하는 바
r
= readable
w
= writable
x
= executable
permission 변경
8진수 모드 : chmod [8진수 3자리] 파일명
심볼릭 모드 : chmod [(u,g,o)(+, =, -)(r, w, x)] 파일명
8진수 모드
8진수로 rwx
나타내기
순서대로 4(), 2(), 1() 을 나타냄
ex) -rwxrw-r-x
-> 4+2+1 = 7
| 4+2 = 6
| 4+1 = 5
=> chmod 765 filename
심볼릭 모드
u
= user
g
= group
o
= other
+
= 기존 권한에 추가
-
= 기존 권한에 제거
=
= 새로운 권한 부여
ex) chmod go-rwx filename
chmod u+x,go+r filename
chmod a=r filename
모든 사용자에게 읽을 권한 부여 (기존 권한과 상관없이 그냥 -r--r--r--
로 변경)
chmod u=rw filename
기존 권한과 상관없이 변경 -> 유저 기존 권한이 r-x
라고 했을 때 rw-
로 변경됨
-R
옵션 사용시 하위 디렉토리와 그 파일들 까지 권한이 모두 변경됨
파일 생성시 기본 권한을 설정함
기본 권한의 설정을 XOR 연산으로 구현함
사용 이유
파일 생성 때마다 권한 설정을 하나하나 해주기 불편하기 때문에 umask 로 기본 권한을 설정한 것
이를 이용하여 불필요한 사용자가 권한을 받지 못하도록 기본 설정 변경 가능함
예시
일반적으로 유닉스에서는 022
로 설정
파일의 최대 권한은 666
디렉토리의 최대 권한은 777
umask 로 XOR 연산 -> 파일 권한은 644
/ 디렉토리의 권한은 755
사실 그냥 777-022 이렇게 각자리 수 빼기하면 됨
~
: 틸드 메타 문자, 사용자의 홈디렉토리
파일 이름 대체 문자
*
-> ls *A
: _A를 포함한 파일 찾기 (앞에 자릿수는 중요치 않음)
?
-> ls f???A
: f___A 형식으로 이루어진 파일 찾기
[]
-> ls dir[A-S]
: [0-9], [AX] (A 또는 X) 등 도 가능
인용부호 메타문자
echo
: argument 로 오는 문자열 출력
' '
: 이 안에 있는 모든 메타 문자를 일반 문자 취급
# echo $USER
jin
# echo '$USER'
$USER
" "
: $, `, \ 를 제외한 나머지 메타문자 일반 문자 취급
# echo "?$USER*"
?USER*
# echo "$USER"
root
` ` : 특정 명령어의 결과 출력
# echo `date`
Friday, January 10, 2014 09:39:26 AM UTC
# echo "The current time is 'date'"
The current time is Friday, January 10, 2014 09:39:26 AM UTC
#echo "The current time is $(date)" //위 명령어와 같은 결과 출력
The current time is Friday, January 10, 2014 09:39:26 AM UTC
방향재지정 메타문자
입력 장치, 출력 장치를 다른 곳으로 재지정
>>
: 명령어의 결과를 파일에 작성함
>
: 파일에 내용이 있더라도 덮어씌움
<
: 표준 입력을 키보드가 아닌, 파일로 입력 가능
cat
명령어만 치면 입력을 받을 수 있게 바뀜. 이를 아래와 같이 하면 파일을 입력으로 할 수 있음
# cat < /etc/hosts // command < filename
# host 내용 아래에 좌라락 나옴
# ...
|
: 명령어 표준 출력을 또 다른 명령어의 표준 입력으로 받음
# ps -ef | grep bash //command | command
"bash" 패턴 들어가는 결과만 보기