Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- 맥
- Less
- cs
- 순차탐색
- MySQL
- 티스토리챌린지
- 욕심쟁이 방법
- mysql 표 출력
- zsh theme
- 오일러 경로
- oh-my-zsh
- CS스터디
- 동적 프로그래밍 방법
- 데이크스트라
- table status
- 터미널
- 분할정복 방법
- 인프런
- mycli
- 이진탐색
- spring boot
- 알고리즘
- 네트워킹데이
- 오블완
- Pager
- mysql 표
- VI
- 인프런워밍업클럽
- zsh
- 스터디2기
Archives
- Today
- Total
Develop
[리눅스 마스터 2급-2차] 2. 파일 권한 및 소유권 본문
안녕하세요 ~ .ᐟ
2일차 파일 권한 및 소유권에 대해서 공부해봤습니다~
(며칠 치 파바박 올리는 점 양해 부탁드립니다 ㅋㅋ)
Day 2 - 파일 권한 및 소유권
- 파일 권한 및 소유권 관리
- 특수 권한 (SetUID, SetGID, Sticky bit)
- 파일 속성 관리
- 심볼릭 링크와 하드 링크
1. 파일 권한 관리 (chmod)
리눅스의 모든 파일과 디렉토리는 rwx 권한을 가집니다.
- r (read, 4): 읽기 권한
- w (write, 2): 쓰기 권한
- x (execute, 1): 실행 권한
권한은 소유자(user) / 그룹(group) / 기타(others) 3개 영역으로 나뉩니다.
chmod 명령어
*# 숫자 방식 (8진수)*
chmod 755 file.txt *# rwxr-xr-x*
chmod 644 file.txt *# rw-r--r--*
chmod 700 file.txt *# rwx------
# 문자 방식*
chmod u+x file.txt *# 소유자에게 실행 권한 추가*
chmod g-w file.txt *# 그룹의 쓰기 권한 제거*
chmod o=r file.txt *# 기타 사용자는 읽기만 가능*
chmod a+x file.txt *# 모두에게 실행 권한 추가# 재귀적 적용*
chmod -R 755 /mydir *# 디렉토리 하위 모든 파일에 적용*
실습 예제
*# 1. 파일 생성 및 권한 확인*
touch testfile.txt
ls -l testfile.txt
*# 출력: -rw-r--r-- 1 user group 0 Dec 5 10:00 testfile.txt
# 2. 권한 변경*
chmod 700 testfile.txt
ls -l testfile.txt
*# 출력: -rwx------ 1 user group 0 Dec 5 10:00 testfile.txt
# 3. 문자 방식으로 변경*
chmod g+rx testfile.txt
ls -l testfile.txt
*# 출력: -rwxr-x--- 1 user group 0 Dec 5 10:00 testfile.txt*
2. 소유권 관리 (chown, chgrp)
chown - 소유자 변경 (소유자 + 그룹 동시변경 가능)
*# 소유자만 변경*
chown newuser file.txt
*# 소유자와 그룹 동시 변경*
chown newuser:newgroup file.txt
*# 재귀적 적용*
chown -R user:group /mydir
*# 소유자만 변경하고 그룹은 유지*
chown newuser: file.txt
chgrp - 그룹 변경
*# 그룹 변경*
chgrp newgroup file.txt
*# 재귀적 적용*
chgrp -R developers /project
실습 예제
*# 1. 현재 소유권 확인*
ls -l myfile.txt
*# 출력: -rw-r--r-- 1 john developers 1024 Dec 5 10:00 myfile.txt
# 2. 소유자 변경*
sudo chown alice myfile.txt
ls -l myfile.txt
*# 출력: -rw-r--r-- 1 alice developers 1024 Dec 5 10:00 myfile.txt
# 3. 소유자와 그룹 함께 변경*
sudo chown bob:admins myfile.txt
ls -l myfile.txt
*# 출력: -rw-r--r-- 1 bob admins 1024 Dec 5 10:00 myfile.txt*
3. 특수 권한
- 특수권한을 설정할때는 4자리 숫자를 사용
- 리눅스난 9자리 공간만 사용해서 권한을 표시하는데, 특수 권한까지 표시하려면 자리가 모자라서 x자리를 재활용 한다.
- 특수권한이 설정되면 x(실행) 자리가 s나 t로 바뀜
- 사용
- 4: SetUID
- 2: SetGID
- 1: Sticky bit
- 0: 특수 권한 없음 (일반적인 경우)
- 조합해서 사용
- # SetUID + SetGID 동시 설정 (4 + 2 = 6) chmod 6755 file ls -l file # 출력: -rwsr-sr-x # SetGID + Sticky bit 동시 설정 (2 + 1 = 3) chmod 3755 dir ls -ld dir # 출력: drwxr-sr-t # 모든 특수 권한 설정 (4 + 2 + 1 = 7) chmod 7755 file ls -l file # 출력: -rwsr-sr-t
SetUID (4000)
- 파일 실행 시 파일 소유자의 권한으로 실행
- 주로 시스템 명령어에 사용 (예: passwd)
- 사용
- s (소문자) : 실행권한이 있으면서 SetUID 가 설정됨
- S (대문자) : 실행권한이 없으면서 SetUID 가 설정됨 (의미 없음) ⇒ 실행권한이 제거된 것
# SetUID 가 설정된 경우 (소유자의 x가 s로 바뀜)
chmod 4755 file *# rwsr-xr-x*
chmod u+s file *# SetUID 설정*
SetGID (2000)
- 파일: 파일 실행 시 그룹 소유자의 권한으로 실행
- 디렉토리: 생성되는 파일이 디렉토리의 그룹을 상속
- 사용
- s (소문자) : 실행권한이 있으면서 SetGID 가 설정됨
- S (대문자) : 실행권한이 없으면서 SetGID 가 설정됨
chmod 2755 dir *# rwxr-sr-x*
chmod g+s dir *# SetGID 설정*
Sticky bit (1000)
- 디렉토리에 설정
- 자신이 생성한 파일만 삭제 가능 (타인의 파일 삭제 불가)
- 디렉토리에 쓰기권한(w)이 모두에게 있더라도, 파일 삭제/이름변경은 소유자나 디렉토리 소유자만 가능
- /tmp 디렉토리가 대표적 예시
- 사용
- t (소문자): 실행 권한(x)이 있으면서 Sticky bit가 설정됨
- T (대문자): 실행 권한(x)이 없으면서 Sticky bit만 설정됨
chmod 1777 dir *# rwxrwxrwt (x 가 있어서 t)
chmod 1666 dir # rw-rw-rwT (x 가 없어서 T, 잘못된 설정)*
chmod +t dir *# Sticky bit 설정*
실습 예제
*# 1. SetUID 설정*
chmod 4755 myprogram
ls -l myprogram
*# 출력: -rwsr-xr-x 1 root root 8192 Dec 5 10:00 myprogram
# 2. SetGID 설정*
chmod 2770 /shared
ls -ld /shared
*# 출력: drwxrws--- 2 root team 4096 Dec 5 10:00 /shared
# 3. Sticky bit 설정*
chmod 1777 /public
ls -ld /public
*# 출력: drwxrwxrwt 2 root root 4096 Dec 5 10:00 /public*
4. 파일 속성 관리 (chattr, lsattr)
chattr - 파일 속성 설정
*# 주요 속성
# i: immutable (수정, 삭제, 이름변경 불가)
# a: append only (추가만 가능)
# c: compressed (압축 저장)
# u: undeletable (삭제 시 복구 가능하도록 저장)*
chattr +i file.txt *# 변경 불가 설정*
chattr -i file.txt *# 변경 불가 해제*
chattr +a log.txt *# 추가만 가능*
lsattr - 파일 속성 확인
lsattr file.txt
*# 출력: ----i------------- file.txt*
실습 예제
*# 1. 일반 파일 생성*
echo "test" > protected.txt
*# 2. 변경 불가 속성 설정*
sudo chattr +i protected.txt
*# 3. 삭제 시도 (실패)*
rm protected.txt
*# 출력: rm: cannot remove 'protected.txt': Operation not permitted
# 4. 속성 확인*
lsattr protected.txt
*# 출력: ----i------------- protected.txt
# 5. 속성 해제 후 삭제*
sudo chattr -i protected.txt
rm protected.txt
5. 링크 (Link)
하드 링크 (Hard Link)
- 같은 inode를 가리키는 또 다른 이름 (같은 inode 를 공유함)
- 원본 파일 삭제해도 링크 파일은 유효
- 디렉토리나 다른 파일시스템에는 생성 불가 → 디렉토리 링크가 필요하면 심볼릭 링크 사용
ln original.txt hardlink.txt
*# inode 번호 확인*
ls -li original.txt hardlink.txt
심볼릭 링크 (Symbolic Link)
- 원본 파일의 경로를 가리키는 포인터
- 원본 파일 삭제 시 링크 파일 무효화
- 디렉토리와 다른 파일시스템에도 생성 가능
ln -s /path/to/original.txt symlink.txt
*# 링크 확인*
ls -l symlink.txt
*# 출력: lrwxrwxrwx 1 user group 20 Dec 5 10:00 symlink.txt -> /path/to/original.txt*
실습 예제
*# 1. 원본 파일 생성*
echo "Original content" > original.txt
*# 2. 하드 링크 생성*
ln original.txt hard.txt
ls -li original.txt hard.txt
*# 출력: # 123456 -rw-r--r-- 2 user group 17 Dec 5 10:00 original.txt# 123456 -rw-r--r-- 2 user group 17 Dec 5 10:00 hard.txt# (같은 inode 번호 123456)
# 3. 심볼릭 링크 생성*
ln -s original.txt soft.txt
ls -li soft.txt
*# 출력: 654321 lrwxrwxrwx 1 user group 12 Dec 5 10:00 soft.txt -> original.txt
# 4. 원본 파일 삭제 테스트*
rm original.txt
cat hard.txt *# 성공: Original content*
cat soft.txt *# 실패: No such file or directory*
느낀 점
- 그동안 정처기, 리마2급에서 보던 소유권, 권한 문제 확실히 알았습니다
- 특수권한은 생소했는데 실습해보니까 마냥어렵지만은 않았고.. .ᐟ
- 특히 수정/삭제가 금지되는 chattr +i 명령어는 파일 보호에 도움이 될 것 같고,
- 본인/디렉토리 소유자/루트 소유자 만 삭제할 수 있는 스티키 비트는 협업할때 유용할 것 같다는 생각이 들었습니다 ㅎㅎ

'자격증' 카테고리의 다른 글
| [리눅스 마스터 2급-2차] 4.파일시스템, 에디터, 소프트웨어 관리 (0) | 2025.12.07 |
|---|---|
| [리눅스 마스터 2급-2차] 3. 프로세스 관리 (0) | 2025.12.05 |
| [리눅스 마스터 2급-2차] 1. 파일 및 디렉터리 관리 (1) | 2025.12.05 |
| [리눅스 마스터 2급] 리눅스 일반 (1차) (2) | 2025.06.10 |
| 리눅스 기초 - vi 편집기 사용하기 (0) | 2025.04.03 |