사용자는 로그인을 하게 되면 각 사용자별로 별도의 시스템 환경 별수를 할당 받는다.
printenv
연속된 2개 이상의 명령어를 한 번에 실행하고자 한다면
ls ; date -> 앞 명령어에서 오류가 발생해도 뒷 명령어 실행함
ls && date -> 앞 명령어에서 오류가 난다면 뒷 명령어 실행 안 함
\ -> 명령어가 옆으로 너무 길어질 경우, 다음 줄에 이어서 작성
mkdir 0720 && cd 0720 && touch abc.txt
redirection (>, >>, <, <<)
표준 입력: 키보드 (0)
표준 출력: 화면 (1)
표준 에러: 화면 (2)
입력 1> 파일명 # 정상처리 결과값만 파일에 저장
ping -c 1 www.google.com 1> abc.txt
입력 2> 파일명 # 오류 결과값만 파일에 저장
ping -c 1 www.google.com 2> abc.txt
yum -y install tree
ls a*
a로 시작하는 파일과 a로 시작하는 디렉토리도 모두 보여줌
rm -rf a*
a로 시작하는 파일 삭제
rm -rf *.txt
.txt 파일 삭제
grep root anaconda-ks.cfg
파일 내에서 특정 문자열이 있다면 해당 행을 출력
전체 내용을 화면에 출력
tail의 경우에는 실시간으로 특정 파일의 내용/로그 등을 확인할 때 유용하다
tail -3f /var/log/httpd/access_log
systemctl restart httpd
일반적로 로그는 /var/log에 위치한다
ls /var/log
ls /var/log/httpd
windows에서 http://211.183.3.201 점속
cat /var/log/httpd/access_log
우리는 centos7이라는 인스턴스를 생성했다.
주소는 211.183.3.201이고, ec2-user가 만들어져 있으며 해당 계정은 wheel 그룹에 포함되어있어 sudo를 이용하면 필요할 때마다 루트의 권한을 실행할 수 있다.
public key는 인스턴스에 위치하고 있으며, private key는 윈도우에서 보관하며 접속할 계획이다.
ifconfig ens32
ping -c 3 www.google.com
ip 주소가 정상적임에도 외부와 통신이 되지 않는다면
1) ens32 비활성화 -> 활성화
ifdown ens32
ifup ens32
2) vmware 쪽 문제일 수 있으므로 윈도우 이더넷 설정 vmnet10 비활성화 -> 활성화
3) sysconfig 확인
cat /etc/sysconfig/network-scripts/ifcfg-ens32
systemctl restart sshd
systemctl status sshd
-> active인지 확인
vi /etc/ssh/sshd_config
38째 줄) permitrootlogin yes -> 보안 상 좋지 않음
43째 줄) pubkeyauth -> yes로 설정
65쨰 줄) passwdauth -> no로 설정
47째 줄) authorizedkeysfile -> 퍼블릭키 등록되어 있는 곳
useradd ec2-user
passwd ec2-usr
[설정할 패스워드 입력]
su ec2-user
cd
ssh-keygen -q -f ~/.ssh/0720.pem -N ""
ls .ssh
0720.pem[개인키] 0720.pem.pub[공개키]
cat 0720.pem.pub > authorized_keys
head authorized_keys
cat 0720.pem
전체 복사
윈도우 배경화면에 새 텍스트 파일 생성 후 붙여넣어 0720.pem이라고 저장
exit
vi /etc/sudoers
107~110째 줄)
wheel 그룹 사용자들은 루트 권한 가능하나 sudo 명령 시 패스워드를 요구 받는다
-> 107째 줄은 주석처리하고, 110째 줄은 주석 해제하기
usermod -aG wheel ec2-user
ec2-usr를 기존 그룹은 유지하면서 새로운 그룹인 wheel에 가입시킨다. wheel은 sudo 명령을 하여 루트의 권한으로 명령 실행이 가능하되, 패스워드는 요구하지 않는다.
cd /home/ec2-user/.ssh
cdmod 644 authorized_keys
puttygen 실행
conversions -> import key
바탕화면에 0720.ppk 파일 생성
kex -> 디피헬만 14가 맨 위, 디피헬만 1이 두 번쨰에 위치하도록 위치 변경
auth -> browse -> 0720.ppk 선택
session -> ssh -> 211.183.3.201
sudo systemctl restart mariadb
root 패스워드 입력 없이도 실행됨
[ssh 연결 과정]
1. 서버 인증: 클라이언트가 서버를 인증
2. 사용자 인증: 서버가 정상적인 사용자인지 여부를 확인한다.
passwd 방식 -> 대칭키
key-pair 방식 -> 비대칭키
DataCenter에서의 ssh 연결
1. 템플릿 이미지를 준비한다.
2. 이미지 수정하기
public key 인증 불가를 활성화시키기, 사용할 계정 미리 만들어두기
3. key-pair 만들기 (bastion host에서 만든다)
4. public key를 기본 이미지에 추가적으로 부착한다.
virt-customize
-a test.qcow2
--upload mykey.pem.pub:/root/.ssh/autorized_keys
ssh -i mykey.pem [IP주소]
또는 ppk 파일을 putty와 연결하여 접속한다.
[파일의 내용 수정하기]
gedit는 runlevel 5에서 동작하는 애플리케이션이다. 따라서 그래픽 환경이 없다면 동작하지 않는다.
gedit는 편집 기능이 부족하다.
편집기
grep root anaconda-ks.cfg
sed -i 's/root/hello/g' anaconda-ks.cfg
anaconda-ks.cfg 파일에서 root를 hello로 변경
-i: inplace
root로 시작(s/)하는 것을 hello로 변경, globally하게
/g가 없다면 딱 한 번만 변경
/g가 있으면 모두 변경
edit=hi
sed -i "s/hello/$edit/g" anaconda-ks.cfg
hello를 hi(edit 변수의 값)로 변경
grep Listen /etc/httpd/conf/httpd.conf
vi로 파일을 열 필요 없이 행 편집하기
sed -i 's/Listen 80/Listen 8888/' /etc/httpd/conf/httpd.conf
grep Listen /etc/httpd/conf/httpd.conf
systemctl restart httpd
-> failed
-> selinux가 포트 변경을 허가하지 않음
방화벽: originated, terminated, transit(forwarded)
SELinux: 내부 자원으로의 접근
getenforce
selinux가 켜져있음
selinux 끄기
setenforce 0
cat /etc/selinux/config | grep SELINUX
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl restart httpd
윈도우에서 http://211.183.3.201:8888/ 로 접속된다
[vi]
vi는 내부적으로 sed가 내장되어있다.
다른 배포판에서는 vim이 설치되어있지 않은 경우가 있다. 이 경우에는 vim을 설치하고 .bashrc에서 alias vi='vim'을 설정하는 것이 편하다.
이동하기
gg -> 첫 번째 행으로 이동
G -> 마지막 행으로 이동
10G -> 10 번째 행으로 이동
$ -> end 키
^ -> home 키
삭제하기
dd -> 한 줄 삭제
u -> 실행 취소
ctrl + r -> 다시 실행
2dd -> 두 줄 삭제
dgg -> 현 위치부터 첫 행까지 삭제
dG -> 현 위치부터 마지막 행까지 삭제
복사/붙여넣기
yy -> 한 줄 복사
p-> 붙여넣기
2yy -> 두 줄 복사
3p -> 세 줄 붙여넣기
줄 번호 표시
:set nu
검색하기
/
n -> 다음 단어
N -> 이전 단어
입력하기
:i -> insert
:o -> 바로 밑에 한 줄을 띄우고 입력
웹서버 설정 변경하기
vi /etc/httpd/conf/httpd.conf
/8888 -> 8888 검색
Listen 80으로 변경
/index.html -> index.html 검색
DirectoryIndex index.jsp index.html main.html 로 변경
-> index.jsp가 없으면 index.html을 확인하고 없으면 main.html을 확인
/var/www/html/index.html -> main.html로 파일 이름 변경하기
mv /var/www/html/index.html /var/www/html/main.html
systemctl restart httpd
윈도우에서 211.182.3.201 점속 -> 잘 표시된다
centos7(nfs sever) ----> centos8(nfs client)
mkdir /public
chmod 777 /public
touch /public/test.txt
[centos7, 8]
yum -y install nfs-utils
vi /etc/exports
/public 211.183.3.0/24(rw,sync,no_root_squash)
no_root_squash -> 원격지에 있는 사용자가 공유 디렉토리에서 파일을 만들었을 경우 서버 입장에서 해당 파일을 누가 만든 것으로 간주할 것인가?
만약 root_squash라고 하면 nfsnobody가 만든 것이다.
하지만 no_root_squash라고 하면 root가 만든 것이다.
systemctl restart nfs-server
systemctl enable nfs-server
[centos8]
showmount -e 211.183.3.201
mkdir /remote
mount -t nfs 211.183.3.201:/public /remote
-t: type
211.183.3.201(server, centos7)의 /public을 /remote(client, centos8)와 연결
ls /remote
echo "hello" > /remote/test.txt
파일에 "hello"라고 내용 작성
[centos7]
cat /public/test.txt
-> client(centos8)에서 쓴 텍스트 파일 서버에서도 보인다
[multi node architecture]
https://docs.oracle.com/cd/E65465_01/html/E57770/archover.html
클라우드는 controller node, compute node, storage node, network node 등의 multi node로 이루어져있다.
[사용자]
useradd -D
ls /etc/skel/
mkdir /etc/skel/public_html
echo "<h1>hello</h2>" > /etc/skel/public_html/index.html
useradd gildong
passwd gildong
[패스워드 설정]
cat /etc/passwd | grep gildong
groups gildong
그룹 바꿔보기
usermod -G user1 gildong
groups gildong
cat /etc/group
user1에 gildong에 추가되었음
더 간단하게 user 생성
useradd testuser1
echo 'testuser1:test123' | chpasswd
더 더 간단하게 user 생성
useradd testuser1 && echo 'testuser1:test123' | chpasswd
su gildong
ls
public_html 폴더 안에 public_html 파일이 있음
-> skel에 넣어놨던 것
사용자 삭제
ec2-usr, user1만 남기고 모두 지우기
cat /etc/passwd | grep bash
userdel -r user10
웹서비스 중에서 vhosting(가상 호스팅)을 이용하여 각 사용자별로 별도의 홈페이지를 사용하고 싶다. 어떻게 해야할까?
vhosting -> 하나의 웹서버에서 여러 이름의 웹사이트를 운영할 때 쓰인다.
vi /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
include /etc/httpd/conf/vhost.conf
<Directory "/home">
AllowOverride None
Require all granted
</Directory>
위 코드 추가
vi /etc/httpd/conf/vhost.conf
<VirtualHost *:80>
DocumentRoot /home/gunwoo
ServerName gunwoo.com
ServerAlias www.gunwoo.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /home/gunwoo2
ServerName gunwoo2.com
ServerAlias www.gunwoo2.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
mkdir /home/gunwoo
mkdir /home/gunwoo2
웹페이지 경로 생성
echo "<h1>gunwoo</h1>" > /home/gunwoo/index.html
echo "<h1>gunwoo2</h1>" > /home/gunwoo2/index.html
웹페이지 index.html 생성
systemctl restart httpd
웹서버 재시작
C:\Windows\System32\drivers\etc\
hosts 파일 수정
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
211.183.3.201 gunwoo.com
211.183.3.201 gunwoo2.com
211.183.3.201 www.gunwoo.com
211.183.3.201 www.gunwoo2.com
결과)
gunwoo.com 접속
gunwoo2.com 접속
vhosting 참고
https://server-talk.tistory.com/3
https://verdana1012.tistory.com/entry/Linux-Apache-%EA%B0%80%EC%83%81%ED%98%B8%EC%8A%A4%ED%8A%B8%EC%84%A4%EC%A0%95Apache-virtual-host
https://velog.io/@lijahong/0%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-Linux-%EA%B3%B5%EB%B6%80-%EA%B0%80%EC%83%81-%ED%98%B8%EC%8A%A4%ED%8C%85