리눅스 tar.gz로 압축하기 압축풀기

주로 리눅스에선 tar와 tar.gz을 사용하게 되는데, 이를 해제하려면 무슨 짓을 해야하는지 알아본다. (사실 내가 자꾸 까먹어서..)

눈치 빠른사람은 tar랑 gz 둘 다 다른 확장자라는 것을 눈치 챘을것이다. tar는 우리가 흔히 아는 타르를 생각하면 빠를 것 같다. (왜 그 검은색의 끈적끈적한…)

타르는 한 파일로 묶어주는 기능이지만 용량을 줄여주진 않는다. 이 때문에 gz로 압축을 같이 해 주는 것이다!

압축하기

tar -zcvf 파일명.tar.gz 폴더명

tar.gz를 압축 푸는것도 비슷하지만 다른 명령어를 사용해서 풀 수 있다.

압축 풀기

tar -zxvf 파일명.tar.gz

리눅스 파일 내 특정 키워드 가진 파일 찾기

사용하다 보면 파일 내 특정 키워드를 가진 파일을 찾고 싶을 때가 있다.

이는 grep으로 쉽게 찾을 수 있다.

사용법

grep -r 키워드 *

하면 해당 폴더 내 키워드를 가진 파일 목록이 나올 것이다.

혹은, 우분투 사용 시 tracker라는 걸 사용할 수도 있지만 이는 여기에서 서술하지 않는다.

리눅스 재시작시 forever도 같이 시작하기

자고 일어나서 보니 모든 서버가 다 꺼져있다 ㅠ

uptime을 보니 얼마전에 재시작을 한 듯 한데 (아니면 무슨 일이 있었던것이거나..)

어찌됐던, 서버가 갑자기 재시작하는 일이 생길 수 있으니 설정을 해 두는것이 맞다고 본다.

스택오버플로우에 해당 문제 해결방법을 찾을 수 있었다.

아래는 best answer 본문이다.

  1. To start editing run the following replacing the “testuser” with your desired runtime user for the node process. If you choose a different user other than yourself, you will have to run this with sudo.
    $ crontab -u testuser -e
  2. If you have never done this before, it will ask you which editor you wish to edit with. I like vim, but will recommend nano for ease of use.
  3. Once in the editor add the following line:
    @reboot /usr/local/bin/forever start /your/path/to/your/app.js
  4. Save the file. You should get some feedback that the cron has been installed.
  5. For further confirmation of the installation of the cron, execute the following (again replacing “testuser” with your target username) to list the currently installed crons:
    $ crontab -u testuser -l 

Note that in my opinion, you should always use full paths when executing binaries in cron. Also, if the path to your forever script is not correct, run which forever to get the full path.

Given that forever calls node, you may also want to provide the full path to node:

@reboot /usr/local/bin/forever start -c /usr/local/bin/node /your/path/to/your/app.js

 

forever의 위치는 다를 수 있으니 which forever를 써서 확인 해 볼 것!

Lynis를 사용한 리눅스 보안 설정

Lynis를 사용하면 현재 설정된 웹 서버/ssh 등의 설정들을 검사하고 그 결과를 리포팅해주는 프로그램이다.

16.04 xenial 기준 버전 설치 설명

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C80E383C3DE9F082E01391A0366C67DE91CA5D5F

Lynis의 레포지토리는 https를 사용하므로 apt-transport-https를 필요로 한다

sudo apt-get install apt-transport-https

 

이후 레포지토리를 추가한다

sudo add-apt-repository "deb [arch=amd64] https://packages.cisofy.com/community/lynis/deb/ xenial main"

이후

sudo apt-get update 
sudo apt-get install lynis

해주면 설치가 완료된다.

 

설치 이후

lynis update info

를 입력하면 최신버전 여부를 확인할 수 있다.

 

보안 리포트 결과는

sudo lynis audit system

으로 받아볼 수 있다.

[백업글]리눅스 유저 삭제

유저 생성엔 useradd 혹은 adduser를 사용하면 된다했고,

생성된 유저의 비밀번호 변경에는 passwd를 사용하면 된다고 했다.

하지만 어떠한 경우에 의해서 계정을 삭제해야 할 때가 있는데,

이럴 땐 userdel 명령어를 사용하면 삭제할 수 있다.

사용법은

userdel 사용자명

userdel [-옵션]  사용자명

즉,

홈 디렉토리같은걸 같이 한번에 삭제하고 싶을 땐

userdel -r 사용자명

자신의 소유가 아닌 것이라도 삭제하고 싶을 땐

userdel -r -f 사용자명

이런식으로 사용 가능하다.

SELinux에 매핑된 유저를 삭제할 땐 -Z 옵션을 붙여주면 된다.

[백업글]리눅스 사용자 패스워드 변경

사용자 추가에는 useradd 혹은 adduser가 있는데,

가끔 추가해 준 유저의 비밀번호를 변경해야 할 때가 있거나,

useradd의 경우 adduser과는 다르게 생성과 동시에 비밀번호 설정이 되지 않아 따로 설정해줘야 한다. (혹은 생성할때 파라미터로 설정하면 될 듯 하다.)

이럴 때 사용하는 명령어는 바로 passwd이다.

(혹은 root의 비밀번호를 모른다거나 해서 sudo로 root의 비밀번호를 바꾸는것도 가능하다!!)

 

사용방법

passwd 계정명

하고 엔터 시

새로운 UNIX 비밀번호 입력: 이라 뜨며, 다시 입력시 비밀번호 변경이 완료된다.

 

[백업글]adduser와 useradd의 차이

우선 눈에 보이는 차이는 홈 디렉토리 생성 여부이다.

useradd는 생성해주지 않고, adduser는 생성해준다.

 

즉, 하나하나 설정을 통해 추가해주고 싶다면 useradd를,

아니면 기본 설정을 통해 계정을 추가하고 싶다면 adduser를 사용하면 된다.

(adduser로도 설정이 가능하다!)

 

adduser의 설정 파일은 /etc/adduser.conf에 있는데, 읽기전용으로 되어있다.

[백업글]UFW 간단한 사용법

ufw status

현재 ufw에 등록 된 설정들 보여줌

ufw allow 포트번호(/udp or /tcp)

해당 포트번호 열기 (아마 지정 안해준다면 udp/tcp 둘 다 열듯)

ufw allow 포트번호1:포트번호2/udp or tcp

포트번호1부터 포트번호2까지 열기(이건 tcp 혹은 udp 지정해줘야함!!)

ufw enable

ufw 작동시작

MariaDB Unix-socket plugin not loaded 문제 해결

우선 데몬으로 돌아가고 있는 mariadb를 멈춰야 한다.

sudo service mariadb stop

그 후, –skip-grant-tables 옵션을 사용하여 인증과정을 우회한다. (로그인이 불가능하니까..)

sudo mysqld_safe --skip-grant-tables &

그 후 mariadb에 접속해본다.

mysql -u root

 

그 다음 쿼리문으로 플러그인 상태를 확인 해 본다.

select host, user, plugin from mysql.user where user='root';

그러면 plugin이 unix_socket으로 되어있는 것을 확인할 수 있다.

 

쿼리문으로 plugin을 다른 것으로 변경 해 주어야 한다.

update mysql.user set plugin = 'mysql_native_password'; 
 
flush privileges; 
quit;

 

플러그인을 mysql native로 변경했으니 safe모드로 켜진 mariadb를 종료하고 정상적으로 시작하여 확인해본다.

sudo kill -9 $(pgrep mysql) 
sudo service mariadb start

리눅스 시스템 종료, 재시작 명령어

GUI환경에서야 당연히 전원 버튼을 누르면 되겠지만, SSH 등을 사용할 땐 CUI환경을 사용하기 마련이다.

이러면 재부팅 혹은 시스템 종료 역시 명령어를 보내서 작동시켜야 하는데, 이럴 때 사용하는 명령어 몇 개를 적어뒀다.

1.halt

halt //시스템 종료 
halt -f //시스템 강제 종료

주로 다른 옵션 없이 단독으로 사용

2. shutdown

shutdown -h now //즉시 시스템 종료 
shutdown -h 5 //5분 후 시스템 종료 
shutdown -h 13:15 //13시 15분에 시스템 종료 
 
shutdown -r now //즉시 시스템 재부팅 
shutdown -r 5 //5분 후 시스템 재부팅 
shutdown -r 13:15 //13시 15분에 시스템 재부팅 
 
shutdown -c //예약 취소

halt와 reboot을 한 군데 모아둔 형태이다.

 

3.reboot

reboot //시스템 재부팅 
reboot -f //시스템 강제 재부팅

halt와 사용법이 같다.