Linux

chmod - 파일 권한 설정

비번변경 2021. 6. 8. 19:16
chmod; Chagne Mode
파일이나 디렉터리의 파일 시스템 모드를 변경한다.

 

Linux는 기본적으로 새로 만들어진 파일 권한을 어떻게 설정할지 제어하는 umask 설정에 따라 초기 파일 권한을 부여한다. 여기서 파일 권한은 읽기, 쓰기, 실행 권한을 말하는데 보통 실행 권한은 주지 않도록 설정되어있다. 따라서 스크립트 파일을 만들면 실행 권한을 별도로 주어야 하는 일이 종종 있다.

 

이렇게 파일이나 디렉터리의 권한을 변경할 때 chmod 명령을 사용한다.

 

파일 권한

파일 권한은 아래 명령으로 확인할 수 있다.

두 명령은 같은 명령으로, ls -l 명령을 간편하게 사용할 수 있도록 ll이라는 alias를 준 것이다.

ll

# 또는
ls -l

이 정보에서 처음 10개 문자가 파일/디렉터리 권한에 대한 정보이다.

파일/디렉터리 소유자 권한

첫 문자는 디렉터리인지 파일인지에 대한 정보를 d/-로 표시하며, 그 문자 3개씩 파일 소유자/그룹 사용자/기타 사용자의 권한을 표시한다. 각 문자는 읽기/쓰기/실행(Read/Write/eXecution) 권한을 의미하며, 권한이 있으면 해당 권한 자리에 값을 표시하여 보여준다.

또 권한 문자 3개는 3자리의 이진수처럼 취급되기도 하는데 마찬가지로 권한이 있으면 해당 권한의 자리를 1로, 권한이 없으면 0으로 취급한다.

파일/디렉터리 소유자 권한 이진수

따라서 test.sh의 권한은 8진수로 664라고 읽을 수 있다.

 

파일 권한 설정

문자열 모드

파일 소유자와 그룹 사용자가 test.sh를 실행할 수 있도록 권한을 주려고 한다.

chmod [references][operator][modes] file1…
# -R : 하위 폴더/디렉터리 포함 적용 

# 예시
chmod ug+x test.sh

references

레퍼런스 클래스 설명
u 사용자 파일 소유자
g 그룹 사용자 그 파일의 그룹 멤버의 사용자
o 기타 사용자 파일 소유자나 파일 그룹 멤버가 아닌 사용자
a 모든 사용자 ugo와 같다.

operator

연산자 설명
+ 지정한 클래스에 지정한 모드를 추가한다.
- 지정한 클래스에서 지정한 모드를 삭제한다.
= 지정한 클래스의 모드를 지정한 모드로 변경한다.

modes

모드 이름 설명
r 읽기 파일을 읽거나 디렉터리 내 리스트를 보여준다.
w 쓰기 파일이나 디렉터리를 쓴다.
x 실행 파일을 실행한다.

예시 실행 결과

chmod ug+x

기본의 권한에서 파일 소유자와 그룹 사용자에게 실행 권한이 부여되었음을 확인할 수 있다.

 

8진수

파일 권한은 8진수나 이진수로 취급할 수 있기 때문에 8진수를 사용하여 권한을 부여할 수도 있다.

위의 예시 실행 결과의 사진을 참고하면, test.sh의 권한은 774로 주어져있다. 정말 그런지 확인해본다.

chmod [modes] files…
# -R : 하위 폴더/디렉터리 포함 적용 

# 예시
chmod 774 test.sh

ll

774로 권한을 주었더니 기존과 동일한 권한을 유지하고 있다.

다른 사용자의 권한은 유지하되, 그룹 사용자에게는 읽기 권한만 유지하려고 한다.

chmod 744

읽기 권한만 남은 것을 확인할 수 있다.

8진수로 권한을 줄 때는 각 사용자의 대한 권한을 한꺼번에 지정해주어야 한다.

보통 파일 소유자만 파일을 수정할 수 있도록 그리고 읽기/실행은 모든 사용자가 할 수 있도록 755로 권한을 많이 준다.

728x90