목차
1. 리눅스 파일 상세 정보
- "ll" 또는 "ls -l"로 파일의 상세 정보를 확인할 수 있습니다.
- alias ll='ls -l --color=auto'
- 파일 상세 정보(파일 유형, 퍼미션 정보, 링크 수, 소유자, 소유 그룹, 용량, 수정시간, 파일명)
# ls -l
합계 0
lrwxrwxrwx 1 root root 7 10월 9 15:00 ln_file -> test.sh
drwxr-xr-x 2 root root 6 10월 9 14:59 test
-rwxr-xr-x 1 root root 12 10월 9 15:35 test.sh
1.1. 파일 정보
- 위에 명령어처럼 "ll" 또는 "ls -l"로 파일의 상세 정보가 출력됩니다.
- test.sh 파일의 정보를 살펴봅시다.
-rwxr-xr-x 1 root root 12 10월 9 15:35 test.sh
- 유형
(d 디렉터리, l(소문자 L) 링크 카운터, s 소켓, p 파이프, - 일반, c 특수문자, b 특수 블록) - 파일 권한 (permission)
- 링크 수
- 소유자
- 소유 그룹
- 용량 (기본 byte)
- 수정 시간
- 파일명
1.2. 파일 권한(퍼미션)
- 리눅스는 여러 사용자가 사용하는 멀티 유저 시스템입니다.
- 여러 사용자가 함께 사용하므로 변조, 수정, 삭제, 보안 등을 위해 파일에 대한 권한이 필요합니다.
1.2.1. 퍼미션의 종류
★ 숫자는 해당 권한을 8진법으로 나타냈을 때의 값입니다.
- r (읽기 권한) = 4
- w (쓰기 권한) = 2
- x (실행 권한) = 1
★ 특수 권한으로 몇 가지가 더 있습니다. (이 게시물에서는 다루지 않습니다.)
- s (SetUID, SetGID 권한) = SetUID(4), SetGID(2)
- t (Sticky Bit 권한) = 1
1.2.2. 퍼미션의 사용자(대상)
- user (사용자 권한)
- group (그룹의 사용자 권한)
- other (사용자, 그룹이 아닌 다른 사용자 권한)
1.2.3. 퍼미션 표현
- 위에서 조회한 "test.sh" 파일의 퍼미션입니다. (rwxr-xr-x)
- r(read), w(write), e(excute)
- 퍼미션 값은 세 자리씩 끊습니다.
- 순서대로 user, group, other에 대한 퍼미션 값입니다.
- 처음 3개 문자 = user의 권한(모든 권한), 중간 3개 문자 = group의 권한(읽기, 실행), 마지막 3개 문자 = other의 권한(읽기, 실행)
- 퍼미션은 8진수로도 표현할 수 있습니다. (각 사용자별 권한의 합계)
- r(4), w(2), e(1)
2. chmod
# chmod [옵션] [모드] [파일]
[옵션]
-c, --changes : 권한 변경이 올바로 일어난 파일들만 자세하게 보여준다.
-f, --silent, --quiet : 권한 변경이 일어나지 않을 경우 보여주는 오류 메시지를 보이지 않게 한다.
-v, --verbose : 각 파일들의 모드 변경 상태를 모두 보여준다.
-R, --recursive : 파일과 그 디렉토리의 아래까지 모두 바꾼다.
[모드]
Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'.
파일에 적용할 모드(mode) 문자열
u,g,o,a : 소유자(u), 그룹(g), 그 외 사용자(o), 모든 사용자(a) 지정.
+,-,= : 권한 부여(+), 권한 박탈(-), 권한 지정(=)
r,w,x : 읽기 권한(r), 쓰기 권한(w), 실행 권한(x)
X : "디렉토리" 또는 "실행 권한(x)이 있는 파일"에 실행 권한(x) 적용.
s : setuid, setgid
t : sticky(t) bit
0~7 : 8진수 형식 모드 설정 값.
//8진수 모드 권한 변경
# chmod [퍼미션 값] [파일]
# chmod [0-7] [파일]
//문자 모드 권한 변경
# chmod [옵션] [대상] [연산자] [권한] [파일]
# chmod [옵션] [ugoa] [-+=] [rwx-] [파일]
2.1. 8진수 모드 예시
- 8진수 모드는 read(4), write(2), excute(1)를 8진수 형태로 바꾸는 것을 이용해서 user, group, other에 대한 파일 권한 표현입니다.
- 퍼미션의 대상(user, group, other) 별로 각 퍼미션 기호를 8진수의 숫자로 변경 후 변환한 숫자를 합산합니다.
- 예시) user(rwx), group(r-x), other(r-x) = (4+2+1) (4+1) (4+1) = 755(퍼미션 값)
// user, group other 모든 권한을 부여
# chmod 777 test.sh
// user, group other 모든 권한을 박탈
# chmod 000 test.sh
// user은 모든 권한 group, other 읽기, 실행 권한
# chmod 755 test.sh
// user은 읽기, 쓰기 권한
// group, other 읽기 권한
// 특정 디렉터리 내에 모든 파일 까지 권한을 부여(-R)
# chmod -R 644 test_dir/
2.2. 문자 모드 예시
- "대상 + 권한 연산자 + 권한" 세 문자열을 이용해 권한을 부여 및 박탈합니다.
- 권한 대상 : u(user 소유자), g(group 그룹), o(other 다른 사용자), a(all 모든 사용자)
- 권한 연산자 : +(권한 부여), -(권한 박탈), =(권한 지정)
- =(권한 지정)은 현재 파일의 상태를 신경 쓰지 않고 새롭게 권한을 부여를 하는 것입니다.
- +(권한 부여), -(권한 박탈)은 현재 파일의 권한 상태를 바탕으로 부여 또는 박탈하는 것입니다.
- 권한 : r(read), w(write), x(excute)
- 만들어진 문자열은 공백(Space)이 있으면 안 됩니다.
- 예시) user에게 읽기, 실행 권한을 부여 = u+rx
// user(소유자)에게 모든 권한을 부여합니다.
# chmod u+rwx test.sh
// other(다른 사용자)에게 쓰기, 실행 권한을 박탈합니다.
# chmod o-wx test.sh
// all(모든 사용자)에게 모든 권한을 박탈합니다.
# chmod a-rwx test.sh
// group(그룹), other(다른 사용자)에게 실행 권한을 부여합니다.
# chmod go+x test.sh
# chmod g+x,o+x test.sh
// user(소유자)에게 읽기, 쓰기권한 | group(그룹)과 other(다른 사용자)에게 읽기 권한만 부여 합니다.
# chmod u=rw,go=r test.sh
# chmod u=rw,g=r,o=r test.sh
// user(소유자)는 읽기, 쓰기 권한 | group, other 읽기 권한
// 특정 디렉터리 내에 모든 파일 까지 권한을 부여합니다.(-R)
# chmod -R u=rw,g=r,o=r test_dir/
'OS > Linux' 카테고리의 다른 글
[Linux] RedHat6, CentOS6 root 비밀번호 분실 (root 비밀번호 초기화) (0) | 2021.11.18 |
---|---|
[Linux] 리눅스 파일 소유자 변경하기 - chown (0) | 2021.10.10 |
[Linux] 리눅스 ssh 동작 방식, 설치 및 사용법 (0) | 2021.10.06 |
[Linux] 리눅스 계정 관련 파일의 필드 정보 ( /etc/passwd ) (0) | 2021.10.05 |
[Linux] 리눅스 시그널 명령어(프로세스 종료) - kill (0) | 2021.10.03 |