Search
🏫

[Unix 시스템] 3. 파일과 디렉터리

Tags
CS
Linux
Last edited time
2024/10/09 15:30
2 more properties
Search
[Unix 시스템] 5. 사용자 관리
CS
Linux
2024/10/20 7:19
[Unix 시스템] 5. 사용자 관리
CS
Linux
2024/10/20 7:19

1. 파일 시스템 탐색

1.1. 파일 시스템

운영체제가 디스크(파티션) 상에 파일들을 구성하는 방식
파일과 디렉터리의 집합을 구조적으로 관리하는 체계
다양한 형식의 파일 시스템이 존재
리눅스는 전체 파일 시스템을 1개의 트리구조로 관리
1개의 루트 디렉터리만 존재

1.2. 파일의 종류

정규 파일
데이터를 저장하는데 주로 사용
각종 텍스트 파일, 실행 파일 등 리눅스에서 사용하는 대부분의 파일
실행파일이나 이미파일의 경우 바이너리 형태로 저장되어 바이너리 파일이라고 함
디렉터리
리눅스에서는 디렉터리도 파일로 취급
해당 디렉터리에 젖아된 파일이나 하위 디렉터리에 대한 정보 저장
심볼릭 링크
소프트 링크라고도 함
절대 또는 상대 경로로 원본파일을 가리키는 링크
윈도우의 바로가기와 비슷
장치 파일
리눅스에서 프린터, CD-ROM, 하드디스크, 키보드 등과 같은 각종 장치를 파일로 취급
블록 디바이스 파일과 문제 디바이스 파일로 구분됨

1.3. 파일 시스템 관련 명령

ls
파일과 서브 디렉터리 목록을 나열하는 명령어
ls directory
ls file
$ ls. >> date.txt myscript.sh 공개 문서 비디오 음악 >> list.txt test 다운로드 바탕화면 사진 템플릿 $ ls -l date.txt >> -rw-r--r--. 1 kdhong kdhong 76142 112 09:59 date.txt
Shell
복사
file
파일의 종류를 알려주는 명령
pwd
절대경로 방식으로 현재 작업 디렉터리를 알려주는 명령어
cd
작업 디렉터리 이동하는 명령어

2. 파일과 디렉터리 관리

2.1. 생성/변경/삭제 관련 명령

mkdir
디렉터리 생성
rmdir
디렉터리 삭제
비어있는 디렉터리만 삭제 가능
무조건 삭제 시 rm -rf dir 사용
cp
파일이나 디렉터리 복사하는 명령
cp file1 file2
cp files directory
cp -r directory1 directory2 - 디렉터리를 재귀적으로 복사할때 사용
mv
파일의 이름을 변경하거나 다른 디렉터리로 이동하는 명령
mv file1 file2 - 이름을 file2로 변경
mv dir1 dir2 - 디렉터링 이름을 dir2로 변경
rm
파일을 삭제하는 명령어

2.2. 파일의 접근권한

권한이 없는 사용자의 접근을 막기 위해 접근권한을 설정함
사용자 부류에 따라 읽기/쓰기/실행 권한을 각각 설정
권한이 총 9개로 각각 소유자 3개, 소유 그룹 3개, 기타 유저 3개의 권한을 나타냄
사용자 부류
소유자(u). 그룹(g), 기타(o)
권한
읽기(r): 파일의 내용 보기
쓰기(w): 파일의 내용 수정과 삭제 또는 파일 이름 바꾸기
실행(x): 파일을 실행하기
예시) cat2.txt
소유자: rw 권한
소유 그룹: rw 권한
기타 유저: r 권한
$ ls -l 합계 56 -rw-rw-r--. 1 kdhong kdhong 786 122 18:43 cat2.txt
Shell
복사

2.3. 디렉터리의 접근권한

권한
읽기(r): 디렉터리가 가진 파일과 서브 디렉터리 목록 보기
쓰기(w): 파일과 디렉터리를 만들거나 삭제하기
실행(x): 디렉터리로 이동하거나 디렉터리에서 프로그램을 실행하기 또는 파일 메타 정보 보기
디렉터리를 자유롭게 사용하려면 읽기/쓰기/실행 권한을 모두 가져아함
$ ls -ld /home ~jjpark drwxr-xr-x. 8 root root 20 123 16:27 /home drwx------. 26 jjpark jjpark 4096 123 16:27 /home/jjpark
Shell
복사

2.4. 접근 권한 관련 명령 (1) chmod

파일 소유자가 파일의 접근권한을 변경하는 명령
chmod [options] mode files
-R 옵션을 디렉터리에 적용할 경우 포함된 모든 파일과 서브 디렉터리까지 권한 변경
8진수 모드
읽기(r)는 4, 쓰기(w)는 2, 실행(x)는 1
예) rwxr-xr-x → 111101101 → 755
rwx = 4 + 2+ 1 = 7 → 2진수로 나타내면 111
r-x = 4 + 1 = 5 → 2진수로 나타내면 101
chmod -R 755 dir 1
기호 모드
[ugoa][+-=][rwx]
ugoa는 각각 user, group, other, all을 나타내며 생략하면 all
+-=는 각각 권한의 추가, 제거, 지정을 의미
chmod u+x file1 → 유저에게 실행 권한 추가
chmod u=rwx,g=rx,o=x file2

2.5. 접근 권한 관련 명령 (2) umask

파일이나 디렉터리 접근권한의 기본값을 출력하거나 설정하는 명령
보통/etc/bashrc에 설정되어 있음
umask [-S] [mask]
단순히 umask (또는 umask -S) 명령을 실행하면 현개 기본값을 알 수 있음
umask 002
마스크값이 002라는 것은 ———W-, 즉 기타 사용자에게 쓰기 권한을 부여하지 않겠다는 것을 의미
결국 마스크 값이 002라는 것은 디렉터리에 775라는 접근 권한을 주는 것
파일의 경우 실행권한은 부여되지 않으며 접근권한은 664가 됨

2.6. 접근 권한 관련 명령 (3) chown

root 사용자가 파일이나 디렉터리의 소유자 또는 그룹을 변경하는 명령
change owner의 약작
파일(또는 디렉터리)의 소유자는 파일을 생성한 사용자로, 소유 그룹은 그 상요자가 속한 그룹으로 기본 설정됨
chown [options] newowner files
newowner에 소유자만 주어지면 소유자만 변경하는 것

2.7. 기타 명령 ln

파일을 다른 이름으로 연결하는 명령
ln [options] 원본파일명 [대상파일명]
기본적으로 하드링크를 만들며, -s 옵션을 사용하면 심벌릭 링크가 만들어짐
하드 링크
하나의 파일에 다른 이름을 부여하는 것
원본 파일의 링크 카운트가 증가함
다른 파일 시스템에는 링크 할 수 없음. 디렉터리에도 만들 수 없음
심벌릭 링크
윈도우의 바로가기와 같은 역할로 독립적인 파일
다른 파일 시스템에 심벌릭 링크를 만들 수 있음
원본을 삭제하면 심벌릭 링크는 의미가 없어짐
디렉터리의 경우, 심벌릭 링크만 만들 수 있음
하드 링크과 심벌릭 링크의 차이
$ ls -l file1 rw-rw-r--. 1 kdhong kdhong 588 44 15:58 file1 $ ln file1 file1.hl $ ln -s file1 file1.sl $ ls -li file1* 284496 -rw-rw-r--. 2 kdhong kdhong 588 44 20:27 file1 # inode 값이 같음 284496 -rw-rw-r--. 2 kdhong kdhong 588 44 20:27 file1.hl # inode 값이 같음 284718 lrwxrwxrwx. 1 kdhong kdhong 5 44 00:23 file1.sl -> file1 # inode 값이 다름
Shell
복사

3. 파일의 내용 확인

3.1. 파일의 내용 확인 명령 (1) more, less

more
파일의 내용을 화면 단위로 출력하는 명령
한 화면을 보여주고 일단 멈춤
예) more –20 +10 /etc/services
20라인 단위로 보여주며, 10번째 라인부터 보여줌
less
more 명령의 개선된 버전
위 또는 아래로 스크롤 가능

3.2. 파일의 내용 확인 명령 (2) head, tail

head
파일의 맨 앞 부분을 출력
예) head -n5 /etc/passwd - 5개의 라인을 출력
tail
파일의 마지막 부분을 출력하는 명령
-f 옵션을 사용하면 파일 내용 변화 감시 가능
예) tail -f /var/log/messages

3.3. 파일의 내용 확인 명령 (3) cat

하나의 파일 또는 여러 파일을 연결시켜 화면에 출력
cat [options] [files]
cat > file 을 수행하여 텍스트 파일로 만들 수도 있음
여러 파일의 내용을 연결시킬때 > 를 사용할 수 있음
옵션 -n 을 사용하면 출력 결과에 라인 번호를 붙일 수 있음
예)
$ cat > cat1.txt 123123213 12313131 cmd+d $ cat cat1.txt 123123213 12313131 $ cat cat*.txt > total.txt $ cat total.txt 123123213 12313131
Shell
복사