개발자 끄적끄적
셀과 파일 시스템 본문
<리눅스 파일 시스템>
1. ext2 파일 시스템
- 단일 파일의 크기가 최대 2Giga byte
- 파일명은 최대 256Byte
- 최대 지원 파일 시스템 크기는 4 Tera byte
- 디렉토리 당 저장 가능한 최대 파일 수 약 25,500개
2. ext3 파일 시스템
- 단일 파일크기 제한은 4Giga byte
- 파일명은 최대 256Byte
- 최대 파일 시스템 크기는 16Tera byte
- 디렉토리 당 저장 가능한 최대 파일 수 약 65,565개
- 저널링 파일 시스템을 지원
*저널링 파일 시스템 : 파일 시스템 오류 수정을 위한 파일 시스템
3. ext4 파일 시스템
- 대용량 파일 지원
- 호환성 : 마운트 가능
- fsk 기능 향상
- Extends 지원
- 하위 디렉토리 확대
- 조각 모음 : ext3 저널링 파일 시스템에서 발생되는 단편화를 조각모음으로 개선
<셸(Shell) 및 환경변수>
<셸(Shell)>
- 운영체제와 사용자 간에 대화식 인터페이스를 제공
- 리눅스 표준 셸은 bash
- 커널을 호출하여 커널에게 명령을 실행하고 그 결과를 출력
<셸 기능>
- 시그널 처리
- 프로그램을 실행
- 파이프, 리다이랙션, 백그라운드 프로세스 설정
- 입력된 내용을 파악해서 명령 줄을 분석
- 와일드 카드, 히스토리 문자, 특수문자 분석
- env : 셸 환경정보 확인
- set : 셸 환경변수 설정
- 셸의 종류 : /etc/shells 파일 확인
<셸(Shell) 종류>
1. C shell
- 사용자의 작업 환경의 편리성을 위하여 cshrc 파일에 필요한 환경 변수를
저장하여 사용자가 로그인 시에 지정 명령들의 자동 수행 가능
2. Bourne shell
- 사용자의 편의성을 위하여 .profile 파일에 환경 변수를 저장
- .profile 역할은 C셸의 .cshrc 파일과 동일
3. Korn shell
- .kshrc 또는 .profile 파일에 환경 변수를 저장
- C셸 기능을 모두 제공
- 셸 스크립트 언어는 Bourne shell과 유사
4. Bash shell
- C shell과 Korn shell의 특징을 결합한것으로
GNU 프로젝트에 의해서 개발된 셸
- 리눅스에서 가장 많이 사용
- 명령 편집 기능을 제공
5. TC shell
- C shell의 기능을 강화한 것으로 명령 편집 기능을 제공
<chsh 명령>
- 기본 쎌을 다른 셸로 변경할 때 사용하는 리눅스 터미날 명령
<chsh 옵션>
-s : 지정한 셸을 앞으로 사용할 로그인 셸로 변경
-l(list) : /etc/shells 파일 내에 지정된 셸을 출력
-u(usage) : 도움말을 출력
-v(version) : 버전정보를 출력
<환경설정 파일 및 환경 변수>
1. 환경설정 파일
- 셸(Shell) 환경설정 파일은 사용자가 로그인 및 로그아웃 시에 실행해야 하는
작업을 포함하고 있는 파일
1) 시스템 전역 설정파일
- /etc/profile
- 시스템 전역 초기화 피일로 로그인 셸에서 실행
- /etc/bashrc
- 일반적으로 사용되는 설정
- 시스템 전체 환경, 시작 프로그램 설정, 로그인 셋업 기능, alias는 정의
- /etc/profile.d/*sh
- 시스템 내부의 설정을 가진 파일
- sh라는 확장자를 가진다
2) 사용자별 설정파일
- .bash_profile
- 사용자 홈 디렉토리에 있는 파일
- 개별적인 셸 환경을 설정
- .bashrc
- 사용자 정의 변수, 함수 alias를 정의
- .bash_logout
- 사용자가 로그아웃할 때 실행되는 파일을 정의
2. 환경변수
- 특정한 의미로 설정된 값
- 유용하게 사용될 변수 및 설정해야 하는 값을 설정
- env 명령어 : 현재 환경에 설정되어 있는 모든 변수를 확인
<환경변수>
SHELL : 사용자의 로그인 셸의 절대경로
HOME : 홈 디렉토리에 대한 경로 이름
PATH : 실행할 명령어를 찾을 경로
USER : 사용자 이름
LOGNAME : 로그인할 때 사용할 이름
TERM : 사용 중인 단말기를 설명
MAIL : 전자메일 우편함
HOSTNAME : 호스트 명을 의미
TMOUT : 이 시간 동안 명령 등의 입력이 없으면 연결이 종료
<권한관리 및 그룹 설정>
1. umask(666)
- Default 권한 값을 가지고 있는 것은 umask값이다
- 읽기 : r(=4)
- 쓰기 : w(=2)
- 실행 : x(=0)
*디렉토리 권한은 777
2. chmod(change mode)
- 사용자에게 권한을 부여 u옵션(user)
- 그룹에게 권한을 부여 g옵션(group)
- 다른 사용자에게 권한 부여 o옵션(other)
- chmod[옵션] 파일명 최고권한은 777이다
- 읽기 : r(=4)
- 쓰기 : w(=2)
- 실행 : x(=1)
<리눅스 파일의 종류>
- u : user
- g : group
- o : other
- a : all
- + : 권한 추가
- - : 권한 삭제(회수)
- r : 읽기
- w : 쓰기
- x : 실행
3. chown(change owner)
- 파일에 대한 사용자와 그룹을 변경
<chown 옵션>
-R : 하위 디렉토리의 모든 권한 변경
-c(content) : 권한변경 파일 내용 출력
<chown 명령어 대상>
- u(user) / g(group) / o(other) / a(all)
<chown 명령어 인자값>
+(권한 추가) / -(권한 제거) / =(해당 권한으로 그대로 변경)
<권한>
- r : 읽기 권한
- w : 쓰기 권한
- x : 실행 권한
4. chgrp(chage group)
- 파일이나 디렉토리의 소유그룹을 변경
<chgrp 옵션>
-c(content) : 실제 변경된 것을 보여줌
-h : 심볼릭 링크 자체의 그룹을 변경
-f : 그룹이 변경되지 않은 파일에 대해서 오류 메시지를 보여주지 않음
-v : 작업 진행 상태를 설명
-R : 하위 모든 파일도 지정한 그룹으로 변경
<특수 권한>
1. setuid(set user id)
- 설정된 파일의 해당 파일을 다른 사용자가 실행하게 되면,
그 파일의 소유자의 권한으로 실행되는 파일
- setuid에서 소문자(s) - 실행권한O/ 대문자(S) - 실행권한X
- 설정 : 8진수 4000
2. setgid(set group id)
- 파일 생성자의 그룹 소유권을 얻는 것
- 설정 : 8진수 2000
3. sticky bit
- 공용 디렉토리를 만들어서 모두들 자유롭게 사용할 수 있도록 하기 위해
- 권한부여 : 1000
- 해당 디렉토리의 삭제만큼 해당 디렉토리 소유자만 가능(root는 제외)
- 즉, /tmp 디렉토리를 확인하면 drwxrwxrwt로 나타나며,
t라는 것이 sticky bit로 설정되어 있다
<특수 권한 파일 종류>
- setuid : 실행 파일에서 사용(/etc/passwd)
- setgid : 동일한 project에 실행 권한을 부여하기 위하여 setgid 사용
- sticky bit : 디렉터리 내에 인가된 사용자만 쓰기(write) 가능하도록 하기 위해 설정
<특수권한 파일 설정>
구분 : 4=setuid
특수권한 설정 : #chmod 4755 setuid_program
특수권한 파일 검색 : #find /-perm - 4000 -print
구분 : 2=getgid
특수권한 설정 : #chmod 2755 setgid_program
특수권한 파일 검색 : #find /-perm - 2000 -print
구분 :1=sticky bit
특수권한 설정 : #chmod 1777 sticky bit_directory
특수권한 파일 검색 : #find /-perm - 1000 -print
ex) - find / -perm 7000 -print : suid, sgid, sticky
-> suid, sgid, sticky bit가 모두 설정된 파일을 검사
ex) - find / -perm 6000 -print
-> suid, sgid가 설정된 파일을 검사
'Linux' 카테고리의 다른 글
에디터 (2) | 2023.03.03 |
---|---|
리눅스(Linux) 개요 (0) | 2023.03.03 |
리눅스 응용분야 (0) | 2023.03.03 |