본문 바로가기
네이버클라우드/Linux

Linux 3일차 (2023-04-26) Linux 입문 - 파일 분류 권한의 이해

by prometedor 2023. 4. 26.

파일 분류 권한의 이해

파일 분류

리눅스 운영체제는 모든 것을 파일로 인식하고 처리함

하드 디스크, 플로피, 프린터 등 모든 자원을 파일로서 취급함

디렉터리도 마찬가지로 파일로 인식하고 처리함

 

 

파일의 종류

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

 

 

 

file

명령어 설명
$file /bin/ls ELF
$file /etc Directory
$file /dev/tty char
$file /dev/sda block
$file /etc/bash.bashrc 일반 파일
$ll /dev/log socket
$file /dev/log symbolic link
   
$mkfifo aa named pipe 만들기 (fifo --> first in first out : 선입선출)
$file aa named pipe
   
$find /etc/http -type f -exec ls -al {} \; file 타입 찾아서 해당 파일의 상세정보 출력
$find /etc/http -type s -exec ls -al {} \; socket 타입 찾아서 해당 파일의 상세정보 출력
$find /etc/http -type p -exec ls -al {} \; pipe 타입 찾아서 해당 파일의 상세정보 출력

ㄴ 실습

~/d3$ find /run -type f -exec ls -AlF {} \; 2>/dev/null  --> file : 파일
~/d3$ find /run -type p -exec ls -AlF {} \; 2>/dev/null  --> pipe : 프로세스가 통신할 때,,
~/d3$ find /run -type s -exec ls -AlF {} \; 2>/dev/null  --> socket : 소켓

 

 

확장자 종류

.a object module library

.c  --> c 언어로 작성된 소스 코드 파일을 나타내는 파일 확장자

.C .CC .CXX .C++  --> 모두 C++ 프로그래밍 언어로 작성된 소스 코드 파일을 나타내는 파일 확장자

.i 전처리 된 C언어 source

.ii 전처리 된 C++ source

.m objective c

.mm objective c++

.o object

.s AS  --> 어셈블리어 소스파일

.S 전처리가 필요한 어셈블리 소스 파일

 

확장자 설명
.a object module library
.c c 언어로 작성된 소스 코드 파일
.C  .CC  .CXX  .C++ 모두 C++ 프로그래밍 언어로 작성된 소스 코드 파일을 나타내는 파일 확장자
.i 전처리 된 C언어 source
.ii 전처리 된 C++ source
.m objective c
.mm objective c++
.o object
.s 어셈블리어 소스파일
.S 전처리가 필요한 어셈블리 소스 파일

 

 

링크 파일

파일 복사와 다른 개념

복사는 I-node 가 다르고 하드디스크 용량을 차지함

링크는 하드디스크 용량을 차지하지 않음 --> 연결만 해주는 개념

 

링크 파일 설명
hard link I-node 가 같음

공유의 개념

C++ 에서 reference 임

--> 하나의 파일에 별칭(alias)을 부여하는 것과 같음
soft link 원본파일에 대해 위치정보만 가짐

파일 크기가 클 이유가 없음

바로가기 아이콘을 생각하면 됨

symbolic link 라고도 함
I-node I-node 내에는 파일 소유권, 허가권, 타임스탬프(마지막 수정, 접근) 파일 종류 등의 정보가 저장되어 있음

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

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

남아있는 I-node 보기 -> df -i

 

 

복사와 링크개념 이해하기

~$mkdir bbb                                
~$cd bbb                                  
~$touch aa 
~$cal > bb                                 
~$cp aa cpaa  
~$cp bb cpbb  

~$ll -i

 

ln aa lnaa  --> hard link 생성                                                     
~$ln aa lnaa2  --> hard link 생성                                                  
~$ln lnaa lnaa3  --> hard link 생성                                   

~$ll -i

ㄴ 하드링크 수 늘어남  --> aa, lnaa, lnaa2, lnaa3 는 hard link 로 연결됨

 

~$ln -s aa saa  --> symbolic link 생성                              
~$ln -s ss saa2  --> symbolic link 생성                              

~$ll -i

symbolic link 생성

 

~$cp /bin/date sdate                   
~$ln -s /bin/date d20  --> symbolic link 생성                      

~$ll -i

ㄴ 디렉터리를 symbolic link 로 연결

 

~$ln -s /etc setc
~$ls -i

ㄴ 디렉터리를 symbolic link 로 연결

 

~$unlink lnaa
~$unlink saa

~$ll -i

aa, lnaa, lnaa2, lnaa3 는 hard link로 연결되어 있었으므로 lnaa 를 unlink 할 경우 각각 하드링크 수 줄어듦

 

 

복사와 하드링크, 심볼릭 링크 이해 <그림>