우당탕탕 개발일지
리눅스 마스터 2급 - 1과목 본문
권한 관리
umask
- 파일이나 디렉터리 생성 시 부여되는 기본 허가권 값을 지정하는 명령
- 기본값으로 설정한 umask 값의 보수와 AND 연산을 통해 지정
- 파일 : 666 (rw-rw-rw-)
- 디렉터리 : 777 (rwxrwxrwx)
<문제>
파일이기 때문에 666-022 = 644
=> -rw- r-- r-- 의 형식으로 6 4 4 를 표현
su (switch user)
- 다른 사용자로 전환하는 명령어
- 참조 파일 - /bin/su
passwd
- 사용자 비밀번호 변경 명령어
* 참조 파일
- /etc/passwd(명령어 실행 파일 위치) - 시스템에 등록된 사용자의 정보들이 담겨있는 파일
- /etc/shadow - 암호화된 패스워드와 패스워드 설정 정책이 기재되어 있는 파일
- 비밀번호를 설정하면 /etc/passwd에 적히고 그 적힌 비밀번호는 /etc/shadow로 이동
필드 1 | 사용자명 | 필드 5 | 사용자 이름 |
필드 2 | 패스워드 | 필드 6 | 사용자 홈 디렉터리 |
필드 3 | 사용자 UID | 필드 7 | 사용자 로그인 쉘 |
필드 4 | 사용자 GID |
* /dev/null - 데이터를 버리는 데 사용
소유권 / 허가권
- 리눅스는 다중 사용자가 동시 접속하여 사용하는 다중 사용자 시스템
- 모든 파일과 디렉터리에는 소유권 과 허가권 이라는 속성이 존재
허가권 - chmod
- : 해당 파일의 종류
- Directory, Regular file, Symbolic link
rw- : 소유자 권한 / r-- : 그룹 권한 / r-- : 그외 유저 권한
- ‘r’ - 읽기 권한
- ‘w’ - 쓰기 권한**(디렉터리 - 생성 또는 삭제)**
- ‘x’ - 실행 권한
특수 권한
- Set-UID - 해당 파일의 소유자 권한으로 인식 소유자 권한 부분의 x자리에 d로 표시 (ex) rw-r--s--
- Set-GID - 해당 파일을 소유한 그룹 권한으로 인식 그룹 소유권 부분의 x자리에 s로 표시
- 권한이 설정된 디렉터리에 사용자들이 파일이나 디렉터리를 생성하면 사용자가 속한 그룹 상관없이 디렉터리 소유 그룹으로 만들어짐
- Sticky-Bit - 디렉터리에 설정되는 특수 권한 other 계층 권한 부분의 x자리가 t로 표시
- 숫자 모드의 경우 Set-UID는 4000, Set-GID는 2000, Sticky-Bit은 1000
* 특수 권한 설정 파일
- /bin/su
- /bin/mount
- /usr/bin/passwd
chmod 명령어
- 숫자 형식 (2진수 → 10진수)
- 3개씩 잘라서 2진수로 표시한 뒤, 10진수로 합치는 방식
- rw- : 110 → 6
- r-- : 100 → 4
- 문자 모드 (Symbolic method)
- 사용자, 권한, 설정
- 사용자 u(user), g(group), o(other)
- 권한 r(read), w(write), x(execute)
- 명령부호 +(추가), -(제거), =(특정 권한만)
- (EX) chmod o-x : o(other)에 대해서 x(Execute) 권한을 -(제거) 하라
소유권 - chown
- chown [옵션] [사용자명] [그룹명] [파일/디렉터리명]
-R | --recursive | 하위 디렉터리를 포함하여 디렉터리 내부 모든 파일 접근 권한 변경 |
-C | --changes | 변경된 정보 출력 |
-f | --silent --quiet |
중요한 오류 메시지가 아니면 출력하지 않음 |
-v | --verbose | 명령 진행 결과에 대한 정보를 자세히 출력 |
* 소유권 변경시 참조 파일 - /etc/passwd
chgrp (change group)
- 파일 또는 디렉토리의 그룹 소유자 변경
- chgrp [옵션] [그룹명] [파일/디렉터리명]
-c | --changes | 변경 사항이 있을 때만 메시지 출력 |
-h | 원본 파일의 소유권은 유지 / 심볼릭링크 파일의 그룹 소유권만 변경 | |
-R | --recursive | 지정된 디렉토리의 모든 파일 지정한 그룹으로 변경 |
디스크
mkfs
- 파티션에 파일 시스템 생성
-t | 파일 시스템의 종류 지정 |
mke2fs
- mkfs 확장 명령어
- ext3 - 저널링 파일 시스템
-j | 저널링 파일 시스템인 ext3 |
-t | 파일 시스템 유형 지정 |
-b | 블록 사이즈 지정 |
fdisk
- 디스크 파티션을 확인하고 추가/삭제하는 명령
t | 파티션의 속성 변경 |
d | 파티션 삭제 |
n | 파티션 추가 |
p | 디스크 정보 출력 |
fsck
- 손상된 파일 시스템을 검사하고 수리
- 디렉토리 - /lost+found
- 파일 시스템의 일관성을 검사하고 복구 작업을 수행하는 동안 발견되는 손상된 파일이나 디렉토리 저장
* xfs 파일은 xfs_repair로 점검 및 복구
du
- 디렉터리나 사용자별 디스크 사용량 확인
-h | 파일 및 디렉토리 사용량을 알기 쉬운 단위로 출력 |
df
- 파티션 단위 디스크 사용량
-h | 디스크 전체 사용량을 알기 쉬운 단위로 출력 |
-T | 파일 시스템 종류 출력 |
blkid
- 블록 장치(하드 디스크, SSD, 파티션)에 대한 정보를 표시
- 장치명 : UUID 파일시스템 타입 출력
mount
- 보조기억장치나 파일 시스템 연결
- mount 명령만 입력한 경우 현재 마운트 된 장치나 디스크 확인 가능
* 참조 파일 - /bin/mount
-a | /etc/fstab 파일에 명시된 파일시스템 마운트 |
-t | 파일 시스템 지정 |
-o | 마운트 세부 옵션 설정 |
umount
마운트된 /backup 영역을 마운트 해제하는 과정
eject
- CD-ROM이나 DVD-ROM 등 이동식 보조 기억장치의 미디어를 꺼낼 때 사용
- 명령어 수행시 umount 명령어 자동 수행
* /etc/inittab - init 데몬이 정보를 읽고 프로세스 시작
* /etc/mtab - 현재 마운트 된 정보에 대해 정의
* /etc/fstab - 부팅 시 마운트 정보에 대해 정의
[ 장치명 ] [ 마운트 포인트 ] [ 파일 시스템 종류 ] [ 마운트 옵션 ] [ Dump 값 ] [ 무결성 검사 우선순위 값 ]
RAID
RAID (Redundant Array of Inexpensive Disks)
- 여러 개의 디스크를 배열하여 속도의 증대, 안정성의 증대, 효율성, 가용성의 증대를 하는데 쓰이는 기술
RAID 0
- Striping = 데이터 분산 저장
- Concatenate 방식 - 두개 이상의 디스크에 데이터를 순차적으로 쓰는 방법
- Stripe 방식 - 두개 이상의 디스크에 데이터를 랜덤하게 쓰는 방법
RAID 1
- Mirroring = 데이터 복사 저장
- Mirror 볼륨 내의 패리티를 사용하지 않고 디스크에 같은 데이터를 중복 기록하여 데이터를 보존
- 최소 2개의 디스크 필요
RAID 5
- 1개의 패리티 사용 / 최소 3개의 디스크 필요
- 패리티 정보를 이용해서 하나의 디스크가 고장이 발생한 경우에도 데이터 사용이 가능한 구성 방식
RAID 6
- 2개의 패리티 사용 / 최소 4개의 디스크 필요
LVM (Logical Volume Manager)
- 여러 개의 HDD의 용량을 합쳐서 하나의 파일 시스템으로 구성
- 서버 운영에 있어서 작은 용량의 HDD를 하나로 합쳐 대용량의 스토리지를 구성할 때 사용
PV | Pysical Volume | 디스크를 LVM에서 사용할 수 있게 변환하는 작업 |
PE | Physical Extent | PV에서 나누어 사용하는 블록. 4MB 단위 |
VG | Volume Group | PV가 모여 만들어진 그룹 |
LV | Logical Volume | VG에서 사용자가 필요한 만큼 할당돼서 만들어지는 공간 |
LE | Logical Extent | LV가 나누어진 일정한 크기의 블록 |
디스크 쿼터
- 리눅스는 기본적으로 사용자의 용량을 제한하지 않는다.
- 사용자가 많은 서버의 경우 사용자의 디스크 사용량 제한이 필요
제한하는 것
- 사용자 및 그룹의 디스크 사용량
- 생성할 수 있는 파일 개수(l-node 개수)
설정 순서
quotacheck → edquota → quotaon → requota
quotacheck | 쿼터 기록 파일을 가장 최근의 상태로 업데이트 |
edquota | • 사용자나 그룹에 쿼터를 설정 • 실행시키면 vi 편집기 실행 |
quotaon/quotaoff | 쿼터 설정을 활성화/비활성화 |
repquota | 파일 시스템 단위로 쿼터 설정 정보를 출력 |
setquota | 쿼터를 설정 |
quota | 파일 용량 개수 설정 |
usrquota | 사용자 할당량 사용 |
uquota | xfs 파일에 적용 |
* xfs가 들어가면 CentOs 관련
프로세스
- 리눅스가 부팅을 시작하면 커널이 최초의 프로세스인 init 프로세스를 발생시키는데, 할당되는 PID는 1이다.
- CentOS 7 리눅스에서는 최초 프로세스가 init 대신 systemd가 사용된다.
- 프로세스는 크게 사용자의 입력에 관계없이 실행되는 Background 프로세스와 입력 후 수행종료까지 기다리는 Foreground 프로세스가 있다.
ps (process status)
- 동작중인 프로세스의 상태 출력
-a | 현재 실행중인 모든 프로세스 출력 |
-u | 사용자 이름과 프로세스 시작 시간 출력 |
-x | 접속된 터미널뿐만 아니라 사용되고 있는 모든 프로세스 출력 |
* ps aux - 현재 시스템 사용자가 사용중인 모든 프로세스 정보 확인
fork
새로운 프로세스를 위해 메모리를 할당받아 복사본 형태의 프로세스를 실행
exec
하나의 프로세스가 새로운 프로세스를 생성할 때 원래의 프로세스를 새로운 프로세스로 대체하는 형태로 호출한 프로세스의 메모리에 새로운 프로세스의 코드를 덮어씌워 버린다.
jobs
백그라운드로 실행시킨 프로세스를 확인하는 명령
Foreground (fg)
- 셸에서 명령을 실행하면 해당 프로세스가 종료될 때까지 기다려야함
- 거의 모든 명령어는 foreground로 실행
- 백그라운드 작업으로 실행하고자 할때는 명령어 뒤에 ‘&’를 붙여줌
Background (bg)
- 다중 작업을 수행할 때 유용
- 명령어 뒤에 &문자를 붙이게 될 경우 백그라운드로 실행
ctrl + c | 작업 취소 |
ctrl + d | 작업 정상 종료 |
ctrl + z | 작업 일시 정지 |
실행중인 프로세스를 백그라운드 모드로 전환하기
- jobs를 이용하여 현재 앞쪽의 번호 확인 후 bg명령어 %[번호]를 이용하여 백그라운드 전환
- [ctrl]+[z]로 포그라운드 프로세스는 정지 시키고 백그라운드 프로세스로 전환해야함
시그널
- 프로세스 간 메시지를 보내는 통신에 이용
1 | SIGHUP | 터미널과 연결이 끊겼을 때 발생 |
2 | SIGINT | 키보드로부터 오는 인터럽트 시그널 |
3 | SIGQUIT | 프로세스 종료 |
9 | SIGKILL | 프로세스 무조건 종료 (강제) |
15 | SIGTERM | • 프로세서가 어떻게 동작 할건지에 대한 명령 신호를 보내는 명령 • ‘kill’ 시스템 호출 시 옵션 넣지 않으면 15번 시그널 사용 |
18 | SIGCONT | STOP 시그널 이후 계속 진행할 때 사용 |
20 | SIGTSTP | 프로세스 중단 (종료 상태 X) |
kill
- 프로세스를 종료시킨다.
-l | 시그널 종류 나열 |
-s [시그널 번호] | 전달할 시그널 종류 지정 |
kill -9 [PID] | -9 : 강제 종료 옵션 |
killall [프로세스명] | 프로세스명으로 프로세스 종료 |
free
- 메모리 사용량 확인하는 명령
top
- 시스템 상태를 실시간으로 모니터링하거나 프로세스 관리
- 실시간으로 CPU 사용량을 확인할 때 이용하는 명령
k | PID를 입력하여 종료신호를 보냄 |
m | 메모리 관련 항목을 on/off |
w | 바꾼 설정을 저장 |
우선순위
ps -l | 우선순위 확인 명령 |
PRI 번호 | • 운영체제가 참고하는 항목으로 사용자가 인위적으로 조작 x • 낮은 값일수록 우선순위가 높음 |
NI 번호 | • 관리자와 사용자가 조작할 수 있는 우선순위 값 • 낮은 값일수록 우선순위가 높음 • -20부터 19까지 설정 가능 |
nice [-n 조정수치][프로세스명] | 새로운 프로세스를 만들어 NI값 적용 |
renice [NI값][PID] | 기존 프로세스에 NI값 변경 |
* nice는 프로세스 명을 입력해야되고, renice는 PID 값을 입력해야 한다.
스케줄링
- 특정 시간에 특정 작업을 하는 데몬을 크론(Cron)이라 한다.
- 크론이 원하는 시간에 원하는 명령 또는 프로그램을 수행하도록 명령 리스트를 만드는 것을 크론탭(Crontab) 작업이라고 한다.
cron
패키지 이름 - 버전 - 릴리스번호 - 시스템.압축확장자
시스템 운영에 필요한 작업
- root 권한으로 /etc/crontab에 등록해서 주기적으로 수행 가능
사용자의 필요에 의한 작업
- 사용자는 crontab 명령을 수행해서 등록 가능
- 설정된 작업은 ‘/var/spool/cron/사용자 아이디’ 파일로 저장
* crontab - 7개의 필드로 구성
-e | 편집 |
-l | 작업 내용 확인 |
-r | 전체 작업 삭제 |
crontab 주기
- *** * * * * {실행 명령}**
- 분 시 일 월 요일 {실행 명령}
- 요일 : 0과 7은 일요일이며 1부터 월요일
0 * * * * | 매시 정각에 실행 |
25,55 * * * * | 매시 25분, 55분에 실행 |
*/15 * * * * | 15분마다 실행 |
에디터
.exrc
- vi 편집기의 환경 설정을 지속적으로 사용하기 위한 설정 파일
* 문자 치환 - :% s/[변경 대상]/[변경 문자]/g
* 정규표현식 - 특정 규칙을 가진 문자열 집합을 표현하기 위한 형식
: | 현재줄 | ||
^ | 줄의 시작 | $ grep ‘^linux’ | linux로 시작하는 행 |
$ | 줄의 끝 | $ grep ‘linux$’ | linux로 끝나는 행 |
% | 첫줄부터 끝줄까지 | ||
\ < | 단어의 시작 | $ grep ‘\<linux’ | linux로 시작하는 단어를 포함하는 행 |
\ > | 단어의 끝 | $ grep ‘linux \>’ | linux로 끝나는 단어를 포함하는 행 |
-c | 특정 명령어 실행 |
-r | 이전에 편집 중이던 파일이 중단되거나 충돌로 인해 손실된 경우 복구 |
R | 읽기 전용 모드 (수정 불가능) |
+ | 파일을 열면서 커서를 특정 위치에 놓을 때 사용 |
-a | 커서 뒤부터 입력 |
-i | 현재 문자 앞에 입력 |
-o | 현재 커서 다음 줄로 입력 모드 |
-e | 커서가 위치한 단어의 맨 끝 부분으로 이동 |
-s | 커서 위치에 한 문자 지우고 입력 모드 |
-x | 커서에 위치한 문자 삭제 |
-u | 되돌리기(undo) |
-h | 커서를 한칸 왼쪽으로 이동하는 명령 |
-j | 커서를 한줄 아래로 이동하는 명령 |
-k | 커서를 한줄 위로 이동하는 명령 |
-l | 커서를 한칸 오른쪽으로 이동하는 명령 |
set ai | • 자동 들여쓰기 옵션 • 윗 라인에 맞춰 같이 자동으로 들여쓰기 |
set ic | 검색 패턴 사용 시 대소문자 구별 X |
set sm | 소스 코딩 작성 중 괄호를 닫을 때 어디에 있는 열기 괄호와 연관 되어 있는지 표시 |
set list | 눈에 보이지 않는 특수문자 표시 |
set nu (= set number) | 라인번호 출력 |
set nonu (= set nonumber) | 라인번호 해제 |
* vi 파일명 - 파일의 마지막 행으로 이동
* vi -r 파일명 - 파일 복구 후 잘못된 동작 이후부터
vi
- 빌 조이가 만든 편집기
pico
- 아보일 카사르가 만든 편집기
- 편집 시에 다양한 색상을 이용해서 가시성을 높였으며, 패턴 검색 시에 하이라이트 기능을 제공하여 빠른 검색이 가능
Ctrl + a | 커서가 위치한 줄의 맨 앞으로 이동 |
Ctrl + e | 커서가 위치한 줄의 맨 뒤로 이동 |
Ctrl + i | 화면 갱신 |
Ctrl + k | 현재 줄 삭제 |
Ctrl + o | 편집중인 문서 저장 |
nano
- GNU 프로젝트에서 만들어진 pico 복제 버전 편집기
- GPL 라이선스
- 터미널 기반 간단하고 사용하기 쉬운 에디터
- 초기 사용자나 간단한 텍스트 편집이 필요한 경우 적합
Ctrl + a | 현재 행의 맨 앞으로 이동 |
Ctrl + e | 현재 행의 마지막으로 이동 |
Ctrl + c | 현재 커서 위치 표시 |
Ctrl + x | nano 종료 |
gedit
- GNOME 데스크톱 환경에서 사용되는 GUI 기반 에디터
- 편리한 사용자 인터페이스와 여러 플러그인을 지원
emacs
- 리처드 스톨만이 제작
- 매크로 기능이 있는 텍스트 교정 및 편집기
vi 편집기 개발 순서
vi → pico → nano
패키지 관리
- 일반적으로 소스 패키지 설치는 configure, make, make install 3단계로 이루어진다.
configure
- 설치 전에 여러가지 옵션을 지정해주고 컴파일 환경을 검사하는 단계
- 빌드 환경을 만들어주는 스크립트
- 작업 이후 makefile이 생성됨
configure 옵션
--help | 환경 설정과 관련된 옵션 정보 확인 |
--prefix | 설치될 위치를 지정 |
- make : 미리 정해진 스크립트를 따라 소스 코드 컴파일 단계
- make install : 설치 마무리 단계
- cmake : 소스파일 내부까지 들여다보고 분석해서 의존성 정보 스스로 파악
make | PHP, SAMBA, Apache HTTP |
cmake | MySQL |
배포판 | 기본 패키지 관리 기법 | 온라인 패키지 관리 기법 |
레드햇 계열 | RPM | YUM |
데비안 계열 | Dpkg | apt-get |
수세 계열 | YaST | zipper |
RPM (RedHat Package Manager)
- 레드햇 계열의 리눅스 배포판에서 사용하는 패키지 설치 관리 도구
- 단점 : 패키지 의존성
--nodeps | 의존성 관계를 무시하고 설치 |
--force | 기존에 설치된 패키지와 관계없이 강제로 설치 |
-U | • 기존 패키지 업그레이드 • 설치된 패키지가 존재하지 않으면 새로운 버전 설치 |
-V | 파일이 침입자에 의해 권한 획득이나 변조되었는지 검사 |
-F | 기존 패키지가 있는 경우에만 설치 |
-e | 패키지 삭제 |
-e nodesps | 의존성 무시하고 제거 |
-q | 패키지 정보 표시 |
-qa | 시스템에 설치된 모든 패키지 목록 출력 |
-qf | 파일이 속한 패키지 출력 |
-ql | • 설치된 패키지의 위치 출력 • 패키지에서 설치한 모든 파일 정보 출력 |
-qi | • 설치된 패키지 명 출력 • 패키지 이름과 버전만 표시하여 정보 출력 |
yum (Yellodog Update Modified)
- 레드햇 계열의 리눅스 배포판에서 사용하는 프로그램 설치 관리 도구
- repository에 관련 페키지들을 모아두고, 네트워크를 통해서 의존성 검사하여 설치 및 업데이트 등을 수행
- 장점 : 패키지 간의 의존성을 신경쓰지 않고 설치 가능
install | 패키지 설치 |
remove | 패키지 삭제 |
history | 작업 이력 출력 |
list | 전체 패키지에 대한 정보 출력 |
apt-get
- 데비안 계열 리눅스 시스템에서 사용하는 패키지 설치 관리 도구
* 참조 파일 - /etc/apt/sources.list
압축
- tar는 파일을 묶는 역할을 하고 gz는 압축하는 역할을 한다.
- 압축 했을 때 파일 크기가 클 수록 압축률이 낮음
-r | append | 파일 내의 기록에 다른 파일 내용을 추가로 묶음 |
-c | create | 새 파일을 만듦 |
-x | extract | 기록에서 파일을 발췌 |
-t | list | 압축된 파일 안에 있는 구성 파일 출력 |
tar
tar 압축 방법 (create) - tar -cvf [새로운 파일명][압축할 파일명]
tar 압축파일 내용 확인 방법 (list) - tar -tvf [tar 파일명]
tar 압축파일 해제 방법 (extract) - tar -xvf [tar 파일명]
* rvf(replace) - 이미 생성된 아카이브에 파일 추가하는 기능
* 압축 효율 - Z(compress) << .gz(gzip) << .bz2(bzip2) << xz
compress | -Z | .Z |
gzip | -z | .gz |
bzip2 | -j | .bz2 |
xz | -J | xz |
gzip
- 파일 압축 및 압축 해제
-d | --decompre | 압축 파일 해제 |
-c | --stdout | 표준 출력으로 결과 출력 |
-l | 파일명 크기, 압축률 정보 출력 | |
-f | --force | 강제 압축 |
-r | --recursive | 디렉토리 파일도 압축 |
프로토콜
vsftpd
- FTP의 보안을 강조한 파일 전송 프로토콜
smb (Server Message Block)
- 파일 및 프린터 공유 프로토콜
환경 설정
환경변수
- 환경 변수는 시스템 내에 저장된 키 = 값 세트이다.
- $ → 뒤에 오는 표시가 변수라는 것을 정의
set | 셸에서 선언된 셸 변수 전체 조회 |
env | 환경 변수를 보여주거나 설정 혹은 삭제 |
export | 셸 변수를 환경변수로 저장 |
chsh | 사용 가능한 셸 목록 확인 |
DISPLAY | x 응용 프로그램이 화면 출력을 위해 접속할 때 x 서버 |
SHELL | 사용자의 로그인 셸 기록 |
PS1 | 1차 셸 prompt 선언시 사용 변수 |
PS2 | 2차 셸 prompt 선언시 사용 변수 |
chsh (=change shell)
- 일반 사용자 환경에서 셸 변경시 사용
-s | --shell | 지정하는 쉘을 앞으로 사용한 로그인 셸로 변경 |
-l | --list-shells | /etc/shells 파일 안에 지정된 변경이 가능한 셸 목록 출력 |
-v | --version | 버전 정보 출력 |
!! | 마지막에 사용한 명령 실행 |
!n | 히스토리 명령 목록 번호 중에서 n번에 해당하는 명령 실행 |
history n | 최근에 실행한 마지막 n개 명령어 목록 출력 |
HISTSIZE | 히스토리 스택의 개수 저장 |
HISTFILESIZE | 히스토리 저장 파일 최대 크기 |
데몬
- 데몬은 서버 프로세스로 시스템이 살아 있는 동안 항상 실행되는 백그라운드 프로세스 상태로 존재
ineted
- 관련 프로세스가 메모리에 항상 상주하는 것이 아니라, 클라언트 서비스 요청이 들어오면 관련 프로세스를 실행하고 서비스가 종료되면 관련 프로세스도 종료
- 효율적인 서버자원의 활용 측면에서 공통적인 부분을 처리하도록 클라이언트 요청을 슈퍼 데몬이 모두 처리
- 100개의 작업이 있더라도 작업을 처리하는 1개의 데몬만 존재
- 커널 2.4버전부터 xinetd 대체
standalone
- 데몬이 백그라운드에서 항상 실행되고 있다가 클라이언트로부터 해당 서비스의 요청이 발생하면 즉각 처리
셸
- 셸은 커널과 사용자 사이를 이어주는 매개체 역할을 하는 프로그램
로그인 셸
/bin/sh | 일반계정 생성 시 할당 |
/bin/bash | 사용자 계정에 로그인 했을 때 기본적으로 사용되는 쉘 |
/bin/false | shell, ssh 접근 및 홈디렉토리 제공 등 모든 것이 제한 |
/sbin/nologin | • 로그인이 안되는 계정 • 보안상의 이유로 nologin 계정 사용 • shell, ssh 접근 및 홈디렉토리는 제공하지 않음 |
셸 발전 순서
sh (Bourne Shell) → csh (C Shell) → tcsh (tee-see-Shell) → zsh (Z Shell) → bash (Bourne-again shell)
sh
- 스티브 본이 개발한 최초의 셸
- 대부분의 리눅스에 기본적으로 설치가 되어있다.
csh
- 빌 조이가 개발한 셸
- C언어를 기반으로 만들어졌다.
tcsh
- 카네리 멜런 대학교 학생들이 개발한 셸
- 켄 그리어가 테넥스(TENEX)라는 운영체제에 반영한 C Shell에서 명령 행 완성과 명령 행 편집 기능을 추가
zsh
- 폴 포스타드가 첫 버전 작성
- 많은 개선 사항들이 갖추어진 확장형 Bourne Shell
- Mac OS의 기본 셸로 채택
bash
- GNU 프로젝트를 위해 브라이언 폭스가 작성한 현재 가장 많이 쓰이는 유닉스 셸
- GNU 운영체제와 리눅스 등 기본 셸로 채택
dash
- POSIX와 호환되는 /bin/sh를 가능한 작게 구현
- 빠른 작업 수행이 가능
- history 명령 지원
ksh (Kornshell)
- 1980년대 초에 벨 연구소의 데이비드 콘이 개발한 유닉스 셸
* /etc/passwd - 사용자의 로그인 셸 정보 확인
* /etc/shells - 사용 가능한 셸 목록
* /etc/profile - 시스템 환경변수와 시작관련 프로그램
~/.bashrc - 개인 사용자가 정의하는 alias, function이 있는 파일
~/.bash_logout - 사용자가 로그아웃하기 바로 직전에 실행하는 프로그램에 관한 시스템 설정 파일
~/.bash_profile - 개인 사용자의 시작 프로그램 설정, 환경 변수 설정과 관련있는 파일
파일
ext (Extended File System)
- 리눅스 운영 체제를 목표로 만들어진 첫 번째 파일 시스템
vfat (Virtual File Allocation Table)
- Microsoft가 개발한 파일 시스템
- windows 운영체제와 호환성을 유지하면서 다양한 기기에서 사용
ntfs (New Technology File System)
- Microsoft vfat을 대체
- 고급 데이터 구조 사용으로 인한 성능 개선
- 추가 확장 기능을 더한 디스크 공간 활용
장치
ALSA (Advanced Linux Sound Architecture)
- 사운드 카드용 장치 드라이버를 위한 API를 제공하는 소프트웨어 프레임워크
- 리눅스에서 Audio 장치를 접근하는 방법을 구조화
- GPL 및 LGPL 라이선스 기반으로 배포
* alsactl - 사운드 카드를 제어하는 명령
OSS (Open Sound System)
- 유닉스 및 유닉스 계열 운영 체제의 사운드를 만들고 캡쳐하는 인터페이스
- 표준 유닉스 장치시스템 콜(POSIX)에 기반
* 프린터
[ LPRng → CUPS ]
리눅스에서 프린터를 지원해주는 인쇄시스템으로 초기에는 LPRng를 기본으로 사용했으나 최근 배포판에서는 CUPS를 사용하고 있다.
LPRng
- 버클리 프린팅 시스템
- BSD 계열 유닉스에서 사용하기 위해 개발
- BSD, SystemV 계열 모두 지원
* 설정 디렉토리 - /etc/printcap
CUPS
- 유닉스 계열의 프린팅 시스템
- 애플이 오픈소스 프린팅 시스템으로 개발
- 웹 서버의 Common Log Format 형태의 로그 파일을 제공
- HTTP 기반의 IPP를 사용하고, SMB 프로토콜도 부분적으로 지원
- 프린트 데몬의 환경 설정 파일의 기본 문법이 아파치의 httpd.conf와 유사
* 설정 명령 - lpadmin
* 설정 디렉토리 - /etc/cups
- lPP (Internet Printing Protocol) - 인터넷상에서 원격으로 인쇄하기 위해 사용되는 프로토콜
BSD 계열 명령어
lpr - 프린터 작업 요청
-# | 인쇄매수 지정 |
-r | 출력 완료 후 파일 삭제 |
-P | 작업할 프린터 지정 |
-F | 파일 포맷 설정 |
lprm - 프린터 큐 목록 대기중인 작업 삭제 및 취소
- | 모든 작업 취소 |
-P | 프린터 지정 |
-U | 특정 사용자의 작업 취소 |
lpq - 프린트 큐에 있는 작업 내역 확인
-l | 자세히 출력 |
-P | 특정 프린터 지정 후 출력 |
-a | 모든 프린터 작업 출력 |
lpc - 프린터 큐 작업 내역 제어
cancel - Ipstat를 이용하여 request ID를 확인 후 프린트 작업 취소
* 프린터 설정 명령
- system-config-printer - x-windows
- printconf / printtool - Red Hat Linux & Fedora
System V 계열 명령어
lp | 프린트 인쇄 명령 |
lpstat | 프린트 큐 상태 출력 |
cancel | 프린트 작업 취소 |
* 스캐너
SANE (Scanner Access Now Easy)
- 리눅스 및 유닉스 계열
- 평판 스캐너 등 이미지 관련 하드웨어를 사용할 수 있도록 해주는 API
- GPL 라이선스로 공개되어 있다.
- 스캐너 관련 드라이버와 사용자 관련 명령이 있는 2개의 패키지로 구분되어 배포
XSANE (X-based interface for the SANE)
- SANE을 기초로 발전시킨 프로그램
- GTK+ 라이브러리로 만들어짐
* 스캐너 명령어
xcam - GUI 기반으로 이미지를 스캔 해주는 도구
scanadf - 자동 문서 공급 장치(ADF)가 장착된 스캐너에서 다수의 사진을 스캔할 때 사용하는 명령
scane-find-scanner - USB 혹은 SCSI 스캐너와 관련 장치 파일을 찾아주는 명령어
PCI (Peripheral Component Interconnect)
- 컴퓨터 시스템에 추가 하드웨어 구성 요소를 추가하기 위한 인터페이스
* lspci - PCI 관련 장치의 목록 확인
'기타 > 자격증' 카테고리의 다른 글
SAA - 03 키워드 정리 (1) | 2024.02.06 |
---|---|
리눅스 마스터 2급 - 2과목 (0) | 2023.12.11 |
SQLD 계층형 질의와 셀프 조인 (1) | 2023.11.13 |
SQLD 표준 조인 (0) | 2023.11.13 |