본문 바로가기
Development(Web, Server, Cloud)/22) LINUX - Cloud

Cloud 07 - useradd 환경설정, login.defs, chage, groups, usermod, groupadd, chown, chmod, rpm, yum, wget, fedora, tar, 백그라운드 실행, crontab

by tonyhan18 2022. 1. 7.
728x90

리눅스는 namespace를 통해 Multi Access와 MT

 

클라우드는 내가 그 서비스가 필요할때만 신청해서 

 

Unix는 가상화가 바로 되었기에 MA/MT 기능이 가능했다.

 

하지만 리눅스는 이게 불가능했기에 AMD가 VMWare을 만들어서 가상화가 가능하게끔 했다.

 

가상화, 클라우드가 필요한 이유

1. 비용절감(전기료, 사외 엔지니어를 안써도 됨)

 

리눅스는 초기 유닉스를 가져와서 Multi Access가 가능하다.

그래서 사용자 관리를 위해서 CLI를 써야만 하는 것은 아니다. 하지만 리소스 관리를 위해서 CLI를 많이 쓴다.

이때 사용자 관리를 위해 두가지가 유저가 필요하다.

1. Super User : 시스템 전체에 관리 능력을 가지고 있다(root)

2. Normal User : 

사용자에게 권한을 위와같이 부여서해 사용했었다. 이때 조건을 보면 알겠지만

user1 ALL=(ALL) NOPASSWD: ALL로 되어 sudo의 권한을 전체 받을 수 있었다.

 

사용자 useradd 환경 설정

WEBDIR :: 리눅스 사용자추가(useradd) 환경 설정 (tistory.com)

 

리눅스 사용자추가(useradd) 환경 설정

리눅스에서 새로운 사용자를 추가할때 참조하게 되는 구성파일들을 살펴봅니다. useradd 환경 설정 구성 파일들 /etc/default/useradd /etc/login.defs /etc/skel/ /etc/default/useradd useradd의 기본파일로서,..

webdir.tistory.com

 

useradd -D 하면 위와같이 나오고 사용자 생성시 초기설정을 확인할 수 있다.

파일은 /etc/defualt/useradd에 있다.

GROUP은 기본 소속 그룹이다. -> -g로 기본 그룹을 바꿀 수 있다.

HOME은 홈디렉토리가 생기는 위치 -> -d로 초기 디렉토리를 바꿀 수 있다.

INACTIVE는 -1이니 사용하겠다는 의미

EXPIRE은 만료기간으로 만약 만료 기간이 없으면 계속 사용한다는 의미이다.

SHELL은 초기 사용할 쉘 종류 -> -s로 쉘을 바꿀 수 있다.

SKEL은 디렉토리이다. 이 디렉토리에 있던것들이 /home 밑에 들어간다.

 

 

 

/etc/login.defs

useradd가 새로운 계정을 생성할때 참조하는 파일이다. 세부설정파일이다.

 

블록 스토리지

파일 스토리지, 블록 스토리지 또는 오브젝트 스토리지 (redhat.com)

 

파일 스토리지, 블록 스토리지 또는 오브젝트 스토리지

파일, 블록 및 오브젝트 스토리지의 차이점과 요구사항에 적합한 최적의 스토리지 솔루션을 선택하는 법을 자세히 알아보십시오.

www.redhat.com

블록 스토리지란? - 대한민국 | IBM

 

 

useradd -D -b /newhome

으로하면 모든 사용자는 홈DIR을 마운트된 /newhome이 될 수 있다.

결과 위와같이 HOME이 바뀐것을 확인할 수 있다.

 

이렇게 생성된 user간에는 서로를 넘볼 수 없다.

자세한 설정을 봐보면 위와같다 이를 해석해보면

d : 디렉토리

rwx : 이 디렉토리의 소유주 user11은 이 폴더에 대한 전체 권한을 가지고 있다.

--- --- : group과 other들은 아예 사용 불가능하다.

 

결국 기본 홈디렉토리는 해당 사용자만 접근가능하고 다른 누구도 접근 못함 (단 root 제외)

 

chage

사용자의 패스워드를 주기적으로 변경하기 위한 설정

```

chage -m 2 user2 (최소 사용일)

chage -l user2  #user2 사용자에 설정된 사항 확인

chage -m 2  #user2 최소 2일 동안은 기존 패스워드를 유지해야함

chage -M 30  #user2 패스워드 변경 후 최대 30일까지 사용가능

chage -E 2019/12/12  #user2 암호 사용 만료일자

chage -W 10 user2  #암호 만료전 경고 기간. 즉 만료 10일 전부터 경고 메시지 표기

```

 

groups

한명의 사용자는 두개이상의 그룹에 속할 수 있다.

 

usermod

usermod -g  [그룹] [사용자]  #Primary Group(기본 그룹 - 빠져나갈 수 없는)으로 지정하기

usermod -G  #추가적으로 소속될 그룹을 지정

usermod -a  #그룹 덧붙이기

 

```

groupadd devops1

groupadd shopgroup

usermod -g dev user11

usermod -g dev user12

usermod -G devops1 user11

usermod -G shopgroup user12

```

이 상황에서 `usermod -G shopgroup user11` 한번더 한다고 하더라도 user11은 shopgroup이 추가적으로 붙는게 안다. 그룹은 기본그룹과 나머지 그룹들로 소속되는데 나머지 그룹이 2개 이상부터는 `-a`를 사용해서 추가해야한다.

 

그래서 이걸 앞으로 잘하기위해 기존그룹 유지하고 새그룹 유지의 명령어인

```

usermod -aG [그룹] [사용]

```

의 명령어를 정말 많이 쓴다.

 

GUI 환경에서 사용자 관리하기

```

yum -y install system-config-users

system-config-users

```

GUI 환경이니 그냥 눈에 보이는 데로 처리해주면 된다.

 

 

추가적인 작업 관리

리눅스의 파일과 디렉토리에는 윈도우와 동일하게 소유권과 허가권을 지정할 수 있다. 지정된 권리를 사용하거나 타 디렉토리로 이동하지 못하도록 해야한다.

```

chmod ugo+rwx 파일

chmod 777 파일

```

로 실행권한을 넣거나 빼주면 된다.

 

이번에는 소유주랑 그룹을 바꾸는 것을 해보자

```

chown root.dev a.sh

```

chmod 777 -R /test

하면 /test 하위에 있는 모든 디렉토리까지 권한을 777로 바꾸어준다

 

 

RPM, YUM

리눅스는 오픈소스 기반으로 애플리케이션의 실행파일, 구성파일 등이 모두 오픈되어 있다. 그러나 리눅스 초기 사용자들에게 외면을 받았던 이유는 설치의 어려움 때문이었다.

 

이에 RedHat이 exe와 비슷한 파일을 만든게 RPM(Redhat Package Manager)이다.

 

- RPM 설치 파일들 확인하기

```

rpm -qa

```

하면 설치된 파일들이 모두 나오게 된다. 물론 개 많으니 구지 하지 말자.

 

- 패키지 파일 삭제/설치하기

```

rpm -e gedit

yum -y install wget

```

wget은 web에서 구해오겠다는 의미이다.

이제 패키지를 찾으러 가보자

 

Rpmfind mirror

 

Rpmfind mirror

Rpmfind mirror located at Insa-lyon.fr News: Location: This server is located in Lyon, within the Creatis laboratory. Like other rpmfind mirrors, this machine is using a large amount of bandwidth, and credits go to the CISR, Centre Inter-Etablissement pour

rpmfind.net

보면 위와같이 상당히 많은 gedit를 찾을 수 있다. 우리가 집중해야하는 곳은 Distribution 즉 배포판이 어디를 위한것인지 찾아야한다.

 

우리가 쓰는 CentOS7을 찾아보자

 

CentOS를 찾았다. 우리는 이중에서 뒤쪽이 x86인거를 설치하자

다운받아보자

보면 드럽게 크다.

 

이제 RPM 이용 시 자주 사용하는 옵션들이 있다. 이것들을 사용하자.

 

- U : 기존에 패키지가 없다면 일반 설치, 설치되어 있다면 업그레이드 설치
- i : 일반 설치 -> U가 있어서 별 의미가 없다.
- v : 설치 과정 확인
- h : 설치 과정을 “#”를 통해 화면에 출력
- e : 패키지 삭제

 

결론적으로 다음의 명령어로 설치하면된다.

```

rpm -Uvh 파일명

```

 

 

 

하는김에 wireshark도 설치해보자

설치해보았는가? 위와같이 뜰것이다 .이건 wireshark를 설치하기 위해서는 다음과 같은 파일들이 필요하다는 의존성문제이다.

 

자 여기에서 보듯이 rpm 파일은 의존성으로 인하여 한번에 설치안되는 파일이 매우 많다.

 

그래서 우리는 yum을 이용하면 의존성도 신경쓰지 않아도 설치가 되도록 만들 수 있다.

 

yum의 설치과정은 이러하다.

yum -y install httpd

1. 자신의 시스템에 있는 저장소의 목록을 먼저 확인한다(yum 저장소는 ls /etc/yum.repos.d 에 가보면 존재한다.)

몇가지 주소들이 위 파일들에 기록되어 있다. 그래서 여기에서 패키지 설치를 위해 필요한 파일들을 참조해야하는지 결정한 다음 해당 주소를 연결한다.

 

2. 저장소에서는 httpd 실행을 위해 필요한 패키지(httpd)와 의존성을 해결하기 위해 필요한 패키지목록을 모두 확인하고 해당 패키지를 묶어 사용자에게 전송해준다.

 

3. 전달받은 패키지를 설치하되, 의존성을 먼저 해결하고 마지막으로 httpd 설치를 진행한다.

 

실재로 CentOS-Base.repo를 확인해보면

원본 저장소는 CentOS가 운영하지만 이를 동일하게 복제, sync시킨 미러사이트가 전세계에 존재한다. 사용자는 자신이 Linux 설치했을 때 사용했던 이미지의 주소를 미러사이트로 결정하고 해당 미러사이트에서 패키지를 다운로드 하게된다. 만약 설치하고자 하는 버전이 예전버전이거나 저장소에 있는 패키지가 최신버전의 rpm 패키지 파일이 아닐경우에는 ? -> 자신이 원하는 버전의 rpm 파일을 다운로드 해야한다. 그리고 로컬 인스톨 진행하기

 

예를들어 python 3.7 패키지 파일을 다운로드한 뒤 아래와 같이 localinstall 진행

```

yum -y localinstall python--3.7-x86.rpm

```

 

파이썬 3.7을 설치하고 대신 의존성 문제 해결을 위한 파일은 저장소로 연결하여 다운로드 한 뒤, 설치를 진행한다.

 

예를들어 위와같이 설치를 진행하더라도 설치가 안된다. 버전이 안맞아서 그렇다. 그래서 yum을 업데이트 해주어야한다.

 

```

yum update -y

```

해주면 설치된 패키지의 버전과 저장소의 패키지 버전을 비교하여 낮은 버전은 업데이트 설치 진행

그외에 yum관련 진행할 수 있는 명령어들은 위와같다.

 

단, yum의 단점은 두개가 있는데

1. 문제가 되는 놈은 yum remove이다. 의존성에 묶인 놈들을 삭제가 안된다. 그래서 나온게 dnf이다.

2. 무조건 인터넷이 있어야만 설치할 수 있다.

 

암튼 다시 WireShark를 설치하는데... 또 yum 업데이트 안된다고 뜰거다

reboot해보면 CLI가 뜬다... 허... 

xwindow를 실행하기 위해

```

startx

```

를 root로 로그인한 후 입력해주자

Xwindow 자동 실행하기 (tistory.com)

 

Xwindow 자동 실행하기

sudo nano /etc/rc.local ++++ su pi -c startx ++++ 를 추가한다. booting시에 /etc/rc.local을 실행한다.

louiey.tistory.com

혹시라도 startx 자동실행을 원한다면 위의 방식대로하자

요약하면 su pi -c startx를 /etc/rc.local에 입력해주자

 

암튼 다시 설치 후 삭제

```

yum -y localinstall wireshark ~~~~

yum remove wireshark-gnome

```

 

GUI 자동실행하게하기

사실상 RUN-LEVEL 문제이기 때문에 위와같이 GUI로 실행해달라고 요청한다.

 

 

multi-user.target (RUN-LEVEL 3)

 

CentOS CUI / GUI 전환하는 방법 + startx 한글적용 :: 컴퓨터가 할 일을 사람이 하지말자 (tistory.com)

 

CentOS CUI / GUI 전환하는 방법 + startx 한글적용

두가지 방법이 있다. 1. 임시로 GUI로 전환하는 방법 1-1) 우선 GUI모드를 설치 # yum groupinstall "x window system" "gnome desktop environment" 1-2) 설치가 끝나면 CUI에서 다음 명령어를 실행 # startx 1-..

suzxc2468.tistory.com

 

??? <- 블로그 읽고 정리해라

 

 

배포판 리눅스

--Fedora Linux

RedHat -- RedHat Enterprise Linux(RHEL)

-- CentOS(무료)

 

기본 설치 패키지가 다르며 저장소도 다르다. 따라서 Fedora, RHEL에서만 설치되는 별도의 패키지가 존재한다.

 

한번 위의것들을 사용하기 위해 openstack-packstack을 설치해보자

OpenStack - PackStack이란? PakcStack 설치 (tistory.com)

 

OpenStack - PackStack이란? PakcStack 설치

PakcStack 이란 - Redhat 계열의 OpenStack 자동화 설치 툴 PackStack 사양 NIC - NAT, Bridge Ram - 8GB ** (8GB 미만시 설치중 Memory allocated 오류가 나타난다) CPU - 2Processor, 1Core , 가상화 제공 Pa..

galid1.tistory.com

위쪽 블로그 글을 보면 이게 뭔지 알 수 있다.

 

Packstack으로 오픈스택 설치 실습 (2대 구성) - 제타위키 (zetawiki.com)

 

Packstack으로 오픈스택 설치 실습 (2대 구성) - 제타위키

  다른 뜻에 대해서는 Packstack 설치 실습 (1대 구성) 문서를 참조하십시오. ✔️ VirtualBox, CentOS 7, Packstack에서 테스트하였습니다. 1 개요[ | ] OpenStack 설치 실습 오픈스택 설치 실습 2 호스트 전용 네

zetawiki.com

설치는 위 방식대로 해야한다.

 

Openstack - Packstack 설치 (tistory.com)

 

Openstack - Packstack 설치

■ Openstack 설치 - https://www.rdoproject.org/install/packstack/ : Packstack 공식 사이트 - CentOS 7 - Stein 버전 설치 - 하나의 PC에 Controller와 Compute 설치 ㆍOpenstack 설치 - 먼저 방화벽, 네트..

yoonix.tistory.com

 

안그러고 그냥 설치하면 에러뜬다.

 

강사님방식은 이러하다.

```

yum -y install epel-release  # fedora 프로젝트의 저장소 설치

yum -y install centos-release-openstack-rocky  #패키지 설치를 위한 저장소를 /etc/repos.d 아래에 설치한다.

yum -y install epel-release  #이제 설치된다.

```

설치잘된다.

 

이제 실재로 저장소가 있는지 확인해보자

```

ls /etc/yum.repos.d

```

위와같이 epel, OpenStack을 위한 저장소가 있다.

 

문제는 yum은 무조건 인터넷이 있어야만 다운로드 받을 수 있다는 거다. 그럼 기업입장에서는 보안문제가 생기기 때문에 다른 방법을 처리한다.

 

만약 지정된 버전을 설치하고싶다면?

1. CentOS 버전 자체를 올린다. 7->8 버전

Python 2.7 -> Python 3.4로 올라간다.

php 5.4 -> 7.2로 올라간다.

 

2.  php 7.x 설치하기 위한 저장소 목록을 설치하고 이 저장소를 통해 새로운 버전을 설치하는 방법도 존재

1) PHP

# yum list php // 기본적으로 5.4 로 설정되어 있음 -> php -v로도 확인가능
# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum -y install epel-release yum-utils
# yum-config-manager --disable remi-php54
# yum-config-manager --enable remi-php74
# yum -y install php php-mysqlnd php-fpm php-cli php-gd

 

2) MariaDB

# yum -y install curl git wget vim
# wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
# chmod +x mariadb_repo_setup
# ./mariadb_repo_setup
# yum -y install MariaDB-server
# systemctl start mariadb && systemctl enable mariadb
# mariadb-secure-installation

 

3. local install 하기

 

 

파일의 압축과 패키징

중요함. tar파일을 만들어야함

 

알집은 특정 파일들의 목록을 하나의 패키지로 묶고, 압축까지 한꺼번에 진행하지만 리눅스는 패키지로 묶는 작업과 압축하는 작업이 별개의 일이다.

패키지로 묶는 작업은 tar(타르)를 이용하고 압축은 아래와 같은 도구를 이용한다.

zip, gzip, bzip

 

옵션을 이용하여 두 작업을 한꺼번에 진행할 수 있다.

 

압축은 위와같이 존재한다. 압축률차이인데 가장 뛰어난건 xz이다.

```

xz gedit.rpm

```

했더니 위와같다.

 

압축을 해제하려면

```

xz -d gedit.rpm.xz

```

```

xz -k gedit.rpm  # 압축 파일과 일반 파일을 만든다.

```

사실 이렇다고 해도 많이 쓰는건 bzip2와 gzip이다.

 

뭐 어짜피 결국 tar로 한방에 다해결해버린다. 왜워라 cvzf, xvzf 가 가장 많이 쓰인다.

```

mkdir pm

mv gedit* pm

tar -cvzf compress.tar pm/*

``` 

 

```

tar -xvzf compress.tar

```

 

보통의 압축은...

```

tar -cf compress.tar pm/*

gzip compress.tar

```

로 compress.tar.gz를 만들어야한다.

 

위의 과정을 옵션을 이용하여 한번에 진행할 수 있다.

tar -cvzf 나 -xvzf 를 쓰면된다.

 

백그라운드 실행

실행하는 프로그램들 뒤에 `&`를 붙이면 백그라운드 작업이 실행된다.

```

gedit &  # 이러면 백그라운드 실행이 된다.

ps -ef | grep gedit

kill -9 번호  # 이러면 백그라운드 실행되던것이 종료된다.

```

 

date

QUIZ

date를 2201071646 이렇게 출력되도록 만들어보자

 

cron

특정 시간대에 동작, 업무가 가능하도록 작업하는 것. 보통 백업과 같은 업무에 사용

```

crontab -e

```

위와같이 작성해주었다. 이때 *위치에는 분/시/일/월/요일을 넣어준다. 그러면 Default로 1분마다 실행된다.

실재로 1분이 지나니 위와같이 crontest.txt가 생기었다.

 

조금더 복잡한 동작을 해보자

1분마다 /root/0107 디렉토리 압축을 진행하는데 파일명이 yymmddHHMM.tar.gz로 압축해서 /root에 누적해야한다.

 

팁으로는 쉘을 시키면된다.

 

 

cron 공부해놓기

 

리눅스 반복 예약작업 cron, crond, crontab - 제타위키 (zetawiki.com)

 

리눅스 반복 예약작업 cron, crond, crontab - 제타위키

1 개요[ | ] cron, cronie, crond, cron daemon, crontab, cron job, crontab job 크론, 크론 데몬, 크론탭, 크론작업, 리눅스 작업 스케줄러 /usr/sbin/crond /usr/bin/crontab 프로세스 예약 데몬 리눅스용 작업 스케줄러 특정

zetawiki.com

기본 형식

* * * * * 파일명.sh : 형태를 많이 사용 default는 매 1분마다 실행한다.

15,45 * * * * : 매시 15분, 45분에 수행

*/10 * * * * : 10분마다 수행

0 2 * * * : 매일 02:00에 수행

 

contab -e 로 작성

 

 


과제

"squid", "squidgard" based on "Proxy"를 찾아보기c

728x90