숏컷 코드
ls -l app.sh
chmod +x app.sh
chmod 644 config.json
chmod 755 scripts/deploy.sh
chown app:app data/
chown -R app:app uploads/| 값 | 의미 |
|---|---|
r | 읽기 |
w | 쓰기 |
x | 실행 또는 디렉터리 진입 |
u/g/o | 소유자 / 그룹 / 기타 사용자 |
644 | 소유자 읽기/쓰기, 나머지 읽기 |
755 | 소유자 쓰기 가능, 모두 실행 가능 |
권한 구조
ls -l의 첫 열은 파일 종류와 권한을 보여 줍니다. -rw-r--r--는 일반 파일이고, 소유자는 읽기/쓰기, 그룹과 기타 사용자는 읽기만 가능하다는 뜻입니다. drwxr-xr-x처럼 맨 앞이 d이면 디렉터리입니다.
ls -l
# -rw-r--r-- 1 app app 1200 May 23 config.json
# drwxr-xr-x 2 app app 4096 May 23 scripts디렉터리에서 x는 실행보다 "진입과 경로 탐색"에 가깝습니다. 디렉터리에 읽기 권한이 있어도 실행 권한이 없으면 내부 파일 경로로 접근하기 어렵습니다. 반대로 디렉터리 탐색 문제는 파일 권한이 아니라 부모 디렉터리 권한에서 막히는 경우가 많습니다.
chmod는 권한을 바꾸고 chown은 소유자를 바꾼다
chmod는 rwx 권한을 바꾸고, chown은 owner와 group을 바꿉니다. 실행 권한이 없는 스크립트에는 chmod +x, 웹 서버나 컨테이너 프로세스가 특정 디렉터리에 써야 할 때는 chown이나 그룹 권한을 검토합니다.
chmod +x scripts/deploy.sh
chown app:app /var/lib/myapp선택 기준
| 상황 | 선택 |
|---|---|
| 스크립트를 실행 가능하게 함 | chmod +x <file> |
| 설정 파일 기본 권한 | chmod 644 <file> |
| 실행 파일 또는 디렉터리 기본 권한 | chmod 755 <path> |
| 프로세스 사용자를 기준으로 소유권 변경 | chown user:group <path> |
| 디렉터리 전체 소유권 변경 | chown -R 신중히 사용 |
| 권한 문제 원인 확인 | ls -l, id, 부모 디렉터리 권한 |
주의할 점
권한 오류를 chmod 777로 해결하면 모든 사용자에게 쓰기 권한을 열 수 있습니다.
먼저 어떤 사용자로 프로세스가 실행되는지 확인하고 필요한 최소 권한만 부여하십시오.
id
ps -o user,pid,cmd -p <pid>
ls -ld /var/lib/myapp참고 링크
2 sources