우주먼지
article thumbnail
Published 2022. 8. 25. 22:22
Linux 기초 Ops/Linux

공통

 

, 띄어쓰기 
samba = 띄어쓰기
/etc/aliases = 콤마
reverse zone = 점. 도메인 뒤 / (전부다 점 붙음)
/etc/hosts.allow = 대역만 뒤에 점 / 도메인은 앞에 점 (localhost는 점아무것도안붙음)
help::include:/etc/helpdesk

PREROUTING = 외부 -> 내부 도착
POSTROUTING = 내부 -> 외부 nat

reverse zone, samba, wrapper = 192.168.0.
나머지 = 192.168.0.1/24

1901 까지 다함ㅁ
/proc/partitions    or    /etc/blkid/blkid.tab    =   장치 인식 또는 파일명 확인
yum -ql (--query-list) = 패키지가 설치한 파일 및 디렉터리 목록 출력
yum --erase (-e) 제거
dd if=a.txt of=b.txt conv=lcase (소문자로 치환)


squid


http_port 8080  = 포트설정
acl ihdnet src 192.168.5.0/24   = 대역에 별칭설정
http_access allow ihdnet   = 호스트 사용 허가


nmap

 

nmap -p 0-1023 localhost
netstat -ap | grep 55176   or    lsof | grep 55176       <- nmap으로 뜬 수상한 포트가 사용중인 프로세스의 PID를 확인
ls -l /proc/PID/exe         <- 위의 결과로 뜬 프로세스를 실행시킨 명령의 절대경로 확인


xinetd

 

/etc/einetd.conf 접근 제어

only_from = 허용가능한 ip (혹은 대역)
no_access = 접근제한한 ip (혹은 대역)


[우선순위] only_from < no_access ( 두 설정이 같이 설정되있는 경우 )


ex) 100.100.100.0대역대를 허용 100.100.100.3은 차단
    only_from = 100.100.100.0 <- 허용 호스트
    no_access = 100.100.100.3 <- 차단 호스트


access_time = 서비스 타임
instances = 30   <- 동시 서비스 서버 개수
per_source = 3 <- 특정 ip주소 하나당 서비스 개수 제한
access_times = 20:00-22:00   <- 접속가능시간 설정

 

/etc/xinetd.d/vsftpd

service ftp

{
disable = noq
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/vsftpd
}

vi /etc/vsftpd/ftpusers = ftp 서버 접근 거부 호스트 설정
vi /etc/vsftpd/vsftpd.conf 
chroot_local_user=YES       <- 접속한 사용자의 홈디렉터리를 최상위 디렉터리로 지정


cron

 

  • 1월부터 12월까지 2개월마다 1일 오전 4시 10분에 해당 관련 스크립트를 실행한다.
    • 10 4 1 1-12/2 *
  • 매주 월요일 오전 3시 5분에 백업 스크립트를 실행한다
    • 5 3 * * 1 

telnet

 

systemctl start telnet.socket

 

/etc/hosts.deny

  • ALL: ALL
    • 모든 서비스에 대해 모든 호스트 접근 차단

 

/etc/hosts.allow

  • in.telnetd: 192.168.12.
    • 텔넷 서비스에 대해 192.168.12.0 대역의 호스트 접근 허가
  • sshd: 192.168.5.13
    • ssh 서비스에 대해 ip가 192.168.5.13인 호스트만 허가
  • vsftpd: .ihd.or.kr   ( 앞에 . 이있음 )
    • vsftpd 서비스에 대해 ihd.or.kr 도메인에 속한 호스트만 허가

DHCP

 

host ihd_com {
  hardware ethernet (맥주소);
  fixed-address 192.168.5.13;           <- 위 맥주소에 해당하는 장비의 IP를 이걸로 고정


SAMBA

 

서버 디렉터리 공유 acl = vaild users
smbclient -L -U
SAMBA 디렉터리 공유 =  path = /home/data
삼바서버 환경설정파일 설정여부 확인 = testparm
삼바 클라 -> 삼바 서버 공유디렉터리 확인 = smbclient -L
공유디렉터리 접근 \\\\192.168.1.1\\data       or    //192.168.1.1/data

윈도우에서 이름으로 접근할때의 명칭은 ihd_com 으로 지정
netbios name = ihd_com
공유 그룹명은 IHD로 지정
workgroup = IHD
서버에 대한 설명은 IHD server로 지정
server string = IHD server
접근할수있는 호스트는 192.168.5.0 대역에 속한 모든 호스트 + 로컬시스템으로 제한
hosts allow= 127. 192.168.5.


NIS

 

NIS 클라에서 NIS 서버 및 도메인명을 지정하는 파일 명

/etc/yp.conf


NIS클라에서 NIS서버명과 관련 맵 파일명 검색

ypwhich


RPC 관련 데몬 실행

service rpcbind start


NIS 관련 데몬 실행
service ypserv start
service yppassword start
service ypxfrd start


nisdomainname (name)

nis도메인명 지정 ( reboot 시 초기화 ) 

 

/etc/sysconfig/network NISDOMAINNAME

reboot 해도 설정 저장


DNS

 

정방향

ns , 관리자메일 뒤에 점 , 밑부분은 도메인 뒤에만점. 


역방향

나머지 똑같고 , 밑부분 아이피뒤에도 점

 

레코드


A

도메인 이름에 해당하는 ipv4
  - www IN A 192.168.12.22


AAAA

도메인 이름에 해당하는 ipv6


CNAME

도메인 이름의 별칭
  - www1 IN CNAME www      <- www1을 www로


HINFO

CPU,OS 유형 등 호스트의 정보


MX

도메인 이름에 대한 메일교환서버  (교환)
  - IN MX 10  ihd.or.kr   <- 일로 메일 전달하게함


NS

호스트에 대한 공식 네임서버


PTR

IP주소를 기반으로 도메인 이름 반환


SOA

도메인 관리자 메일, 일련번호 등 DNS 핵심정보 지정


TXT

임의의 텍스트 문자열 저장

DNS 환경설정 파일

hint , named.ca

Zone 파일 설정

ns.idc.or.kr.  kait.idc.or.kr.  (두개다 뒤에 점이 있음)

 

 

 

도메인에 대한 질의를 다른 DNS 서버인 168.126.63.1로 넘기는데 이서버에서 응답이 없을때도 처리하지않는다.
forward only;
forwarders { 168.126.63.1; };
도메인에 대한 질의를 다른 DNS 서버인 168.126.63.1로 넘기는데 이서버에서 응답이 없을 경우에만 처리
forward first;
forwarders { 168.126.63.1; };

ip가 192.168.5.13 및 192.168.12.22인 호스트와 192.168.6.0 대역에 속한 호스트를 ihd라는 하나의 명칭으로 지정
acl "ihd" { 192.168.5.13; 192.168.12.22; 192.168.6/24; };

zone 파일의 내용을 복사할 대상으로 192.168.5.0 대역 호스트들만 허가
allow-transfer { 192.168.5/24; };

네임 서버에 질의할수있는 호스트 대역을 192.168.12.0 / 192.168.3.13 대역만 가능하게 설정
allow-query { 192.168.12/24; 192.168.3.13; };

특정 네트워크 대역에 속한 호스트만 ssh 서비스 허가 = 192.168.56.   <- 점까지 포함

DNS Reverse zone 파일 설정
■ 조건

- IP 주소는 10.0.2.15이고, 설정하는 도메인은 ihd.or.kr이다.

- 관리자 메일 주소는 kait@ihd.or.kr로 설정한다.

- 네임 서버는 ns.ihd.or.kr을 사용한다.

- 10.0.2.15인 IP 주소를 조회하면 ihd.or.kr가 나타나도록 설정한다.

@   IN  SOA  ns.ihd.or.kr. kait.ihd.or.kr. (          ( ns= 도메인 , kait =  관리자메일)
-- 중략
3H )   ; minimuum
IN NS ns.ihd.or.kr.
15 IN PTR ihd.or.kr.

↑ 15 , IN 생략가능
생락하면
NS ns.ihd.or.kr.
PTR ihd.or.kr.


httpd

 

Allow Override Autnconfig
아파치 환경설정 파일 = DirectoryIndex index.html index.htm index.php
아파치 가상호스트 정보 확인 명령 = httpd -S
httpd 2.4 버전 홈디렉토리 변경 파일명 = httpd-userdir.conf

관련 모듈과 환경 설정 파일 활성화 (소스 컴파일 이용 경로 /usr/local/apache 디렉토리)
vi httpd.conf
LoadModule userdir_module modules/mod_userdir.so
Include conf/extra/httpd-userdir.conf
Userdir www   
Order Deny,Allow
Deny from All
Allow from 192.168.12.22/24



개인사용자들의 웹문서가 위치하는 디렉터리를 www로 지정
vi /usr/local/apache/conf/extra/httpd-userdir.conf
Userdir www   
htpasswd -c /usr/local/apache/conf/passwd ihduser   아파치 웹 사용자 생성
httpd -t    =  문법오류 검사
httpd -k graceful     =  아파치 웹 서버를 재시작하지 않고, 변경된 환경설정파일 정보만을 다시 읽어들인다.


아파치 웹 서버 환경설정 파일 포트 = Listen 
경로  ?/?/apache/conf/httpd.conf
도메인명 지정 : ServerName (도메인):(포트)
웹 문서가 위치하는 디렉터리 경로 DocumentRoot
PHP7 버전을 소스 설치한 httpd.conf 파일에 관련 모듈의 설치 유무 확인 과정 = LoadModule

디렉터리 경로 단축 /usr/local/apache/error -> /error
Alias /error/ "/usr/local/apache/error/"
하나의 ip를가지고 있는 시스템에서 2개의 도메인 설정 192.168.5.13 포트는 80
NameVirtualHost 192.168.5.13:80

ErrorDocument 403   허가 거부 
ErrorDocument 401   미 인증
ErrorDocument 404   존재하지않음

==========================================[sendmail]
1. admin 계정으로 들어오는 메일은 xx xx에게 전달되도록 설정
2. help 계정으로 오는 메일은 고객지원 부서원의 메일주소가 기록된 /etc/helpdesk 파일에 지정된 사용자들에게 전달
3. 변경된 내용 적용

vi /etc/aliases             =   전달
1 : admin: ihduser, kaituser
2. help::include:/etc/helpdesk
3. newaliases  or   sendmail -bi    or   sendmail -l

메일 발신 도메인 강제지정 = /etc/mail/sendmail.cf    ( m4 )

==========================================[mail]
메일서버에 사용하는 도메인인 ihd.or.kr 등록
/etc/mail/local-host-names
발신 도메인을 무조건(강제지정) ihd.or.kr로 설정
/etc/mail.sendmail.cf
발신지 도메인이  spam.com 으로부터 오는 메일 거부
vi /etc/mail/access
From:spam.com REJECT

거부메시지없이 무조건 차단 = DISCARD
메일 발신 도메인 강제지정 = /etc/mail/sendmail.cf
/etc/mail/access 파일 내용 변경후 사용명령 = makemap hash (경로) > (경로)


서버의 메일을 클라로 가져오면 서버메일 삭제 = POP3

하나의 메일서버에 여러도메인을 사용하는 환경에서 동일한 메일 계정 요구
vi /etc/mail/virtusertable 
ceo@ihd.or.kr ihduser ceo@kait.or.kr kaituser 
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable


==========================================[NFS]
NFS 공유디렉터리 및 접근 관련파일 = /etc/exports

vi ( 1 )
/ihd   ( 2 )(rw,( 3 )
/kait  192.168.12.22(rw, ( 4 ))

■ 조건

- ①번은 설정 파일명을 절대 경로로 기입한다.

- ②~④번은 관련 설정값을 하나씩 기입한다.

- /ihd 디렉터리에 접근할 수 있는 호스트는 192.168.5.0 네트워크 대역에 속한 호스트만

  허가하고, root 사용자 권한으로 읽기 및 쓰기를 허가한다.

- /kait 디렉터리에 접근할 수 있는 호스트는 IP 주소가 192.168.12.22인 호스트만 가능하고,

  root 사용자를 포함해서 모든 사용자 권한은 인정하지 않는다.

 저장① /etc/exports ② 192.168.5.0/255.255.255.0 또는 192.168.5.0/24 ③ no_root_squash ④ all_squash



==========================================[Useradd]
사용자 추가시 홈디렉토리를 /home2 디렉터리의 하위 디렉터리가 되도록 설정
useradd -D --base-dir /home2
사용자 추가시 기본 셸 변경
useradd -D --shell /bin/csh
변경 여부 확인 경로
cat /etc/default/useradd
계정명 변경 = usermod -l 변경후 변경전
usermod -l kaituser -d /home/kaituser -m ihduser
passwd -d(비번삭제)    -e(비번 변경)   -i 3(만료후 x일이 지나면 로그인불가)  
passwd -S = 사용자 정보 확인
passwd -l = 계정잠금
passwd -u = 계정잠금해제

useradd -D -b /home2        
useradd -D -s /bin/csh
/etc/default/useradd



==========================================[커널 컴파일]
centos7 커널 모듈 파일명 = ip_tables.so
커널 모됼간 의존성 확인 = modules.dep
커널컴파일 = mrproper(distclean) - menuconfig - bzImage - modules
모듈간 의존성 = /lib/modules/커널버전/modules.dep
리눅스 커널 모듈 위치 = /lib/modules/커널버전
커널 컴파일 관련 옵션 설정 작업을 Qt 기반의 환경에서 진행한다 = make xconfig

커널 컴파일 수행작업내역이 있는경우 편집된 백업 및 패치파일등을 가장 강력하게 초기화 = make distclean
공유 라이브러리 추가등록 = /etc/ld.so.config

ping 명령에 응답하지않도록 커널 매개 변수 변경
sysctl -w net.ipv4.icmp_echo_ignore_all=1 
위의 항목이 재부팅 시에도 적용되도록 관련 파일에 등록
vi /etc/sysctl.conf


===========================================[Raid]
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm 레이드 장치 파일 생성 = mdmda -C



===========================================[tar]
대용량 파일 압축 효율성 좋은것 순서
xz - bzip2 - gzip

tar jtvf ~.tar.bz2
tar Jtvf ~.tar.xz


tar 명령으로 증분 백업을 진행하는 과정으로 관련 정보를 list 파일에 기록하려고 함
- tar -g list -cvfp home1.tar /home


===========================================[log]

/var/log/messages = 표준메시지가 기록되는 파일로 대부분의 로그 / 데몬 실행 오류 발생한경우 이파일 확인
vi /etc/logrotate.conf ( last 명령으로 참조되는 로그파일의 로테이션 관련 설정 파일 )
/var/log/wtmp {
create 0600 root root  or   create 0600 root utmp

crit만 기록하고 커널에서 발생하는 메시지 제외 ->   *.=crit;kern.none /var/log/critical
마지막 로그인 시간만 확인 = lastlog -u ihduser
로그 로테이션 파일 생성 = rotate 4
주 1회 로그 로테이션 파일 설정 = weekly

cron 및 메일관련 모든 기록은 /var/log/cronmail 파일에 기록한다
cron,mail.* /var/log/cronmail
ssh와 인증 관련 모든 기록은 root 사용자의 터미널로 전송한다
authpriv.* root
모든 facility에서 발생되는 crit 수준 이상의 메시지는 /var/log/critical 파일에 기록한다
*.=crit /var/log/critical
메일 관련 모든 기록은 /var/log/mailog 파일에 기록하는데, info 수준의 로그는 제외한다
mail.*;mail.!=info /var/log/mailog
모든 서비스에 대해 alert 수준 이상의 메시지는 192.168.12.22인 호스트에 UDP 기반으로 전달
*.aler @192.168.12.22
uucp,news.warn /var/log/news


ihduser 가 시스템에 로그인한 정보를 확인한다
grep ihduser /var/log/secure
sendmail 데몬 시작 시간을 확인한다
grep sendmail /var/log/mailog
부팅 시 동작하는 데몬들의 동작 성공 여부를 확인한다
cat /var/log/boot.log
dovecot 데몬 시작 시간을 확인한다
grep dovecot /var/log/mailog 

lastlog -t 3 = 최근 3일동안 로그인한 사용자들의 마지막 기록
last reboot = 시스템이 재부팅한 기록만


===========================================[iptables]
-j SNAT = SNAT ( 출발지 주소변경 )
-j DNAT = 공인 -> 사설 포워딩 (도착지 주소 변경)

iptables 의 기본테이블인 Filter의 INPUT 사슬에 설정된 정책을 모두 제거 = iptables -F INPUT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 200.100.50.10
iptables 보안모듈 테이블 = security
iptables 모든 사슬의 설정된 정보 확인 = iptables -L

외부로부터 들어오는 웹서비스 요청을 내부의 사설 IP주소가 192.168.0.4인 웹 서버로 전달
iptables -t nat -A PREROUTING -p tcp -d 203.247.50.100 --dport 80 -j DNAT --to 192.168.0.4:80

iptables -F 모든 정책 삭제
iptables -P INPUT DROP                  <- 외부패킷 모두거부하며
iptables -A INPUT -s 192.168.12.22 -j ACCEPT <- 192.168.12.22 만 허용

-R INPUT 2 = 2번째 정책 replace
-D INPUT 5 = 5번째 정책 삭제
-I INPUT 2 = 2번째 정책에 로그기록 ( l 아니라 대문자 i임 )
iptables-save > firewall.sh
iptables-restore < firewall.sh
iptables -L적용된 iptables 규칙 확인


============================================[file]
CentOS7 콘솔모드 해상도 변경 환경설정 파일 = /etc/default/grub
모든 사용자 alias 및 함수 = /etc/bashrc
로컬 시스템 가상도메인 부여 = /etc/hosts
사용자 생성시 디렉터리 추가생성 정의 = /etc/skel
지정한 텍스트 파일 출력 = lp /etc/passwd
root 패스워드 변경 방지 파일 = /etc/grub.d/00_header
FTP 접근제어 = /etc/vsftpd/user_list



======================================
파일 속성을 사용해서 보안강화 과정.
/var/log/mesages 파일을 삭제는 불가능하고,내용추가만 가능하도록 설정
chattr +a /var/log/messages
/etc/services 파일이 삭제나 변경 불가능하도록 설정
chattr +i /etc/services
설정된 내용 확인
lsattr /var/log/messages /etc/services

( killall , pgrep ) httpd
특정 파티션에 사용자 디스크 쿼터 사용 (/etc/fstab 내에서)
- uquota

test 20 -gt 30
echo $?
(1)

현재 시스템에 설치된 패키지만 찾아서 업데이트
rpm -Fvh


XFS 파일 시스템 환경에서 사용 불가능한 백업 프로그램 = dump
cpio 명령으로 백업한 파일로 데이터 복원 = cpio -icv < home.cpio
LDAP 속성 이름과 성의 조합 = cn
소프트웨어 프로비저닝 레드햇 인수 = ansible
리눅스 반가상화 = Xen
리눅스에서 가상화 이용하려면 VT-x / vmx
가상화된 자원들 <-> 물리적 자원들 상호매핑 아무런 영향 안미치고 교체될수 있게 = Insulation
ypcat passwd.byname
패킷 데이터를 변경하는 특수 규칙을 적용하는 테이블로 TOS를 설정 = mangle
m=malloc = 메모지 자원 고갈 dos 공격
X.500 = LDAP
DDos = Trinoo / TPN 2K / Stacheldraht
웹서버에 정보저장 요청 HTTP 메소드 = POST
네트워크 속도가 느린 환경이라서 보다 빠른 인터넷 서비스 제공 / 특정 사이트 접근제한 = squid(proxy 서비스)
웹서버 문법적 오류 검사 = httpd -t
실행권한이 없는 lin.sh 파일 실행 = . lin.sh
UNIX 개발 = 켄톰슨 , 데니스리치
X서버 -> X클라 허가명령 = xhost 192.168.0.1
사용자간의 파일을 전송할때 암호화하는 도구를 제공, 파일의 내용을 확인할때 지정한 사용자만 가능하게 = GnuPG
Ctrl + C = 2번 SIGNAL
CentOS7 Systemd = PID 1
별도의 파티션으로 분할되지 않은 특정 디렉터리에 대해 증분 백업 = tar
로그인한 특정 사용자에서 간단 메시지 전송 = write
tr i o < lin.txt   ( > 가아닌 < 임)
패스워드 만기일, 만기전 경고 , 계정만기일 = chage 명령
gcc -c sum.c = sum.o (object)
virsh suspend VM1
ntpdate time.bora.net
cache_dir ufs /var/spool/squid 100 16 256
전가상화 , 이더넷카드,Disk I/O , 그래픽 인터페이스만 반가상화 = KVM
썬 마이크로시스템즈 개발 , 네트워크 서비스 프로토콜 , 사용자 및 호스트명 정보를 다른 시스템에 제공 = NIS
웹 정상 서비스 제공 코드 = 200
윈도우 -> 원격 리눅스 서버 접속하여 X윈도우 기반 다양한 설정 이용 = tigerVNC
방화벽 도구 = lokkit

 


 

[Raid]
# 하나의 Raid는 운영체제에서 논리적으로 하나의 하드디스크로 인식됨
# 스프라이핑 = 디스크성능 향상을 위해 연속된 데이터를 여러개의 디스크에 RR방식으로 기록하는 기술
# 미러링 = 무정지를 위한 핵심기술, 디스크에 에러 발생시 디스크 운용정지를 막기위해 추가적으로 하나이상의 장치에 중복 저장

raid0 = 고성능 (2)
 - 스트라이핑 기술을 사용, 데이터를 디스크에 분산저장 , 여러 디스크에 동시에 쓸수있으므로 처리속도 빠름
 - 데이터 중복이 없고 패리티기술을 사용하지 않기 때문에 구성된 디스크 중 하나라도 오류가 발생하면 복구 불가능

# 패리티기술 : 패리티비트를 추가하여 데이터가 유실되었는지 손상되었는지 확인하는 기술

raid1 = 무정지 (2)  0+1 , 1+0
 - 패리티,스트라이핑 없이 미러링을 사용하여 데이터를 두개의 디스크에 동시에 기록
 - 각 디스크의 데이터를 동시에 읽을수 있어 읽기 속도 향상
 - 동일한 데이터가 양 디스크에 존재하므로 디스크 오류 시 미러링된 데이터를 통해 복구할 수 있다.
 - 반면 데이터를 중복 저장하기 때문에 디스크의 효율성이 50%로 떨어진다.

raid2 (3~)
 - bit 레벨의 스트라이핑을 통하여 ★최소 3개★의 디스크에 데이터를 분산 저장
 - 오류 정정 부호(ECC)를 기록하는 전용의 하드디스크를 이용한다
 - ECC를 통해 오류를 복구할 수 있지만 추가 연산이 필요해 입출력 속도가 떨어진다.

raid3 ( )
 - byte 수준의 스트라이핑을 통해 데이터를 분산저장
 - 한번 읽거나 쓸 때 각 디스크에 동시에 접근 가능하므로 순차적 쓰기 성능과 순차적 읽기 성능이 우수하다
 - 패리티를 제공하므로 오류 체크 및 복구를 수행할 수 있다.
raid4 ( )
 - block 레벨의 스트라이핑을 통해 데이터를 분산 저장
 - 패리티를 이용하므로 에러체크 및 정정기능을 제공한다.
 - block 단위로 데이터가 저장되므로 단일 디스크에서 데이터를 읽어 들일수있고 여러개의 디스크에서 동시에 데이터를 읽어 들일 수 있다.
 - 데이터를 쓸 때마다 패리티 디스크도 접근하기 때문에 쓰기 성능이 좋지는 않다

raid5 = 고성능,무정지
 - raid4 와 같이 블록 수준 스트라이핑으로 저장되며 패리티도 별도의 디스크가 아닌 모든 디스크에 나뉘어 저장
 - 성능면에서 raid0보다 부족하지만 성능,안정성,용량 세부분을 모두 고려하여 현장에서 많이 사용

raid6 = 고성능,무정지
 - raid5와 유사한 구성이며 추가적으로 2차 패리티 구성을 포함한다
 - raid5의 경우 1개의 디스크 오류만 대처 가능하지만 raid6 은 2개의 디스크 오류에 대처 가능


[Centos 6 Grub 생성 및 복구]
생성
grub-crypt / grub-md5-crypt
vi /boot/grub/grub.conf (password --encrypted)

복구
/mnt/sysimage/boot/grub.grub.confs211

Centos 7 Grub 생성 및 복구
생성
grub2-mkpasswd-pbkdf2
vi /etc/grub.d/40_custom or 00_header (set superusers="root" / password_pbkdf2 root)
grub2-mkconfig -o /boot/grub2/grub.conf (설정 적용)
reboot
Grub 메뉴에서 'e' 명령을 통해 로그인

패스워드 복구
chroot /mnt/sysimage
/etc/grub.d/40_costom 수정
grub2-mkconfig -o /boot/grub2/grub.conf (설정 적용)

[Systemd의 구조]
- 시스템을 관리하기 위해 Service,Target,Automount,Device,Mount,Path,Scope,Slice,Snapshow,Socket,Swap,Timer 등 다양한 유닛 제공
- 그 중 대표적인 유닛을 정리 하였다.

유닛 유형 확장자 설명
Service Unit .service 시스템상에서 동작하는 서비스 또는 데몬과 관련된 유닛
Target Unit .target 다수의 유닛을 하나의 그룹으로 관리할수 있는 유닛, 대표적예로 SysV init에 존재했던 run level을 Target 유닛으로 관리가능
Device Unit .device 커널이 인식 가능한 장치와 연관된 유닛, 특정 USB 장치가 연결될때 특정 서비스 유닛을 실행 할수있다.
Mount Unit .mount 파일 시스템의 마운트포인트를 나타내는 유닛
Path Unit .path 파일시스템의 파일과 디렉터리와 연관된 유닛
Timer Unit .timer systemd 타이머와 연관된 유닛

[유닛을 위한 파일 경로] 각 경로에 동일한 유닛이 발견되면 아래에 위차한 경로의 유닛이 우선하게 된다.
우선순위 : /etc - /run - /usr/lib
/etc/systemd/system - /run/systemd/system - /usr/lib/systemd/system

[유닛파일의 구조]
Unit : 유닛공통 일반적인사항 포함, Description은 유닛에 대한 설명, Documentation은 유닛의 설명이 있는 웹 경로(URls)를 지정, After는 유닛이 시작할 순서를 정의,
        Requires는 유닛의 의존관계를 지정, Wants는 Requires보다 약한 의존성을 지정.
Unit Type : 유닛 유형마다의 특성을 기술, 예를 들어 Service 유닛은 [Service]라는 섹션 이름을 갖는다. [Service]섹션의 ExecStart 유닛이 실행할 때 실행할 명령어나 스크립트를 지정.
   ExecStop은 유닛이 중지할 때 실행할 명령어나 스크립트를 지정한다.
Install : systemctl enable / disable 명령으로 유닛을 제어 할 때 필요한 정보를 담고있다. RequireBy는 해당 유닛에 의존하고 있는 유닛의 목록을 지정한다. WantedBy는 유닛에 약학 의존관계 목록을 지정.

[Systemd의 주요 명령어]
서비스 관리
systemctl start *.service 시작
systemctl stop *.service  중지
systemctl restart *.service 재시작
systemctl try-restart *.service 실행중인 경우만 재시작
systemctl reload *.service 설정 갱신
systemctl status *.service 상태 확인
systemctl list-units --type service -all 목록 확인

타겟 유닛
systemctl get-default 기본 타겟 확인
systemctl list-units --type target 현재 로드된 모든 타겟 확인
systemctl set-default name.target 기본(Default) 타겟 변경
systemctl isolate name.target 현재 타겟 변경
systemctl rescue 복구 모드 변경
systemctl emergency 응급 모드 변경

전원 관리
systemctl halt 끄기
systemctl poweroff 전원끄기
systemctl reboot 재시작
systemctl suspend 서스펜드
systemctl hibernate 하이버네이트
systemctl hybrid-sleep 하이버네이트 및 서스펜드

원격 제어
systemctl -H root@linuxserver.example.com status httpd.service 원격 시스템에 실행중인 sshd 서비스에게 명령 전달하여 원격 시스템의 서비스를 제어

파일 시스템
btrFS : 크리스메이슨이 개발한 B-Tree 파일시스템
ZFS : SUN 에서 개발, Solaris10에 소개됨
Reiserfs : 독일 한스라이저
XFS : 실리콘 그래픽스, 고성능 64비트 저널링 파일시스템
JFS : IBM 개발 64bit

클러스터 파일시스템
Raw Partitons
- 파일시스템이 설정되어 있지 않은 상태
- OS의 버퍼캐시 미사용, 고성능 입출력 가능
- 파일시스템을 통하는 오버헤드가 없다
- 파일시스템을 이용하지 않기 때문에 숙련된 관리자의 관리가 필요

Oracle Cluster FileSystem (OCFS)
- Raw Partitions의 다루기 어려문 문제해결과 동시에, RAC(Real Application Cluster)의 사용목적을 위해 설계된 파일시스템
- Raw Partitions보다 2~5%정도 속도가 느림
- OCFS의 다음버전인 OCFS2는 POSIX를 호환하는 범용 클러스터 파일시스템으로 개발됨

기타 리눅스 파일 시스템
minix : 앤드류 태넌바움 개발, 단일 타임스탬프, 파티션 사이즈 64MB 제한 / 이름 14자 까지 지원
xiafs : 프랭크 시아 개발, minix 파일시스템의 기초가 됨 , 리눅스 커널을 위한 파일시스템
vfat : MS의 FAT32 시스템 호환을 목적으로 개발한 파일시스템
isofs : ISO 기준을 따르는 표준 CD-ROM 파일시스템
nfs : 네트워크상에서 파일시스템을 공유하기 위한 파일시스템
proc : 프로세스 등 커널의 정보를 표현하는 리눅스의 가상 파일시스템
smb : SMB프로토콜을 지원하는 네트워크 파일 시스템으로 최근 CIFS로 확장됨.


[Shell]
sh - csh - tcsh - ksh - bash 순

- sh : 본셸 (스티븐 본 1977)
- csh : C셸 (빌 조이 1978)
- tcsh : TC셸 (켄 그리어 1981)
- ksh : 콘셸 (데이비드 콘 1983)
- bash : bash셸 (브라이언 폭스 1989)

echo $SHELL : 현재 사용자의 로그인 셸 확인
chsh -l : 시스템이 지원하는 셸 목록 확인 1
cat /etc/shells : 시스템이 지원하는 셸 목록 확인2
chsh -s /bin/csh : 셸 변경 (-s옵션)
cat /etc/passwd | grep (계정명) : 특정 사용자의 셸 확인

[대표적인 환경변수 리스트]
----------------------------------------------------------------------------------------------------------------------------------------------------
HOSTNAME : 시스템의 호스트명
OSTYPE : 운영체제 정보
시스템정보 DISPLAY : X윈도우 트래픽을 처리할 X디스플레이 서버의 위치
PATH : 실행 파일이 위치한 디렉토리의 집합
LANG : 셸 사용 시 기본으로 지원되는 언어
----------------------------------------------------------------------------------------------------------------------------------------------------
PS1 : PS는 Prompt Statement의 약자, 그중 PS1은 기본 프롬프트 표시명을 뜻함
PS2 : PS2는 하나의 명령어를 여러 줄로
셸 SHELL : 로그인 사용자의 셸을 보여줌
정보 HISTFILE : history 정보가 저장되어있는 파일 경로
HISTFILESIZE : history 파일의 크기
HISTSIZE : history 파일의 명령어 개수
----------------------------------------------------------------------------------------------------------------------------------------------------
UID : 로그인한 사용자의 UID
USER : 로그인한 사용자의 계정명
사용자
HOME : 로그인한 사용자의 홈 디렉터리
PWD : 로그인한 사용자의 현재 작업 디렉토리의 경로
----------------------------------------------------------------------------------------------------------------------------------------------------
TERM : 로그인한 사용자의 터미널 종류
응용 프로그램
MAIL : 수신한 메일이 저장되어 있는 경로
----------------------------------------------------------------------------------------------------------------------------------------------------

[시스템 설정 파일]
----------------------------------------------------------------------------------------------------------------------------------------------------
- /etc/profile : 시스템 전역 설정파일
- /etc/profile.d/* : 사용자가 로그인할 때 /etc/profile.d 디렉토리안에 있는 모든 셸 스크립트 실행
- /etc/bashrc : 시스템 전역의 성격을 갖고 있으며 셸에서 또다른 셸을 실행하는 비로그인 셸을 실행할때마다 로드되는 파일
----------------------------------------------------------------------------------------------------------------------------------------------------

[사용자 설정 파일]
----------------------------------------------------------------------------------------------------------------------------------------------------
~./bash_profile   |   ~./bash_login
- 사용자가 시스템에 로그인할때마다 실행, 개별사용자마다 설정이 필요한 내용이 있을때 이 파일에 기재
- 한번 로그인되면 로그아웃시 까지 유지
- 만약 설정변경이 있다면 source 명령어로 즉시 반영

~/.profile
- 사용자가 시스템에 로그인할때마다 실행
- 주로 bash와는 직접 관련이 없는 사항 기재

~/.bashrc
- 비로그인 셸에서 실행
- 로그인한 상태에서 새로운 터미널을 열때마다 이 파일이 로드됨
- 보통 alias 설정이나 함수 저장

~/.bash_logout
- 로그인한 셸을 로그아웃때마다 실행하는 설정 파일
- 꼭 필요한 파일은 아니지만, 계정의 임시파일 제거 등 관리목적으로 유용하게 사용가능

[History]
history -c : 삭제
!2 : 2번째 명령 실행
!! : 직전 명령 실행
history 3 : 최근 3개만 보고 싶을 경우

'Ops > Linux' 카테고리의 다른 글

Linux_기초복습_2  (0) 2022.08.04
Linux_기초복습_1  (0) 2022.08.04
Spam Architecture  (0) 2022.08.01
Nginx SSL 적용  (0) 2022.08.01
데이터 이전  (0) 2022.08.01
profile

우주먼지

@o귤o

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그