0323 Review

2023. 3. 23. 10:42AWS 기반 데이터분석 처리 고급 SW 클라우드 개발자 양성과정

Day-13

### git push WARNING message 제거 

# git push

(gnome-ssh-askpass:3574): Gtk-WARNING **: 08:43:29.876: cannot open display:
error: unable to read askpass response from '/usr/libexec/openssh/gnome-ssh-askpass'

# vi ~/.bashrc

     14 unset SSH_ASKPASS

# source ~/.bashrc

# git push

# vi /etc/sudoers (사용하고 있는 user를 전달)

    100 root    ALL=(ALL)       ALL
    101 centos  ALL=(ALL)       ALL
    102 user1   ALL=/sbin/useradd, /sbin/usermod
    103 user2   ALL=/sbin/userdel, /sbin/usermod

# su - user1

$ useradd -u 3000 -g users testuser1
useradd: Permission denied.

$ sudo useradd -u 3000 -g users testuser1

[sudo] user1의 암호: 1234

$ tail -3 /etc/passwd
user2:x:1002:100::/home/user2:/bin/bash
user3:x:1003:100::/home/user3:/bin/bash
testuser1:x:3000:100::/home/testuser1:/bin/bash

$ sudo useradd -u 3001 -g users testuser2

$ !t
tail -3 /etc/passwd
user3:x:1003:100::/home/user3:/bin/bash
testuser1:x:3000:100::/home/testuser1:/bin/bash
testuser2:x:3001:100::/home/testuser2:/bin/bash

$ sudo usermod -u 3002 testuser2

$ sudo usermod -u 3001 testuser1

$ !t
tail -3 /etc/passwd
user3:x:1003:100::/home/user3:/bin/bash
testuser1:x:3001:100::/home/testuser1:/bin/bash
testuser2:x:3002:100::/home/testuser2:/bin/bash

$ exit
logout

# su - user2

$ sudo userdel -r testuser2

[sudo] user2의 암호: 1234

$ tail -3 /etc/passwd

$ sudo userdel -r testuser1

$ tail -3 /etc/passwd

$ exit
logout

# su - centos

$ sudo useradd -u 3001 -g users test1

[sudo] centos의 암호: 1234

$ sudo useradd -u 3002 -g users test2

$ tail -4 /etc/passwd

$ cd /home

$ ll

$ sudo chown user3 user2

$ sudo chown user2:users user2

$ sudo chown root:root user2

$ ll

$ sudo chown user2:users user2

$ sudo userdel -r test2

$ sudo userdel -r test1

$ !t
tail -4 /etc/passwd

$ exit

# vi /etc/sudoers

:100

    100 root    ALL=(ALL)       ALL
    101



### 디스크 쿼터

# grep user /etc/passwd 

# usermod -d /allnew/user1 user1 (usermod 변경)

# usermod -d /allnew/user2 user2

# usermod -d /allnew/user3 user3 

# cd /home

# mv user? /allnew

# cd /allnew

# ls

# vi /etc/fstab
     15 UUID=9b4c2d31-ecbf-4fb1-a8e4-65cef9a89046 /allnew  xfs     defaults,usrquota,grpquota        0 2


# mount | grep allnew
/dev/md0 on /allnew type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,sunit=1024,swidth=2048,noquota)

# mount -o remount /allnew (원래는 작동해야 하는데 안됐음, fdisk 추가하고 다시함)
# mount | grep allnew
/dev/md0 on /allnew type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,sunit=1024,swidth=2048,usrquota,grpquota)

# fdisk -l | grep sd

# fdisk /dev/sdf (디스크 파티션 생성)

n
<enter>
<enter>
<enter>
<enter>
p
w

# fdisk -l | grep sd 

# mkfs.ext4 /dev/sdf1

# mkdir /work

# mount /dev/sdf1 /work

# mount | grep /work (no quater)

# cd /work

# ls

# usermod -d /work/user1 user1

# usermod -d /work/user2 user2

# usermod -d /work/user3 user3

# tail -4 /etc/passwd

# mv /allnew/user? .

# vi /etc/fstab

    15 UUID=9b4c2d31-ecbf-4fb1-a8e4-65cef9a89046 /allnew  xfs     defaults,usrquota,grpquota        0 2
    16 /dev/sdf1 /work  ext4     defaults,usrquota,grpquota        0 2

# cd 

# umount /allnew (allnew 마운트 해제)

# umount /work (work에 마운트)

# df

# mount /allnew

# mount /work

# mount -o remount /work

# mount | grep /work

# ls

 



# quotacheck -ugvm /work (두개의 파일이 만들어짐)

# ls
./  ../  aquota.group  aquota.user 

# quotaon -uv /work
/dev/sdf1 [/work]: user quotas turned on

# edquota -u user1 (vi가 실행되면서 사용자 쿼터를 설정할 수 있음)

      4   /dev/sdf1                        48          900M          1G         12        0        0

# edquota -u user1

# quota -u user1

# su - user1 (user1으로 들어감)

$ dd if=/dev/zero of=data1 bs=1M count=350

$ dd if=/dev/zero of=data2 bs=1M count=350

$ dd if=/dev/zero of=data3 bs=1M count=350 (하드까지 넘어가버림, 용량초과)

$ quota -u user1 (쿼터 확인)

$ touch test1

$ ls -l > test1
ls: 쓰기 오류: 디스크 할당량이 초과됨

$ exit
logout

# repquota /work

# quota -u user2
Disk quotas for user user2 (uid 1002): (쿼터가 설정이 ㅏㄴ됨)
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdf1      48  921600 1048576              12       0       0

# quota -u user3
Disk quotas for user user3 (uid 1003): none

# edquota -p user2 user3 (쿼터를 복사해줌)

# quota -u user3 

# rm -rf /work/user1/data?

# df | grep work

# quotaoff -uv /work (quotaoff -uv 쿠터해제)
/dev/sdf1 [/work]: user quotas turned off


# quotaon -gv /work
/dev/sdf1 [/work]: group quotas turned on

# edquota -g users
      4   /dev/sdf1                       100          2G          3G         25        0        0

# quota -g users

# su - user1 (몰빵으로 전부자 실행할 수 있게)

$ dd if=/dev/zero of=data1 bs=1M count=1000 (1GB씩 할당)

$ dd if=/dev/zero of=data2 bs=1M count=1000

$ dd if=/dev/zero of=data3 bs=1M count=1000

$ quota -g users 

# repquota -a

# rm -rf /work/user1/data?

# quotaoff -gv /work
/dev/sdf1 [/work]: group quotas turned off

# mv user? /home (사용자를 home으로 돌려보냄)

# usermod -d /home/user1 user1

# usermod -d /home/user2 user2

# usermod -d /home/user3 user3

# mount | grep /work

# mount -o remount /work

# mount | grep /work

# cd

# umount /work

# mount /work

# mount | grep /work

# tail -4 /etc/fstab
/dev/mapper/cs_centos-root /                       xfs     defaults        0 0
UUID=2ad14556-9fbc-4b03-87fd-081c9083aabc /boot                   xfs     defaults        0 0
/dev/mapper/cs_centos-swap none                    swap    defaults        0 0
UUID=9b4c2d31-ecbf-4fb1-a8e4-65cef9a89046 /allnew  xfs     defaults        0 2

# shutdown -h now

시스템 종료 후 추가한 디스크 영구 삭제…


# mkdir /allnew/sed

# cd /allnew/sed

# vi myfile

      1 life isn't meant to be easy, life is meant to be lived.
      2 Try to learn & understand something new everyday in life.
      3 Respect everyone & most important love everyone.
      4 Don't hesitate to ask for love & don't hesitate to show love too.
      5 Life is too short to by shy.
      6 In life, experience will help you differentiating right from wrong.


### sed (stream editor) (가장 간편하게 편집 가능)

sed ’s/ old / new /flag’

# cp /etc/passwd .

# vi passwd

:%s/:/=/g (모든 : 을 = 로 바꿀 수 있음)

:%s/=/:/g

# who
root     pts/0        2023-03-22 12:38 (192.168.1.2)
root     seat0        2023-03-22 14:23 (login screen)
root     tty2         2023-03-22 14:23 (tty2)

# who | sed 's/pts/terminal/'
root     terminal/0        2023-03-22 12:38 (192.168.1.2)
root     seat0        2023-03-22 14:23 (login screen)
root     tty2         2023-03-22 14:23 (tty2)

# cat passwd | sed 's/:/=/g' (내용이 바뀌지 않음)

# cat passwd | sed 's/:/=/g' > passwd_new (내용이 바뀜)

# wc -l passwd

# sed '45,50 s/:/=/g' passwd (부분 적용 가능)

# head passwd

# sed -n '5,10p' passwd (p가 붙어있으면 부분 적용 가능)

# cat -n myfile

# sed -n '3,5p' myfile

# sed '3,5d' myfile (3,5 삭제 하고 나머지만 보여줌)

# sed -n -e '1,2p' -e '4,6p' myfile (1~2라인 4~6라인 따로 붙여줌)

# ls /allnew/shells/

# ls /allnew/shells/ | sed 's/*//g' (모든 열을 찾아서 공백으로)


### awk




# vi awk_testfile
      1 name phone birth sex score
      2 reakwon 010-1234-1234 1981-01-01 M 100
      3 sim     010-4321-4321 1999-09-09 F 88
      4 nara    010-1010-2020 1993-12-12 M 20
      5 yut     010-2323-2323 1988-10-10 F 59
      6 kim     010-1234-4321 1977-07-07 M 69
      7 nam     010-4321-7890 1996-06-20 M 75

# who

# who | awk '{print $1 $5}'

# who | awk '{print "User " $1 " is on terminal " $5 " " $6}'

# who | awk '{print "User " $1 " is on connected " $5 " " $6}'

# awk '{print $1 $2}' awk_testfile

# awk '{print $1,$2}' awk_testfile

# awk -F: '{print $7}' passwd | sort | uniq -c  (F는 구분자 -F : (콜론으로 구분해서 7번쨰 항목을 구분함)

# awk -F: '{print $7}' passwd | uniq -c (sort 안하면 나올때마다 count, 몇번씩 반복함)


# ls -lF  (F는 type을 보여줌)

# ls -lF | awk '{print $5 "\t" $9}'

# ls -l | awk '{Total = Total + $5; print Total "\t" $9}'

# ls -l | awk '{Total += $5; print Total "\t" $9}'


# ls -lF

# ls -lF | awk '{print NF}' (NF 라인 필드의 넘버, number of field)

# ls -l | awk '{print NR ";" $0}' (NR을 그냥 활용하면 line수를 찾을 수 있음)

# ls -l | wc -l (Line 수 확인 가능)


# cat -n awk_testfile

# awk '/kwon/' awk_testfile  (kwon 들어가있는 파일 찾기)

# awk '/si/' awk_testfile

# awk '{print ("Name : " $1", " "Phone : " $2)}' awk_testfile


# awk '{if ($5 >= 80) print ($0)}' awk_testfile

# awk '{if ($4 == "M") print ($1,$5)}' awk_testfile (성별이 남자 에서 1번항목과 5번 항목 추출)

# awk '{if ($4 == "M") print ($1"\t"$5)}' awk_testfile

# awk '{if ($4 == "M" &&  $5 >= 70) print ($0)}' awk_testfile (남자이고 70점이상인 사람의 전체 항목(field)출력)


# awk '{print("name length : " length($1), "substr(0,3) : " substr($1,0,3))}' awk_testfile     (substring(c언어에 있는 함수)


# awk '
> BEGIN {
>   sum=0
>   cnt=-1
> }   ###초기화
>
> {
>   sum+=$5
>   cnt++
> }   ###실직적 함수 구현
>
> END {
>   avg=sum/cnt
>   print("Sum : " sum", Average : " avg)
> }' awk_testfile   ### Return
Sum : 411, Average : 68.5


### 네트워크

물데네전세프앱





# ping 192.168.1.xxx

hop (하나의 unit을 카운트 하는 것)

LAN(Local Area Network)

WAN(Wide Area Network)

MAN (Metropolitan Area Network)

SDN : Software Define Network  (어떤 관점이 많은가? FDDI, ATM 같은 광대역 네트워크에 대한 정의를 S/W적으로)

NFV : Network Function Virtualization (hub를 제외한 나머지 Gateway,Switch, 브리치 등을 Virtualize하는 것, 물리적인 거리를 널려주는 것(Bridge))

###DataLink Layer(브릿지, Repeater)

브릿지는 동종의 망들을 서로 연결해서 늘린다, 크기를 키운다(hub로 lan1 lan2를 묶음)

 


Uni-cast : peer to peer

Multi-cast

Broad-cast (맨마지막과 맨처음 사용 못함, -2를 함, 255주소는 broadcast를 사용하기 위해 뺴고, 처음은 망을 사용하기 위해 뺌)


## IPv4(32bit) (클래스를 철저하게 지키기 위함)
A : 8.x.x.x, n -2^8 , h - 2^24 
B : 8.8.x.x, n - 2^16, h - 2^16 = 65534
C : 8.8.8.x, n - 2^24, h -2^8 = 254 (보통 사용함)
D : Multi-cast
E : Reserved

IPv4 종류
- 공인 IP
- DHCP(Dynamic Host Configuration Protocol)
- 사설 IP(공유기  NAT-Network Address Translation)

- CIDR

- Super
127.0.0.1-loop back

10.x.x.x
172.x.x.x
192.x.x.x

# ifconfig -a

FF.FF.FF -> RGB

- CIDR(Classless Inter-Domain Routing)

11111111.11111111.11111111.0000000
255.255.255.0 -> 255
0000000.0000000.0000000.11111111
0.0.0.255
256 -2 = 254 (254개 망을 만들 수 있음)

10.0.2.0 -> Network address
10.0.2.255 -> broadcast address

슈퍼넷/서브넷

11111111.11111111.11111111.1000000
0000000.0000000.0000000.01111111
255.255.255.128 -> 128 -2 = 126

11111111.11111111.11111111.1100000
0000000.0000000.0000000.00111111
255.255.255.192 -> 64 -2 = 62

11111111.11111111.11111111.1110000
0000000.0000000.0000000.00011111
255.255.255.224 -> 32 -2 = 30


## IPv6(128bit)
- 대륙별, 국가별, 지역별, 회사별, prefix
- AutoConfiguration (자동할당이 됨)
- Security  (훨씬 더 강한 보안)
- IP header 단순, 훨씬 빠른 라우팅이 가능
- 부가 기능 지원, QoS (Quality of Service, 비행기를 탔을때 echo, business  불평등한 방식, but 돈을 많이 낸 사람이 더 좋은 서비스를 쓰는 것 (guarantee))

fe80:~~:a00:27ff:fe97:2e62  (prefix를 넣고 구분  / fe80=우리나라 국가)

fe80:~~:a00:27ff:fe97:2e62/23 (128bit 중 23까지만 우리나라 것이다)


Uni-cast : peer to peer

Multi-cast

Any-case

# grep tftp /etc/services

# cat /etc/services

# uname -a

# cat /etc/hostname 
centos

# cat /etc/hosts (host 정보)

# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 (echo레이터? decorator)

## 콘솔에서… (centos에서)

 

#systemctl status NetworkManager.service

(ssh : 서비스, ftp 서비스는 줄여도 되지만 telnet은 줄이면 안됨)

 

#nmcli gen

 

#nmcli net off

 

# ifconf -a

 

#nmcli net on

 

# ifconfig -a

 

# nmcli con show (connection)

NAME    UUID                                  TYPE      DEVICE 
enp0s3  c95c648a-1cf6-4e84-913a-cba930146604  ethernet  enp0s3

 

# nmcli con down enp0s3

'enp0s3' 연결이 성공적으로 비활성화되었습니다 (D-Bus 활성 경로: /org/freedesktop/NetworkManager/ActiveConnection/3)

 

# nmcli con up enp0s3

연결이 성공적으로 활성화되었습니다 (D-버스 활성 경로: /org/freedesktop/NetworkManager/ActiveConnection/4)

 

# nmcli con show

NAME    UUID                                  TYPE      DEVICE 
enp0s3  c95c648a-1cf6-4e84-913a-cba930146604  ethernet  enp0s3 

 

# nmcli dev show ( 더 상세하게 보여줌)

IP4.ADDRESS[1]:                         192.168.1.145/24 (C class)

128 중 64(prefix)

 

# ip addr

 

# ip route show

 

# route = # netstat -rn (같은 것을 추출함)

 

 

# ifconfig enp0s3 down

# ifconfig 

# ifconfig enp0s3 up

# ifconfig 

# ifconfig enp0s3 down

# ifconfig 

# ifconfig enp0s3 192.168.1.134 netmask 255.255.255.0 broadcast 192.168.0.255

# ifconfig enp0s3 up

# ifconfig

# netstat -rn

# route

# route add default gw 192.168.1.1 dev enp0s3

# cat /etc/resolv.conf (dns정보)



# nslookup
www.daum.net

www.naver.com

> ^d

# ping www.google.com (메인주소를)

# traceroute www.naver.com

# traceroute www.google.com

# yum -y install whois

# whois 142.250.207.36 (ip를 반대로)



# netstat -rn

# netstat -ntlp

# netstat -an | grep LISTEN

# netstat -p | more

# netstat -i

# netstat -s

# arp 192.168.0.1 (address 

# tcpdump -i enp0s3 (tcp 데이터를 교차하는 것, 해킹명령어 위험함)

# tcpdump -c 5 ( -c 로 횟수를 정할 수 있음)

# tcpdump -c 10 -w dump.out

# file dump.out

# cat dump.out

# tcpdump -r dump.out

# tcpdump -Xqr dump.out (hexa처럼 보기)


### telnet (원래 없는 서버임, 우분투에는 있는데 centos에는 없음)

# yum -y install telnet-server

# systemctl start telnet.socket

# systemctl status telnet.socket

# yum -y install telnet

# telnet 0 (0을 쓴 이유는 local host이기 때문)
Trying 0.0.0.0...

# firewall-cmd --add-service=telnet (telnet 추가)
success

# firewall-cmd --list-service (list-service 확인)
cockpit dhcpv6-client ssh telnet

# telnet
telnet> open localhost
Trying ::1...
Connected to localhost.
Escape character is '^]'.

Kernel 4.18.0-448.el8.x86_64 on an x86_64
centos login: centos
Password:
Last login: Wed Mar 22 10:42:51 on pts/0
[centos@centos ~]$

$ exit


## 서비스 데몬 구동 방식 
stand alone vs xinetd(슈퍼 데몬)


### ftp

# rpm -qa | grep ftp

# yum -y install vsftpd (ftp를 vsftpd로 설치함)

# yum -y install xinetd


## xinetd 로 구동

# cd /etc/xinetd.d

# cp /usr/share/doc/vsftpd/vsftpd.xinetd ./vsftpd

# ls

# vi vsftpd
     12         disable                 = yes

# vi /etc/vsftpd/vsftpd.conf
    123 #listen_ipv6=YES 

# systemctl restart xinetd

# systemctl status xinetd

# firewall-cmd --add-service=ftp
success

# firewall-cmd --list-service
cockpit dhcpv6-client ftp ssh telnet

# telnet 0 21
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
220 (vsFTPd 3.0.3)
quit


## vsftpd stand-alone 으로 구동

# vi vsftpd
     12         disable                 = yes

# vi /etc/vsftpd/vsftpd.conf
   114 listen=YES

# systemctl restart xinetd

# systemctl status xinetd

# systemctl start vsftpd

# systemctl status vsftpd

# telnet 0 21
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
220 (vsFTPd 3.0.3)
quit



'AWS 기반 데이터분석 처리 고급 SW 클라우드 개발자 양성과정' 카테고리의 다른 글

1일차  (0) 2023.06.07
Day14  (0) 2023.03.23
0323 정리  (0) 2023.03.23
d10  (0) 2023.03.21
Day11  (0) 2023.03.21