리눅스 권한 관리
1. 리눅스 파일 권한 이해
리눅스 시스템에서 파일과 디렉토리는 각각 사용자, 그룹, 그리고 다른 사용자가 접근할 수 있는
읽기(Read), 쓰기(Write), 실행(Execute) 권한을 가진다. 각 파일이나 디렉토리는 다음과 같이 세 가지 권한 세트로 구분된다.
- 파일 소유자(User) : 파일을 소유한 사용자
- 그룹(Group) : 파일이 속한 그룹의 사용자들
- 기타(Others) : 파일 소유자와 그룹에 속하지 않은 모든 사용자
권한 형식
리눅스에서 파일 권한은 아래와 같이 표시된다
-rwxr-xr--
위 예시에서
첫 번째 문자 - 는 파일의 종류를 나타낸다. - 는 일반 파일을, d 는 디렉토리를 의미한다
다음 세 문자 rwx는 소유자의 권한이다. r은 읽기, w는 쓰기, x는 실행을 의미한다
그 다음 세 문자 r-x는 그룹의 권한이다. r은 읽기, x는 실행, -는 쓰기 권한이 없음을 의미한다.
마지막 세 문자 r-- 는 기타 사용자에 대한 권한으로, 읽기 권한만 있음을 의미한다.
2. 권한 변경하기
chmod 명령어
파일의 권한을 변경하려면 chmod 명령어를 사용한다. chmod는 문자 또는 숫자 방식으로 권한을 설정할 수 있다.
- 문자 방식 :
- u는 소유자(user), g는 그룹(group), o는 기타 사용자(others)를 의미한다.
- +, -, = 기호를 사용해 권한을 추가, 제거, 설정한다.
chmod u+x myscript.sh # 소유자에게 실행 권한 추가
chmod g-w myfile.txt # 그룹에서 쓰기 권한 제거
chmod o=r myfile.txt # 기타 사용자에게 읽기 권한만 부여
- 숫자 방식 : 각 권한에는 숫자가 할당된다
- r = 4, w = 2, x = 1 숫자를 더해서 권한을 표현한다.
예를 들어, rwx 는 7(4+2+1), rw- 는 6(4+2), r--는 4 이다.
chmod 755 myscript.sh # 소유자에게는 rwx, 그룹과 기타 사용자에게는 r-x 권한 부여
chmod 644 myfile.txt # 소유자는 rw-, 그룹과 기타 사용자는 r-- 권한 부여
chown 명령어
파일의 소유자나 그룹을 변경할 때 chown 명령어를 사용한다
- 소유자 변경
chown username myfile.txt
- 소유자와 그룹 동시 변경
chown username:groupname myfile.txt
참고로 read(r)와 execute(x) 권한 차이
1. Read (r, 읽기 권한)
- 파일: 파일 내용을 읽을 수 있음. (cat, less, vi 등으로 파일을 열어볼 수 있음)
- 디렉토리: 디렉토리 내부의 파일 목록을 조회할 수 있음. (ls 명령어 사용 가능)
❗ 주의: 디렉토리에 r 권한만 있고 x 권한이 없으면, ls로 파일 목록은 볼 수 있지만, 해당 파일을 열거나 접근하는 것은 불가능함.
ls -l
dr--r--r-- 2 user user 4096 Feb 1 12:00 mydir
위처럼 r만 있는 경우:
ls mydir # 가능
cd mydir # Permission denied (불가능)
2. Execute (x, 실행 권한)
- 파일: 실행 가능한 파일(스크립트, 바이너리 등)을 실행할 수 있음.
./script.sh # 실행 가능
- 디렉토리: 디렉토리 내부로 이동할 수 있음 (cd 가능). 또한, 디렉토리 내 파일에 대한 접근이 가능하지만 파일 목록(ls)을 보려면 추가로 r 권한이 필요함.
ls -l
d--x--x--x 2 user user 4096 Feb 1 12:00 mydir
위처럼 x만 있는 경우:
cd mydir # 가능
ls mydir # Permission denied (불가능)
cat mydir/file.txt # 가능 (파일을 직접 지정하면 접근 가능)
✅ 정리
권한 | 파일에서의 의미 | 디렉토리에서의 의미 |
r (읽기) | 파일 내용을 읽을 수 있음 (cat, less) | 디렉토리 내 파일 목록을 조회할 수 있음 (ls) |
x (실행) | 파일을 실행할 수 있음 (./파일명) | 디렉토리 내부로 이동 가능 (cd) 및 파일 접근 가능 |
r-x | 실행도 가능하고 파일 내용을 읽을 수도 있음 | 디렉토리 내 파일 목록을 보고, 접근 및 이동 가능 |
즉, 디렉토리는 r이 있어야 목록을 조회할 수 있고, x가 있어야 접근(이동) 가능함.
파일은 r이 있어야 읽을 수 있고, x가 있어야 실행 가능함.
3. 리눅스에서 사용자 및 그룹 관리
사용자 추가
새 사용자를 추가하려면 adduser 또는 useradd 명령어를 사용한다
- adduser (더 직관적)
sudo adduser newuser
- useradd (더 유연하지만 더 많은 설정이 필요)
sudo useradd newuser
그룹 추가 및 관리
새 그룹을 만들고 사용자를 그룹에 추가할 수 있다.
- 그룹 추가
sudo groupadd newgroup
- 사용자 그룹 추가
sudo usermod -aG groupname username
- 사용자 그룹 확인
groups username
4. Sudo 권한 관리
리눅스에서 sudo는 사용자가 관리 작업을 할 수 있도록 슈퍼유저 권한을 일시적으로 부여하는 명령어이다. 이를 설정하려면 sudoers 파일에서 권한을 수정하거나 사용자를 sudo 그룹에 추가하면 된다.
- 사용자를 sudo 그룹에 추가
sudo usermod -aG sudo username
- sudoers 파일 수정(신중히 해야 함)
sudo visudo
5.setuid, setgid, Sticky Bit
setuid (Set User ID)
파일이 실행될 때 그 파일 소유자의 권한으로 실행되도록 설정하는 것이다. 보통 프로그램들이 관리자 권한이 필요할 때 사용된다.
chmod u+s program
setgid (Set Group ID)
디렉토리 내에 생성되는 모든 파일의 그룹을 그 디렉토리의 그룹으로 설정한다
chmod g+s directory
Sticky Bit
디렉토리에서 Sticky Bit가 설저되면, 그 디렉토리 내의 파일은 소유자만 삭제할 수 있다.
chmod +t directory
'서버&백엔드 > 🐧 Linux' 카테고리의 다른 글
Ubuntu | 매번 sudo 치는게 귀찮을때 (0) | 2024.09.26 |
---|---|
Ubuntu | SSH 설치 & 접속 하는법 (0) | 2024.09.25 |
Ubuntu | 리눅스 무차별 대입 공격 방지 (0) | 2024.09.23 |
Ubuntu | 리눅스 명령어 정리 - 파일관련 (0) | 2024.09.23 |
[Kali Linux] SSH를 통해 원격으로 리눅스서버 접속 (0) | 2023.07.15 |