[네이버클라우드] AIaaS 개발자 과정/Linux

[네이버클라우드캠프] 2023.4.26 Linux(1) - 파일 분류 권한의 이해

_꼬마돌 2023. 4. 30. 00:23
반응형

파일 분류 권한의 이해

리눅스 운영체제는 모든 것을 파일로 인식하고 처리한다. 
하드디스크, 플로피, 프린터 등 모든 자원을 파일로서 취급한다.

 

파일의 종류

d   directory
-   file
l   soft (symbolic link)
c   character device
b   block device
s   socket
p   named pipe 프로세스간 통신, 파이프의 한 종류

 

링크 파일 (Link File)

File 복사와 다른 개념이다.
복사는 I-node가 다르고 하드디스크 용량을 차지한다.
링크는 하드디스크 용량을 차지하지 않는다.
Hard Link : I-node가 같다. 공유의 개념. C++에서 reference 이다. 
Soft Link : 원본파일에 대해 위치정보만 갖는다. 파일 크기가 클 이유가 없음. 윈도우의 바로가기 아이콘과 같은 개념. Symbolic link.
I-node : I-node 내에는 파일 소유권, 허가권, 타임스탬프 (마지막 수정, 접근) 파일 종류등의 정보가 저장되어 있다. 

사용자는 파일명으로 파일들을 구분하지만, 리눅스는 수많은 I-node 들로 이루어져 있어, 시스템 내부적으로는 I-node로서 관리되고 있다. 

시스템이 부팅되면서 자동으로 체크하여 필요한 부분은 복구한 다음 부팅하게 되는 것이다.

남아있는 I-node 보기 : $df -i

 

복사와 링크 개념 이해하기

# 참고
# 17230438 / -rwxr-xr-x. /         1             / root  / root  / 107496  / Apr 29 23:07 / d20
#  I-node /  권한정보  / 파일을 참조하는 링크 수 /소유자/소유그룹/ 파일크기 /   최종수정일  / 파일이름


---복사---
[root@kwc ~]# mkdir bbb && cd bbb
[root@kwc ~/bbb]# touch aa        # 빈 파일 aa 생성                         
[root@kwc ~/bbb]# cal > bb        # 달력을 넣은 파일 bb 생성
[root@kwc ~/bbb]# cp aa cpaa      # aa 파일을 cpaa라는 이름으로 복사
[root@kwc ~/bbb]# cp bb cpbb      # bb 파일을 cpbb라는 이름으로 복사
[root@kwc ~/bbb]# ll -i           # I-node 보기
total 8
17230432 -rw-r--r--. 1 root root   0 Apr 29 23:04 aa      
17230433 -rw-r--r--. 1 root root 168 Apr 29 23:04 bb
17230434 -rw-r--r--. 1 root root   0 Apr 29 23:05 cpaa
17230435 -rw-r--r--. 1 root root 168 Apr 29 23:05 cpbb
# 파일을 복사했을 때 원본과 복사본의 I-node가 다르다. 
# 즉 원본 파일과는 완전히 독립적인 새로운 파일이다.

---하드링크---
[root@kwc ~/bbb]# ln aa lnaa      # aa 파일을 lnaa 라는 이름으로 하드링크 생성
[root@kwc ~/bbb]# ln aa lnaa2     # aa 파일을 lnaa2 라는 이름으로 하드링크 생성
[root@kwc ~/bbb]# ln lnaa lnaa3   # aa 파일을 lnaa3 라는 이름으로 하드링크 생성
[root@kwc ~/bbb]# ll -i           # I-node 보기
total 8
17230432 -rw-r--r--. 4 root root   0 Apr 29 23:04 aa
17230433 -rw-r--r--. 1 root root 168 Apr 29 23:04 bb
17230434 -rw-r--r--. 1 root root   0 Apr 29 23:05 cpaa
17230435 -rw-r--r--. 1 root root 168 Apr 29 23:05 cpbb
17230432 -rw-r--r--. 4 root root   0 Apr 29 23:04 lnaa
17230432 -rw-r--r--. 4 root root   0 Apr 29 23:04 lnaa2
17230432 -rw-r--r--. 4 root root   0 Apr 29 23:04 lnaa3
# 원본 파일인 aa와 하드링크 파일인 lnaa, lnaa2, lnaa3의 I-node가 모두 동일하다.
# 하드 링크는 I-node를 공유하기 때문에 원본 파일과 링크가 동일한 파일로 취급된다.
# 따라서 aa파일을 복사해도 aa와 lnaa, lnaa2, lnaa3은 여전히 같은 파일을 가리키게 되며, 
# lnaa, lnaa2, lnaa3 파일은 aa파일과 크기, 권한, 소유자 등이 모두 동일하다.
# 또한, 하드링크 파일들의 용량이 모두 0인 것을 볼 수 있다.
# 하드링크파일인 lnaa 2,3,4와 원본 파일인 aa파일만 파일권한 옆 숫자가 4인것을 볼 수 있다.
# 연결된 하드링크의 개수가 4개라는 뜻이다.

---소프트링크---
[root@kwc ~/bbb]# ln -s aa saa       # aa 파일에 대한 심볼릭 링크 'saa' 생성
[root@kwc ~/bbb]# ln -s ss saa2      # ss 파일에 대한 심볼릭 링크 'saa2' 생성
[root@kwc ~/bbb]# ll -i              # I-node 보기
total 8
17230432 -rw-r--r--. 4 root root   0 Apr 29 23:04 aa
17230433 -rw-r--r--. 1 root root 168 Apr 29 23:04 bb
17230434 -rw-r--r--. 1 root root   0 Apr 29 23:05 cpaa
17230435 -rw-r--r--. 1 root root 168 Apr 29 23:05 cpbb
17230432 -rw-r--r--. 4 root root   0 Apr 29 23:04 lnaa
17230432 -rw-r--r--. 4 root root   0 Apr 29 23:04 lnaa2
17230432 -rw-r--r--. 4 root root   0 Apr 29 23:04 lnaa3
17230436 lrwxrwxrwx. 1 root root   2 Apr 29 23:06 saa -> aa
17230437 lrwxrwxrwx. 1 root root   2 Apr 29 23:06 saa2 -> ss
# 원본 파일인 aa와 소프트링크 파일인 saa의 I-node가 다르다.
# 파일 권한 부분이 l로 시작하는 것을 볼 수 있다. (soft link)
# 소프트링크 파일 옆에 원본 파일을 가리키는 화살표가 있다.
# 심볼릭링크는 하나의 파일을 가리키는 링크파일로, 링크 파일이 가리키는 대상 파일이 
# 삭제되더라도 링크 파일 자체는 사라지지 않는다.

---복사후 소프트링크---
[root@kwc ~/bbb]# cp /bin/date d20        # /bin/date파일을 d20파일로 복사
[root@kwc ~/bbb]# ln -s /bin/date sdate   # /bin/date파일을 가리키는 심볼릭 링크인 sdate생성
[root@kwc ~/bbb]# ll -i                   # I-node 보기
total 116
17230432 -rw-r--r--. 4 root root      0 Apr 29 23:04 aa
17230433 -rw-r--r--. 1 root root    168 Apr 29 23:04 bb
17230434 -rw-r--r--. 1 root root      0 Apr 29 23:05 cpaa
17230435 -rw-r--r--. 1 root root    168 Apr 29 23:05 cpbb
17230438 -rwxr-xr-x. 1 root root 107496 Apr 29 23:07 d20    
17230432 -rw-r--r--. 4 root root      0 Apr 29 23:04 lnaa
17230432 -rw-r--r--. 4 root root      0 Apr 29 23:04 lnaa2
17230432 -rw-r--r--. 4 root root      0 Apr 29 23:04 lnaa3
17230436 lrwxrwxrwx. 1 root root      2 Apr 29 23:06 saa -> aa
17230437 lrwxrwxrwx. 1 root root      2 Apr 29 23:06 saa2 -> ss
17230439 lrwxrwxrwx. 1 root root      9 Apr 29 23:07 sdate -> /bin/date
# d20파일의 크기가 아주 큰 것을 볼 수 있다.
# 하지만 d20을 가리키고 있는 소프트링크 파일 sdate의 용량은 아주 작다.
# 당연히 I-node 값도 다르다.

---디렉터리 소프트링크---
[root@kwc ~/bbb]# ln -s /etc setc     # /etc 디렉터리를 가리키는 심볼릭링크 setc생성
[root@kwc ~/bbb]# ll -i               # I-node 보기
total 116
17230432 -rw-r--r--. 4 root root      0 Apr 29 23:04 aa
17230433 -rw-r--r--. 1 root root    168 Apr 29 23:04 bb
17230434 -rw-r--r--. 1 root root      0 Apr 29 23:05 cpaa
17230435 -rw-r--r--. 1 root root    168 Apr 29 23:05 cpbb
17230438 -rwxr-xr-x. 1 root root 107496 Apr 29 23:07 d20
17230432 -rw-r--r--. 4 root root      0 Apr 29 23:04 lnaa
17230432 -rw-r--r--. 4 root root      0 Apr 29 23:04 lnaa2
17230432 -rw-r--r--. 4 root root      0 Apr 29 23:04 lnaa3
17230436 lrwxrwxrwx. 1 root root      2 Apr 29 23:06 saa -> aa
17230437 lrwxrwxrwx. 1 root root      2 Apr 29 23:06 saa2 -> ss
17230439 lrwxrwxrwx. 1 root root      9 Apr 29 23:07 sdate -> /bin/date
17230440 lrwxrwxrwx. 1 root root      4 Apr 29 23:07 setc -> /etc
# 하드링크와 다르게 소프트링크는 디렉터리를 가리킬 수 있다.
# 하드링크는 파일만 가능!
하드링크는 같은 파티션에서만 가능. 
하드링크는 디렉터리를 가리킬 수 없다. 파일만 연결할 수 있다.
하드링크는 아무리 많아도 용량을 차지하지 않는다.

소프트링크는 파일, 디렉터리 모두 가리킬 수 있다.
다른 파일 시스템도 가능!

반응형