#1 사용자 관리와 파일 속성
1. 계정정보에 대한 이해
cat /etc/passwd를 통해 계정정보를 출력
root : x : 0 : 0 : root : /root : /bin/bash
= 사용자 : 암호 : 사용자ID : 사용자그룹ID : 전체이름 : 홈디렉터리 : 기본셀
-> 암호가 X인 이유는 모든 사람들이 볼 수 있기에 해쉬 값으로 만듦.
-> root는 사용자와 그룹 모두 0이며, 일반사용자는 모두 1000으로 시작한다.
cat /etc/group를 통해 그룹정보를 출력
root : x : 0 : NULL
= 그룹이름 : 암호 : 그룹ID : 그룹에 속한 사용자
-> NULL은 없다는 의미
2. 계정만들기
# useradd blackpink // blackpink라는 계정 만들기
# passwd balckpink // blackpink의 비밀번호 만들기 -> 어떤 오류에도 비밀번호 생성은 가능
-> BAD PASSWORD: The password is shorter than 8 characters // 8글자이상이 되지 않아 오류 발생
-> BAD PASSWORD: it is based on a dictionary word // 사전에도 나올 정도로 쉬운 비밀번호여서 오류 발생
# userdel blackpink // 사용자 계정 삭제
#chage -l blackpink // blackpink에 대한 사용기간, 만료기간 등을 확인
#chage blackpink -m [최소기간] // blackpink에 대한 최소 의무 사용기간 변경
#chage blackpink -M [최대기간] // 최대 사용기간 변경
#chage blackpink -W [기간] // 만료 전 경고 기간 -> 만료하기 [기간]일 전 경고
#chage blackpink -E [최대기간] // 만료날짜 지정 가능
-> #chage -m [기간] -M [기간] -W [기간] blackpink // 한번에 바꿀 수 있다.
#usermod -g root blackpink // blackpink를 root의 그룹으로 속하게 한다.
#groupadd girlgroup // girlgroup이라는 그룹 만들기
#groups blackpink // blackpink가 어느 그룹에 속해져 있는지 확인
#groupdel // 그룹 삭제
#gpasswd -A / -a / -d // -A: 관리자 지정 / -a : 사용자 추가 / -d : 사용자 제거
#2 파일과 디렉터리의 소유권과 허가권
1. 권한 읽기
# ls -l // 해당 계정에 있는 디렉토리, 파일 등을 자세히 알려준다.
Desktop의 권한을 숫자로 표현 : 755
-> son의 권한 : 4+2+1 = 7 / root의 권한 : 4+1 = 5 / 기타의 권한 : 4+1 = 5
drwxr-xr-x 소유자(User) 그룹(Group) 기타(Other)
맨 앞의 글자
|
|
#cp password.lst /home/twice // password.lst를 /home/twice로 복사
#cd /home/twice // /home/twice로 이동
#ls -l // 제대로 복사되었는지 확인
#chown twice password.lst // password.lst의 소유자를 twice로 변경
#chgrp twice password.lst // 그룹을 twice로 변경
#chmod 755 password.lst // password.lst의 권한을 710에서 755로 변경
#chmod u+x password.lst // password.lst의 사용자에 실행권한 추가
#chmod u-x password.lst // 사용자의 실행권한 제거
#chmod o+r password.lst // 기타에게 읽기권한 추가
-> u : user, g : group, o : others
2. 파일 불러오기
# wget http://~~.exe or txt -> 해당 주소를 가진 곳에서 해당 파일 가져오기
# ./[파일명] --install -> 파일 실행시키기
3. 특수한 형태의 파일 권한
- setuid(4~) : user가 자신의 파일을 변경해야 할 때, 잠시 root의 권한 사용
- 명령어 passwd는 root의 권한이므로 일반사용자는 쓰지 못함.
- -rwsr-xr-x -> 4xxx : 4755
- setgid(2~) : group이 자신의 파일을 변경해야 할 때, 잠시 root의 권한 사용
- -rwxrwsr-x -> 2xxx : 2775
- stickbit(1~) : 공유디렉토리
- drwxrwxrwt -> 1xxx : 1777
- 디렉토리에 stickybit를 설정하여 파일이나 디렉토리 생성 가능
- 그러나 남의 파일은 삭제 할 수 없다.
#chmod u+s test.txt // setuid 설정 방법
#chmod g+s test.txt // setgid 설정 방법
#chmod o+t test.txt // stickybit 설정 방법
4. 특수 기능
\(back slash) : 특수문자의 기능을 하지 못하게 하는 것
-> 띄어쓰기를 함에 있어 다른 내용이 아닌 같은 내용임을 표기
-> Escape처리라고 부름.
#3 파일들의 link
- 실제 파일은 다른데 있지만, 사용자에게 사용하기 편리하도록 연결해주는 기능
Hard link | Hash 값도 같게 완전히 똑같은 파일을 복사하여 연결 |
Soft link | Hasg 값은 다르지만 내용이 같게 파일을 복사하여 연결 |
#cd /root
# mkdir linktest // linktest라는 디렉토리 생성
# vi basefile // basefile을 만들고 안의 내용을 작성
#cat basefile // basefile 안의 내용을 확인
#ln basefile hardlink // hardlink로 복사
#ln -s basefile softlink // softlink로 복사
#4 Hash Function
- 파일이나 텍스트를 해시함수에 넣으면 Hash code 출력
- Hash Function은 '요약'하는 방식을 반복하는 함수
- 해당 파일이 서로 다르면 Hash code 도 다름 -> 무결성 검사 가능
- 일방향 함수 (역연산 불가)
- Hash Function과 Hash code를 알아도 파일이나 텍스트를 만들지 못함
- 충돌방지
- 원문이 다른데 Hash code가 같을 경우
- MD5( 128 bit ), SHA-1( 160 bit ), SHA-256( 256 bit )
- MD5 : 1/(2의 128제곱) -> 0에 수렴
- SHA-1 : 1/(2의 160제곱) -> 0에 수렴
- SHA-256 : 1/(2의 256제곱) -> 0에 수렴
- 컴퓨터의 발전으로 MD5와 SHA-1는 Hash code가 같을 수도 있음
#cd /root/linktest
#md5sum basefile hardlink //basefile과 hardlink의 Hash code 비교
#sha1sum basefile hardlink
#sha256sum basefile hardlink
- 고정길이 출력 : 같은 Hash Function을 사용하면 원문 길이와 상관없이 일정크기로 출력
#5 자동설치 명령 : dnf
- dnf 사용방법 ( dandified )
#dnf install [패키지 이름] // 패키지를 설치
#dnf update [패키지 이름]
#dnf check-update
#dnf remove [패키지 이름] // 패키지 삭제
#dnf info [패키지 이름] // 정보를 확인
#6 파일 압축 및 묶기
1. 파일 압축과 해제
xz -d [파일명] // -d : decompress (압축해제)
xz -l [파일명] // -l : list (압축된 파일의 리스트 확인)
xz [파일이름] [파일이름] // 압축하고 원래 파일은 삭제
xz -k [파일이름] // -k : keep (원래파일 놔두고 압축)
bzip2 [파일이름] // 압축
bzip2 -d [파일이름].bz2 // 해제
-> gzip 동일
zip [생성할 파일].zip [압축할 파일]
unzip [압축파일].zip
2. 파일 묶기와 해제
- tar(Tape Archive) : 여러 파일을 묶는 역할만 수행, 압축과는 별도.
tar --help // tar 뒤에 어떠한 명령어가 올 수 있는지 알려준다.
-c : 새로운 묶음 ( create ) -> tar -cvf [압축파일명].tar [압축대상파일]
-x : 묶음 해제 ( extract )
-f : 묶음 파일 이름 저정
-v : 과정을 보여줌 ( visual )
-z : gzip으로 압축한 경우
-J : xz로 압축한 경우
-j : bzip2로 압축한 경우
-> --help 자리에 오는 순서는 상관 없다.
#tar -zxvf [압축파일].tar.gz
#tar -Jxvf [압축파일].tar.xz
#tar -jxvf [압축파일].tar.bz2
#7 파일 위치 검색
#find --help
/ -name "shadow" // shadow라는 이름의 파일을 찾는다
// ' / '의 의미는 최상의 디렉토리에서부터 그 아래 전체를 나타냄
/ -user "twice" // 소유자가 twice인 파일을 검색
/etc -perm 644 // /etc에서 perm(권한:permission)이 644인 파일을 검색
/usr/bin -size +10k +size 100k // 10kbytes ~ 100kbyes인 파일을 검색
/ -name "*.swp" -exec rm {} \; // rm( remove ) : 확장자가 swp인 것들을 삭제
// ' * '은 모든 파일을 뜻함
// {} : *.swp 를 넣고 실행
// ' \; ' : 이 명령문을 여기서 종료
// -exec( execute ) : 실행한다는 뜻
#8 저장소(repo : repository) 파일 변경 및 워드프레스 페이지 만들기
https://cafe.naver.com/thisislinux/6620 에 있는 내용 전체 복사
#cd /etc/yum.repos.d
#mkdir backup // 백업에 필요한 디렉토리 생성
#mv *.repo backup // 확장자가 repo인 모든 파일을 backup으로 이동
#vi This.repo -> Edit > paste // This.repo의 파일을 만들어 복사한 내용을 붙여넣는다
#dnf clean all // 임시 저장 장소의 캐시패키지를 모두 삭제 -> 6개가 삭제되면 정상
#dnf update // 임시 저장 장소를 새로 업데이트.
다시 반복한다
#cd /etc/yum.repos.d // yum.repos.d 로 이동
#ls // yum.repd.d 디렉토리에 두 개의 파일 확인
#dnf clean all // 28개의 파일이 제거되면 정상
#dnf update // 다시 업데이트 해준다.#firewall-config //웹사이트를 만들어 줄 준비를 한다.
// 명령어가 되지 않는다면 #init 6 을 통해 재부팅하고 반복한다.1. 위의 화면이 뜨면 상단의 configuration을 permanet로 바꾸고 public의 http, https 를 클릭
2. 좌측 상단의 Options의 reload를 누르고 홈페이지 다시 확인
-> #ifconfig를 통해 주소를 확인하고, 홈페이지에 해당 IP주소를 적는다.
3. 안되면 cmd에서 systemctl start httpd를 통해 다시 시작
// httpd(apache2) : http를 서비스하는 Daemon(d)
// Daemon : 서비스를 실행하기 위해 메모리에 동작하고 있는 프로세스더보기firewall-config를 입력하지 않고 터미널에서 직접 입력하기
#firewall-cmd --permanent --add-service=http
#firewall-cmd --permanent --add-service=https
#firewall-cmd --reload // 해당 설정들을 적용시켜주는 것.
#rpm -qa httpd php mariadb-server // qa :question answer
// php : 웹 스크립트 프로그래밍
// mariadb : Database로 mysql과 동일
// mariadb-server의 설치여부 확인
#dnf -y install httpd php php-mysqlnd mariadb-server // mariadb-server의 설치
#systemctl status httpd // httpd의 상태를 확인
#systemctl start httpd // active상태가 아니라면 시작해준다.
#cd /var/www/html
#vi index.html
-> i // 편집모드 실행
-> <html> // html 시작
-> <body> // 본문 시작
-> <h1> This is my website. Welcome!! <br> 어서오세요 반갑습니다. </h1> // br : 한줄 띄기
// hr : header
-> </body> // 본문 종료
-> </html> // html 종료
-> ESC / :wq
#systemctl restart mariadb
#systemctl enable mariadb
#systemctl status mariadb
#mysql -u root -p // maria DB 시작
-> create database wpDB; // ' ; ' : 이 것을 써줌으로 해당 명령을 종료한다는 뜻.
// wpDB라는 database 생성
-> grant all privileges on wpDB.* to wpUser@localhost identified by '1234';
// 사용자와 비밀번호 생성
-> exit
#cd /var/www/html
#dnf -y install bind-utils net-tools wget unzip bzip2
#wget https://ko.wordpress.org/latest-ko_KR.tar.gz // wordpress 다운로드
#tar -zxvf latest-ko_KR.tar.gz // wordpress 압축해제
#chmod 707 wordpress // wordpress의 권한 변경
#chown -R apache.apache wordpress // apache2와 httpd는 사용계열이 다를뿐 같은 말임.
// wordpress의 소유자와 그룹을 apache로 변경
#cd wordpress
#cp wp-config-sample.php wp-config.php // wp-config-sample.php를 복사.
#vi wp-config.php
-> :set nu
-> 23번 라인 : wpDB
-> 26번 라인 : wpUser
-> 29번 라인 : 1234
#vi /etc/httpd/conf/httpd.conf
-> 122번 라인 : DocumentRoot "/var/www/html/wordpress"
-> 134번 라인 : <Directory "/var/www/html/wordpress">
-> 154번 라인 : AllowOverride All
#systemctl restart httpd
#systemctl status httpd
#dnf install php-json // CentOS8에서 wordpress 에러 교정 방법
#systemctl restart httpd
-> 웹브라우저에 할당받은 IP주소를 입력하면 wordpress 사이트가 나옴.
'LINUX' 카테고리의 다른 글
LINUX Server 만들기 (0) | 2023.06.02 |
---|---|
LINUX내 시스템 설정 (0) | 2023.05.31 |
LINUX의 설치와 기본 명령어 (0) | 2023.05.26 |