리눅스 명령어(chmod)

Linux에서의 chmod 명령어 설명

chmod(change mode)는 Ubuntu를 포함한 Linux와 Unix 시스템에서 파일과 디렉토리의 접근 권한을 변경하는 명령어로, 시스템에서 파일 보안과 접근 제어를 위한 핵심 명령어입니다.

기본 사용법

chmod [옵션] 모드 파일명

권한 설정 방식

chmod는 두 가지 방식으로 권한을 설정할 수 있습니다:

1. 숫자(8진수) 모드

각 권한에 숫자를 할당합니다:

  • 읽기(r) = 4
  • 쓰기(w) = 2
  • 실행(x) = 1

이 숫자들을 소유자, 그룹, 기타 사용자 순으로 합산하여 사용합니다.

예시:

chmod 755 file.txt  # 소유자(rwx=7), 그룹(r-x=5), 기타(r-x=5)
chmod 644 file.txt  # 소유자(rw-=6), 그룹(r--=4), 기타(r--=4)
chmod 700 script.sh # 소유자(rwx=7), 그룹(---=0), 기타(---=0)

2. 기호 모드

사용자 유형, 연산자, 권한을 기호로 표현합니다:

사용자 유형:

  • u: 소유자(user)
  • g: 그룹(group)
  • o: 기타 사용자(others)
  • a: 모든 사용자(all) – 기본값

연산자:

  • +: 권한 추가
  • -: 권한 제거
  • =: 권한 지정(기존 권한 대체)

권한:

  • r: 읽기
  • w: 쓰기
  • x: 실행

예시:

chmod u+x script.sh       # 소유자(user)에게 실행 권한 추가
chmod a-w file.txt        # 모든(all) 사용자의 쓰기 권한 제거
chmod ug=rw,o=r file.txt  # 소유자(user)와 그룹(group)에 읽기/쓰기, 기타에 읽기만 설정

자주 사용되는 옵션

  • -R 또는 --recursive: 지정된 디렉토리와 그 안의 모든 파일/하위 디렉토리에 재귀적으로 적용
  • -v 또는 --verbose: 처리되는 모든 파일의 진단 정보 출력
  • -c 또는 --changes: -v와 비슷하지만 변경된 경우에만 출력
  • -f 또는 --silent: 대부분의 오류 메시지 표시 안 함

예시:

chmod -R 755 디렉토리명     # 디렉토리와 그 안의 모든 내용에 755 권한 적용
chmod -v u+x script.sh     # 소유자에게 실행 권한 추가하고 결과 출력

특수 권한

  • SUID(4000): 실행 시 파일 소유자의 권한으로 실행 (chmod u+s file)
  • SGID(2000): 실행 시 그룹 소유자의 권한으로 실행 (chmod g+s file)
  • Sticky bit(1000): 디렉토리에 설정 시 소유자만 파일 삭제 가능 (chmod +t directory)

이러한 특수 권한은 숫자 모드에서 네 번째 숫자로 표현됩니다:

chmod 4755 file  # SUID 설정, rwsr-xr-x
chmod 2755 file  # SGID 설정, rwxr-sr-x
chmod 1777 dir   # Sticky bit 설정, rwxrwxrwt

chmod 명령어 예시

상황 1: 스크립트 파일에 실행 권한 부여하기

스크립트 파일을 만들었는데 실행이 안 되는 경우가 많습니다.

# 스크립트 파일 생성
$ echo '#!/bin/bash' > hello.sh
$ echo 'echo "안녕하세요!"' >> hello.sh

# 실행 시도
$ ./hello.sh
bash: ./hello.sh: Permission denied

# 현재 권한 확인
$ ls -l hello.sh
-rw-r--r-- 1 user group 32 Apr 22 10:00 hello.sh

# 실행 권한 부여
$ chmod +x hello.sh

# 권한 변경 확인
$ ls -l hello.sh
-rwxr-xr-x 1 user group 32 Apr 22 10:00 hello.sh

# 이제 실행 가능
$ ./hello.sh
안녕하세요!

상황 2: 중요한 설정 파일 보호하기

중요한 설정 파일을 다른 사람이 수정하지 못하게 할 때:

# 설정 파일 생성
$ echo "중요한 설정" > config.txt

# 현재 권한 확인
$ ls -l config.txt
-rw-r--r-- 1 user group 14 Apr 22 10:05 config.txt

# 소유자만 읽고 쓸 수 있게 변경
$ chmod 600 config.txt

# 권한 변경 확인
$ ls -l config.txt
-rw------- 1 user group 14 Apr 22 10:05 config.txt

상황 3: 공유 디렉토리 설정하기

팀원들과 파일을 공유하는 디렉토리를 만들 때:

# 디렉토리 생성
$ mkdir shared_project

# 모든 팀원이 파일을 생성하고 수정할 수 있게 설정
$ chmod 775 shared_project

# 권한 확인
$ ls -ld shared_project
drwxrwxr-x 2 user group 4096 Apr 22 10:10 shared_project

# 디렉토리 내 모든 파일에 동일한 권한 적용
$ touch shared_project/file1.txt shared_project/file2.txt
$ chmod -R 664 shared_project

# 파일 권한 확인
$ ls -l shared_project/
-rw-rw-r-- 1 user group 0 Apr 22 10:12 file1.txt
-rw-rw-r-- 1 user group 0 Apr 22 10:12 file2.txt

상황 4: 특정 권한만 변경하기

파일에서 모든 사용자의 쓰기 권한만 제거하고 싶을 때:

$ touch document.txt
$ ls -l document.txt
-rw-rw-r-- 1 user group 0 Apr 22 10:15 document.txt

# 모든 사용자의 쓰기 권한 제거
$ chmod a-w document.txt

# 권한 확인
$ ls -l document.txt
-r--r--r-- 1 user group 0 Apr 22 10:15 document.txt

# 소유자에게만 쓰기 권한 다시 추가
$ chmod u+w document.txt

# 최종 권한 확인
$ ls -l document.txt
-rw-r--r-- 1 user group 0 Apr 22 10:15 document.txt
  1. 파일의 소유자 변경
    chown lee myfile.txt
    이명령어는 myfile.txt 파일의 소유자를 lee로 변경한다.
  1. 파일의 소유자와 그룹변경
    chown lee:kim myfile.txt
    이 명령어는 myfile.txt 파일의 소유자를 lee로 그룹을 kim으로 변경한다.

3. 디렉토리와 그하위 항목의 소유자 및 그룹 변경
chown -R kim/lee /path/to/directory

‘-R’옵션은 지정된 디렉토리 내의 모든 파일과 하위 디렉토리에 대해 재귀적으로 소유자와 그룹을 변경한다.

이런 식으로 chmod는 파일이나 디렉토리의 접근 권한을 상황에 맞게 세밀하게 조정할 수 있는 강력한 도구입니다.

chown 명령어를 사용하는 이유

  1. 파일 및 디렉토리 접근 권한관리
  • 특정 파일이나 디렉토리에 접근할 수 있는 사용자를 변경하거나 제한해야 할 때 사용
  • 특정 파일을 다른 사용자에게 양도하거나, 다른 사용자가 파일을 읽거나 수정할 수 없도록 하기 위해 소유자를 변경할 수 있다.
  1. 보안관리
  • 파일이 잘못된 사용자에게 소유되어 있는 경우,해당 사용자가 불필요하게 해당 파일에 접근할 수있다. 이를 방지하기 위해 소유자를 올바르게 설정해야된다.
  • 시스템의 민감한 파일을 보호하기 위해 올바른 소유자와 그룹을 설정하는 것이 중요하다.
  1. 파일 복사 후 소유자 변경
  • 시스템에서 파일을 복사하거나 이동할 때 파일의 소유자가 변경되지 않으면 다른 사용자가 해당 파일을 접근하지 못할 수 있다. 이 경우 chown을 사용하여 파일의 소유자를 수정해야된다.

주의사항

  • chown 명령어는 일반 사용자가 자신의 파일에 대해서만 사용할 수 있으며, 시스템 전체 파일의 소유권을 변경하려면 관리자(root) 권한이 필요하다
  • 잘못 사용하면 중요한 시스템 파일의 소유자가 변경되어 시스템에 문제가 발생할 수 있으므로 주의해야 한다.

참조 사이트
https://rhrhth23.tistory.com/37

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다