1. 왜 내 파일을 내가 못 열까?
리눅스를 처음 쓰다 보면 가장 많이 마주치는 에러가 "Permission denied(권한이 없습니다)"입니다.
윈도우에서는 내 컴퓨터에 있는 파일은 다 내 마음대로 할 수 있었는데, 리눅스는 유독 까다롭게 굽니다.
귀찮은 마음에 인터넷을 검색하면 chmod 777을 입력하라는 글이 나옵니다.
따라 하면 마법처럼 해결되지만, 보안 전문가들은 기겁을 합니다. "그건 자살행위야!"
도대체 777이 뭐길래 쓰지 말라는 걸까요? 그리고 리눅스는 왜 이렇게 권한에 집착할까요?
오늘은 리눅스 보안의 기초인 권한(Permission)과 소유권(Ownership)을 완벽하게 이해해 봅니다.

2. rwx의 비밀: 읽고, 쓰고, 실행하고
터미널에서 ls -l을 치면 파일 목록 앞에 -rwxr-xr-x 같은 외계어가 보입니다. 이것이 바로 권한 설정입니다.
이 외계어는 세 글자씩 끊어서 읽으면 됩니다.
- r (Read): 읽기 권한. (파일을 열어볼 수 있음)
- w (Write): 쓰기 권한. (파일을 수정하거나 삭제할 수 있음)
- x (eXecute): 실행 권한. (프로그램을 실행할 수 있음)
그리고 이 권한은 세 그룹으로 나뉩니다.
- 소유자(User): 파일을 만든 나.
- 그룹(Group): 나와 같은 팀원들.
- 기타(Others): 그 외 나머지 모든 사람(제3자).
예를 들어 -rwxrw-r--라면, "나는 다 할 수 있고, 팀원들은 수정까지만 되고, 남들은 읽기만 해라"라는 뜻입니다.

3. 숫자 표기법: 4, 2, 1의 마법
chmod 명령어를 쓸 때 문자로 u+x 같이 쓸 수도 있지만, 실무에서는 숫자로 더 많이 씁니다. 원리는 간단합니다. 2진수 비트 연산입니다.
- r (읽기) = 4
- w (쓰기) = 2
- x (실행) = 1
이 숫자를 더하면 됩니다.
- 7 (4+2+1): 읽고, 쓰고, 실행 다 됨. (모든 권한)
- 5 (4+0+1): 읽고 실행만 됨. (수정 불가)
- 6 (4+2+0): 읽고 쓰기만 됨. (실행 불가)
이제 chmod 777의 의미를 알 수 있습니다. "나(7), 그룹(7), 제3자(7) 모두에게 모든 권한을 주겠다"는 뜻입니다.
누구나 내 파일을 지우거나 해킹 스크립트를 실행할 수 있게 되니 보안상 최악의 설정입니다.

4. 실무 권한? 755와 644
그렇다면 엔지니어들은 보통 어떻게 설정할까요? 가장 많이 쓰는 설정이 있습니다.
1. 디렉토리나 실행 파일: 755
- 나(7): 다 됨.
- 그룹(5) & 남들(5): 읽고 실행만 됨. (들어와서 볼 수는 있지만 수정/삭제는 안 됨)
- 웹 서버나 프로그램 폴더에 주로 씁니다.
2. 일반 문서나 설정 파일: 644
- 나(6): 읽고 쓰기 됨. (실행은 안 됨)
- 그룹(4) & 남들(4): 읽기만 됨.
- cat이나 vi로 열어보는 텍스트 파일에 주로 씁니다.

5. 내 건데 왜 수정이 안 돼? 소유권(chown)의 이해
권한(chmod)이 완벽해도 "Permission denied"가 뜰 때가 있습니다. 바로 "주인(Owner)"이 달라서입니다.
파일의 주인은 ls -l에서 확인할 수 있습니다.
만약 파일 주인이 root로 되어 있는데, 내가 일반 사용자(user1)로 로그인해서 수정하려고 하면 당연히 거절당합니다.
이때 쓰는 명령어가 chown (Change Owner)입니다.
- 명령어: chown user1:staff file.txt
- 의미: "이 파일의 주인을 user1로, 그룹을 staff로 바꿔줘."
권한 문제가 생기면 무작정 777을 줄 게 아니라, "이 파일의 주인이 누구지?"부터 확인하는 것이 올바른 순서입니다.

6. 결론: 불편함이 곧 보안이다
리눅스의 권한 시스템은 귀찮습니다. 파일 하나 만들 때마다 권한을 신경 써야 합니다.
하지만 이 불편함 덕분에 리눅스는 바이러스나 해킹으로부터 안전합니다.
윈도우처럼 아무나(exe 파일) 실행되고 시스템 파일을 건드릴 수 있다면, 서버는 하루도 버티지 못할 것입니다.
딱 필요한 만큼만 권한을 주는 것, 그것이 서버를 지키는 가장 쉬우면서도 강력한 방법입니다.
📌 함께 읽어보면 좋은 글
권한 설정을 자유자재로 하려면 먼저 리눅스의 파일 구조를 알아야 합니다.
내 파일이 어디에 있고, 시스템 파일은 어디에 있는지 디렉토리 구조를 확인해 보세요.
🔗 리눅스 디렉토리 구조: /etc, /var... 내 파일은 어디에? 글 보러가기
또한, 권한 문제 다음으로 많이 겪는 것이 디스크 용량 문제입니다.
하드가 꽉 찼을 때 어떤 파일이 범인인지 찾아내는 방법을 정리했습니다.