리눅스 파일의 특성 (대부분의 특성이 윈도우 파일과 다르다.)
- 확장자가 의미를 가지지 않는다. (원래 .txt , .exe , .mp4 등의 확장자는 파일의 내용이 어떤 종류인지를 의미한다.)
- 대소문자를 구분한다. (윈도우의 cmd에서는 대소문자 구분을 하지 않는다.)
- 소유권(ownership)과 허가권(permission)을 가진다. (이는 사실 윈도우에도 있는 특징이다.)
아래에서 예제를 통해 진짜인지 확인해보겠다.
js.txt 파일에서 .txt는 종류를 나타내는 것이 아닌 그저 이름일 뿐이다.
참고) touch는 파일을 생성하는 명령어이다.
file 명령어를 사용하면 그 파일의 종류를 확인할 수 있다.
보다시피 js.txt 파일은 빈 파일이다.
리눅스 파일의 종류
- 디렉토리 파일 (디렉토리는 정확히 하위에 있는 파일들의 목록을 가진 파일이다.)
- 장치 파일 (모든 장치를 파일(device file) 형태로 입출력)
- 일반 파일 (regular file : 정규 파일)
소유권 변경
소유권은 그 파일의 소유자이거나, 그 파일의 소유 그룹이거나, 기타 사용자(other)로 분류된다.
소유권을 바꾸는 것은 root(관리자)만 가능하다.
chown이라는 명령어를 사용해 소유권을 바꿀 수 있다.
chown은 change owner의 약자로, root 권한으로만 실행 가능하다.
chgrp이라는 명령어를 사용해 소유 그룹을 바꿀 수 있다.
change group의 약자로, root 권한으로만 실행 가능하다.
하지만 chgrp는 잘 쓰지 않는다.
chown worker1:worker1 profile.old 의 형식으로 chown을 통해 한번에 소유자와 소유 그룹을 변경할 수 있기 때문이다.
chown worker1.worker1 profile.old 도 같은 뜻이다.
chown .kim profile.old 이러한 명령으로 소유자가 아닌 소유 그룹만 변경할 수 있다.
tail /etc/passwd : 사용자 계정 정보 확인
tail /etc/group : 사용자 그룹 정보 확인
허가권(permission) 변경
리눅스에서는 일반 파일의 권한과 디렉토리의 권한이 다르다.
파일 권한
r : read(읽다) - 내용을 볼 수 있는 권한
w : write(쓰다) - 내용을 수정할 수 있는 권한
x : eXecute(실행하다) - 파일을 명령어처럼 사용할 수 있는 권한
shell script - 파일을 명령어처럼 사용하여 반복되는 명령어를 줄일 수 있다. (x를 사용한 획기적 명령)
디렉토리 권한
r : read(읽다) - 내용을 볼 수 있는 권한 (ls)
w : write(쓰다) - 내용을 수정할 수 있는 권한 (디렉토리 목록 수정은 생성/삭제를 할 수 있느냐와 같다)
x : eXecute(실행하다) - 해당 디렉토리를 현재 디렉토리로 만들 수 있는 권한 (cd 명령어와 함께)
(ls -l 파일명 명령을 실행했을 때, 맨 처음 컬럼의 첫 번째 글자를 제외한 나머지 9글자는 접근 권한을 나타낸다.)
rw- r-- r-- (세 글자씩 끊어서 읽는다)
위에서 세 글자씩 끊어 읽으면
rw- : 소유자가 가지는 권한 (앞 세 글자)
r-- : 소유 그룹이 가지는 권한 (중간 세 글자)
r-- : 기타 사용자가 가지는 권한 (뒤 세 글자)
chmod는 change mode의 약어로, 접근 권한의 변경을 의미한다.
1) 기호 모드
#chmod 사용자 연산자 권한 파일이름
#chmod u+r filename
g-w filename
o=rw filename
a
#chmod g+rw,o=r filename
소유자(u), 소유 그룹(g), 기타(o), 모두(a)
더하기(+), 빼기(-), 교체(=)
2) 8진수 모드
위 기호 모드는 복잡하기 때문에, 요즘 거의 모두 8진수 형태로 권한을 말한다.
rwx rw- r--
111 110 100
7 6 4
rwxr--rw- = 746
755 = rwxr-xr-x
640 = rw-r-----
444 = r--r--r--
621 = rw--w---x
777 = rwxrwxrwx (777은 좋은 권한 설정은 아니지만 오류를 잡기 위해서 쓰이기도 한다)
이런 식으로 쓰인다. (사용 빈도가 정말 높으니 꼭 연습해두자.)
umask는 파일 혹은 디렉토리의 처음 권한을 설정할 때 쓰는 명령어이다.
umask는 제외할 권한이다.
무슨 소린지 아래 예제에서 보겠다.
(파일은 디렉토리와는 다르게 (예외로) 처음 만들어질 때 실행(x)이라는 권한을 가지지 못하도록 되어있다.)
umask 값이 022일 때
디렉토리 초기 권한 : 777 - 022 = 755 (rwx r-x r-x)
파일 초기 권한 : 666(rw- rw- rw-) - 022 = 644 (rw- r-- r--)