티스토리 뷰
Chmod Recursive (-R)
재귀적으로 주어진 디렉토리 하위의 모든 파일과 모든 디렉토리들에 대해서 권한 설정을 하려면 일반적으로 -R 또는 --recursive 옵션을 사용하여 처리할 수 있습니다.
기본 문법으로는 아래와 같습니다.
chmod -R MODE DIRECTORY
예를 들어, /var/www/html 밑에 있는 모든 파일과 하위 디렉토리 들의 권한을 755(-rwxr-xr-x)으로 바꾸기 위해서는 아래 명령어를 사용합니다.
chmod -R 755 /var/www/html
MODE 부분에 해당하는 값을 꼭 숫자로 입력할 필요는 없습니다. 아래와 같이 symbolic method로도 변경할 수 있습니다.
chmod -R u=rwx,go=rx /var/www/html
그리고 오직 root 또는 파일의 소유자 또는 sudo 권한을 사용할 수 있는 사용자만이 해당 파일에 대한 권한(permission)을 변경할 수 있습니다. 그렇기 때문에 더욱 권한 변경에 있어서는 조심해서 변경해야될 것 같습니다.
위 방법 외에도 다른 방법이 있겠습니다만, 만약 하위 디렉토리에 있는 모든 파일들 또는 디렉토리에 대한 변경이 아닌, 파일 종류 또는 폴더 종류들에 대한 권한만 변경하고 싶다고 할 때는 어떻게 해야할까요? 이 때는 바로 find 명령어와 chmod 명령어를 함께 사용해서 이루어낼 수 있습니다.
find 명령어와 chmod 함께 사용하기
일반적으로 파일과 디렉토리는 서로 같은 권한을 가지지 않습니다. 대부분의 파일들은 실행(execute) 권한을 가지지 않습니다. 그리고 디렉토리도 마찬가지로 디렉토리가 실행 권한을 가지는 일은 본 적이 없습니다.
그렇기에 가장 일반적인 시나리오로는 모든 파일들은 644 권한으로 변경하고, 모든 디렉토리들은 755 권한으로 변경해야하는 상황이 일반적일 겁니다.
이 때 사용할 수 있는 명령어는 아래와 같이 있습니다.
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod u=rwx,go=rx {} \;
find /var/www/html -type f -exec chmod u=rw,go=r {} \;
위 명령어에서 find 명령어는 /var/www/html 경로에서 모든 파일과 디렉토리를 탐색하면서 만약 파일이나 디렉토리를 찾았을 경우 chmod 명령어를 실행시켜 일련의 권한을 변경하게 됩니다.
여기서 find 와 -exec 옵션을 사용했다는 것은, chmod 명령어를 find 명령어가 한 개체를 찾았을 때마다 실행하게 됩니다. 이런 원리 때문에 속도저하 문제가 올 수 있는데, 이를 해결하기 위해서는 xargs 명령어를 사용해서 여러 개체들을 한번에 처리하게 만들 수 있습니다.
find /var/www/html -type d -print0 | xargs -0 chmod 755
find /var/www/html -type f -print0 | xargs -0 chmod 644
결론
chmod 명령어와 -R 옵션을 사용해서 파일들의 권한을 재귀적으로 변경할 수 있습니다.
그리고
파일 또는 디렉토리만 지정해서 권한을 변경하고 싶을 때는 find 명령어와 chmod 명령어를 함께 사용함으로써 해결할 수 있습니다.
- 끝 -
'개발환경 > Server' 카테고리의 다른 글
[Ubuntu] 64bit 리눅스에서 32bit 실행파일(ELF) 실행방법 (0) | 2022.03.17 |
---|---|
[WSL] WSL/2에서 chmod/chown 동작안되는 문제 해결 방법 (0) | 2022.03.17 |
[서버 용량 확인] 파이썬에서 리눅스, 우분투 서버 용량 확인하기 (0) | 2021.11.23 |
fail2ban 사용법 (0) | 2021.04.14 |
iptables 사용법 (0) | 2021.04.14 |