Snow flake

[command] chmod 명령어 본문

Programming/Linux

[command] chmod 명령어

MAYSON 2026. 9. 6. 22:07
반응형

chmod 명령어는 Change Mode의 약자로, 파일이나 디렉토리의 권한(permission)을 변경하는 명령어입니다. 리눅스에서는 모든 파일과 디렉토리에 읽기(read), 쓰기(write), 실행(execute) 권한이 소유자(user), 그룹(group), 기타 사용자(other) 단위로 각각 부여되어 있는데, chmod는 이 권한을 조정할 때 사용합니다.

 

# 권한 확인
ls -l

# 결과 예시
-rwxr-xr-- 1 oracle dba 0 Nov  5 10:00 readme.txt

위 결과에서 앞의 10자리 중 rwx / r-x / r-- 세 그룹이 각각 소유자(user), 그룹(group), 기타(other)의 권한을 의미합니다. r은 읽기, w는 쓰기, x는 실행 권한이고, 권한이 없으면 -로 표시됩니다.

 

숫자(8진법) 방식

가장 많이 쓰이는 방식으로, r=4, w=2, x=1 값을 더해서 권한을 지정합니다.

# 사용법
chmod [숫자] [파일명, 디렉토리]

# tuxdirs 디렉토리에 소유자, 그룹, 기타 모두 전체 권한 부여
chmod 777 tuxdirs

# 소유자는 읽기/쓰기, 그룹과 기타는 읽기만 가능하도록 설정
chmod 644 readme.txt

# 소유자만 전체 권한, 나머지는 권한 없음
chmod 700 secret.sh

숫자 하나가 소유자, 그룹, 기타 순서대로 각각의 권한을 나타내며, 4(r) + 2(w) + 1(x) 조합으로 원하는 권한 값을 만들 수 있습니다.

 

문자 방식

기존 권한에서 일부만 추가하거나 제거할 때 유용한 방식입니다.

# u(소유자)/g(그룹)/o(기타)/a(전체) + (추가) - (제거) = (지정)

# 소유자에게 실행 권한 추가
chmod u+x script.sh

# 그룹의 쓰기 권한 제거
chmod g-w data.txt

# 전체 사용자에게 읽기 권한만 지정
chmod a=r public.txt

숫자 방식은 권한을 통째로 지정할 때, 문자 방식은 기존 권한을 유지하면서 일부만 바꿀 때 편리합니다.

 

옵션

# -R : 디렉토리 내부 파일, 하위 디렉토리까지 재귀적으로 적용

chmod -R 755 /home/oracle/scripts

디렉토리 하나에만 적용하고 싶다면 옵션 없이, 그 안의 모든 파일까지 한 번에 바꾸고 싶다면 -R 옵션을 사용하면 됩니다.

 

실무에서 주의할 점

chmod 777은 모든 사용자에게 전체 권한을 열어주는 것이라 테스트 환경에서는 편하지만, 운영 서버에서는 보안상 지양해야 하는 설정입니다. 필요한 최소한의 권한만 부여하는 것이 원칙입니다.

또한 쉘스크립트 파일을 작성한 뒤 실행이 안 돼서 당황하는 경우가 많은데, 대부분 실행 권한이 없어서 발생하는 문제입니다.

# Permission denied 발생 시
./deploy.sh
-bash: ./deploy.sh: Permission denied

# 실행 권한 부여 후 재시도
chmod +x deploy.sh
./deploy.sh

 

파일을 만든 직후에는 실행 권한이 기본으로 없는 경우가 많으므로, 스크립트 작성 후에는 실행 권한을 확인하는 것이 좋습니다.

반응형

'Programming > Linux' 카테고리의 다른 글

[command] su, sudo 명령어  (0) 2026.09.08
[command] chown 명령어  (1) 2026.09.08
[command] less 명령어  (0) 2022.11.02
[command] more 명령어  (0) 2022.11.01
[command] cat 명령어  (0) 2022.10.31
Comments