해당 테스트는 Cent OS7의 open-jdk 1.8을 기준으로 진행했습니다.

# which java
/usr/bin/java

# ll /usr/bin/java
lrwxrwxrwx. 1 root root 22 Apr 25 22:19 /usr/bin/java -> /etc/alternatives/java

# ll /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 Apr 25 22:19 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64/jre/bin/java

# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64/
# ls
ASSEMBLY_EXCEPTION  bin  include  jre  lib  LICENSE  tapset  THIRD_PARTY_README
 

파일이나 디렉터리에는 소유자와 그룹정보가 포함되어있고, 파일의 소유자, 그룹원 별로 다른 접근권한이 부여될 수 있습니다.

1. 파일의 소유자와 파일 사용가능 그룹 변경 방법

파일의 소유자, 그룹은 root 사용자만 변경할 수 있습니다. 그래서 chown 명령어를 사용할 경우 root로 로그인해야합니다.
# chown [options] owner:group files

owner만 입력할 경우 파일의 소유자만 변경되며, "owner:" 으로 입력할 경우 소유자 속한 그룹으로 변경됩니다.

1) 테스트

dev 그룹에 속한 kim이라는 계정이 있고 memo.txt 파일의 소유자를 변경해보겠습니다.

# vi memo.txt
# ls -l

# chown kim memo.txt

소유자만 kim으로 변경됩니다.

# chown kim: memo.txt

kim이 속한 그룹인 dev로 변경됩니다.

# chown kim:mysql memo.txt

memo.txt 파일의 소유자는 kim, 사용가능 그룹원은 mysql 으로 변경됩니다.

2. chown -R 옵션

# chown -R kim:dev tomcat8

chmod 명령어와 유사하게 디렉터리의 소유자&그룹 변경 시 -R 옵션을 추가하면 서브 디렉터리와 파일까지 모두 변경됩니다.

1. 파일 접근 권한이란

2020/11/10 - [IT/Linux] - [Linux] 파일의 접근 권한을 8진수로 표기하는 방법

2. umask란

umask는 파일이나 디렉터리 생성 시 초기 접근권한을 설정할 때 사용합니다.
초기 파일의 권한은 666이고 디렉터리는 777입니다.
여기에 umask 값을 빼서 초기 파일 권한을 설정할 수 있습니다. 

터미널에 umask를 입력하면 umask 값을 확인할 수 있습니다.
umask 값이 0002 라면 파일의 초기 접근 권한은 664, 디렉터리의 초기 접근 권한은 775입니다. 
ex) file : 666 - 002 = 664, directory : 777 - 002 = 775

memo.txt 파일과 mydir 디렉터리를 생성하고 "ls -l" 명령어로 확인 했을 경우의 접근 권한입니다.

memo.txt의 접근권한 "-rw-rw-r--" 을 8진수로 바꾸면 664이고
mydir의 접근권한 "drwxrwxr-x"을 8진수로 바꾸면 775입니다.

umask 값은 계정마다 설정할 수 있으며, root의 umask는 /etc/profile 에서 설정할 수 있고,
각 사용자는 .profile, .cshrc, .bashrc, .login과 같은 사용자 profile에서 설정할 수 있습니다.

현재 로그인한 계정에서 일회성으로 umask를 설정하려면 "# umask 8진수3자리" 값을 입력하면 됩니다.
(로그아웃 시 초기화됩니다.)

 

1. 접근 권한이 필요한 이유는?

리눅스는 무분별한 파일의 접근을 막기위해 파일의 소유자, 그룹원, 외부 사용자 별로 다른 권한을 줄 수 있습니다.

 

2. 접근 권한 8진수 표기법

파일의 접근 권한은 8진수 3자리로 표현이 가능합니다. 

memo.txt 파일이 있고, 파일 접근 권한이 7 5 4 일 때, 차례대로 소유자, 그룹원, 외부 사용자의 권한을 의미합니다.

그리고 각 8진수를 2진수로 바꾸어 접근 권한을 식별할 수 있는데, 8진수를 2진수로 바꾸면 3자리 수가 나오고 각각 
r(읽기), w(쓰기), x(실행)을 의미합니다. 그리고 2진수의 각 자리 숫자가 1이면 해당 권한을 허용한다는 의미입니다.

1) 예시

memo.txt 파일의 소유자는 root고, 그룹은 dev입니다. "-rwxr-xr--" 값을 8진수로 변경하면 754를 의미합니다.

7 (111 = rwx) 파일 소유자
5 (101 = r-x) 그룹원
4 (100 = r--) 외부 사용자

 각각 의미를 해석하면 다음과 같습니다.

파일의 소유자 root는 읽기, 쓰기, 실행이 가능하다.
dev 그룹원은 읽기와 실행이 가능하다.
외부 사용자는 읽기만 가능하다.

파일 권한의 8진수 표기법은 보통 명령어의 옵션으로 접근권한을 간결하게 표현할 때 사용합니다.

2020/11/08 - [IT/Linux] - [Linux] 리눅스의 접근 권한 설정 - chmod

 

1. chmod의 기본 사용방법

# chmod [options] mode files

파일의 접근권한을 변경하려면 root 계정으로 로그인하거나 파일의 소유자인 상태여야 합니다.

파일/디렉터리의 접근권한을 변경할 수 있는 두가지 방법을 소개하겠습니다.

 

2. 8진수 모드를 이용한 접근권한 변경

권한을 부여할 때, 4(r)은 읽기, 2(w)는 쓰기, 1(x)는 실행으로 구분하여 접근 권한을 지정할 수 있습니다.

# chmod 754 ./memo.txt  
7(111) = r+w+x
5(101) = r+x
4(100) = r


각 숫자에 대한 의미는 차례대로 소유자, 그룹원, 외부 사용자를 의미합니다.
memo.txt 파일에 대한 접근 권한은 다음과 같습니다.
소유자는 읽기,쓰기,실행이 가능하고, 그룹원은 읽기와 쓰기, 외부 사용자는 읽기만 가능합니다.

 

3. 기호를 이용한 접근 권한 변경

u(소유자), g(그룹원), o(외부 사용자), a(모든 사용자)연산기호(+,-,=)접근 권한(r,w,x)조합해서 변경할 수 있습니다.
# chmod u+rwx,g+rx,o+r memo.txt

// chmod 754 memo.txt와 같은 옵션이다.
// 기호 옵션에 띄어쓰기를 넣으면 안된다

# chmod o-r memo.txt

// 일부 사용자 권한만 변경할 수 있다.
대상
u : 소유자
g : 그룹원
o : 외부 사용자
a : 모든 사용자(u,g,o)

연산
+ : 추가
-  : 삭제
= : 지정
s : set user ID

접근 권한
r : 읽기
w : 쓰기
x : 실행

 

4. 접근 권한을 하위 디렉터리까지 모두 변경하기( -R 옵션 )

디렉터리가 가지고 있는 파일과 서브 디렉터리 까지 모두 접근 권한을 변경할 수 있다. (재귀 적으로 적용됨)

# chmod -R 754 tomcat8

 

5. 파일과 디렉터리의 읽기/쓰기/실행 권한의 의미

2020/11/08 - [IT/Linux] - [Linux] 파일 권한의 의미와 리눅스 파일의 종류

리눅스 시간을 한국 표준 시간으로 맞추려면 timezone을 UTC+9 KST (Korea Standard Time)로 해주어야 합니다.

UTC (Universal Time, Coordinated, 협정 세계시)란 국제적인 표준시간의 기준으로 쓰이는 시간을 말합니다.
UTC의 기준 시간은 영국 런던이고 우리나라는 런던을 기준으로 9시간을 더해주면 됩니다.
// Seoul timezone이 있는지 확인
# ls /usr/share/zoneinfo/Asia

// 기존 타임존 삭제
# rm /etc/localtime
# ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

// KST timezone으로 바뀌었는지 확인
# date

 

RHEL 7 부터 방화벽을 관리하는 데몬이 iptables에서 firewalld로 변경되었습니다.

iptables을 사용하지 않는 것은 아니고 firewalld의 기반 기능으로 동작하고 있습니다. 

firewalld는 firewall-cmd 명령어를 이용해 사용할 수 있습니다.  firewalld의 기본 설정은 /usr/lib/firewalld/ 경로에 저장되고, 이후 커스텀 설정은 /etc/firewalld/ 경로에 저장됩니다.

1. 방화벽이란?

허용된 접속을 제외하고 외부 사용자들이 내부 네트워크에 접근하지 못하도록 하는 네트워크 방어 도구 입니다. 

2. 방화벽 실행

systemctl start firewalld

3. Zone

방화벽에는 기본적으로 Zone이라는 개념이 존재합니다. Zone은 서버의 용도에 맞게 미리 정의된 네트워크 보안 레벨을 의미합니다. 아무 설정도 하지 않았다면 기본적으로 public Zone을 사용합니다.

아래 명령어를 입력하면 현재 적용되고 있는 Zone이 출력됩니다.

firewall-cmd --get-default-zone

Zone에 허용 및 금지할 포트와 서비스를 설정할 수 있습니다. 

public zone에 9000번 포트와 9001포트 그리고 mysql 서비스를 등록해보겠습니다.

1. 포트 등록

 방법 1

  firewall-cmd --permanent --zone=public --add-port={9000,9001}/tcp

 방법 2
  firewall-cmd --permanent --zone=public --add-port=9000/tcp
  firewall-cmd --permanent --zone=public --add-port=9001/tcp

 방법 3 (포트를 범위로 지정하여 허용할 수 있습니다.)
  firewall-cmd --permanent --zone=public --add-port=9000-9010/tcp

2. 서비스 등록
 firewall-cmd --permanent --zone=public --add-service=mysql

 firewall-cmd --reload
--permanent 
지정한 옵션을 영구적으로 적용합니다. 해당 옵션을 주지 않는다면 리눅스 리부팅 시, 설정한 옵션이 모두 초기화 됩니다.

--zone=ZoneName
지정한 zone에 설정을 적용합니다. zone을 지정하지 않으면 현재 사용하고 있는 zone에 적용됩니다.

firewall-cmd --reload
방화벽 설정이 끝나면 반드시 방화벽 리로드를 해주어야 적용됩니다. 

zone에 대한 설정 정보를 보려면 다음과 같은 명령어를 입력해주세요.

firewall-cmd --zone=public --list-all

public zone에 대한 설정 정보는 /etc/firewalld/zones/public.xml 경로에서 확인할 수 있습니다.

다른 Zone으로 변경하기

firewall-cmd --set-default-zone=ZoneName

public zone에 9000번 포트 허용 옵션 삭제

firewall-cmd --permanent --zone=public --remove-port=9000/tcp

public zone에 mysql 서비스 허용 옵션 삭제

firewall-cmd --permanent --zone=public --remove-service=mysql

public zone의 특정 IP대역에서 mysql 접근을 허용

firewall-cmd --permanent --zone=public --add-source=192.168.1.0/24 --add-service=mysql

public zone의 mysql에 접근하는 특정 ip 차단

firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=220.92.5.144 service name=mysql reject"

4. 유용한 명령어

firewall-cmd --state
방화벽 상태 확인

firewall-cmd --get-zones
모든 Zone 출력

firewall-cmd --get-default-zone
현재 적용된 Zone 출력

firewall-cmd --list-all
사용 가능한 서비스/포트 출력

firewall-cmd --reload
방화벽 리로드

참조 : https://www.lesstif.com/pages/viewpage.action?pageId=22053128

도움이 되셨다면 공감 한번씩 눌러주세요.

1. Yona란?

Git을 기반으로 소스를 관리하고, 팀 프로젝트를 효율적으로 진행하기 위해 개발된 오픈소스 라이브러리입니다.

2. Yona의 기능

  • 이슈트래커
  • 게시판
  • 코드 저장소(Git)
  • Pull Request
  • 코드 리뷰
  • 그룹
  • 메일 연동

3. JAVA 1.8 설치

JAVA 설치
2020/02/19 - [IT/Linux] - [Linux] CentOS 7에 OpenJDK 1.8 설치

4. MariaDB 설치

MariaDB 설치
2020/02/24 - [IT/Linux] - [Linux] CentOS7에 MariaDB 설치하기

mariaDB가 설치되었다면 root계정으로 로그인합니다.

# mysql -u root -p
Enter password: 비밀번호입력

yona 전용 계정과 데이터베이스를 생성해주고 yona 계정에 yona DB에 대한 모든 권한을 부여합니다.

MYSQL > create user 'yona 계정명'@'localhost' identified by '비밀번호'; 
MYSQL > create database yona
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_bin;
MYSQL > grant all on yona.* to 'yona 계정명'@'localhost';

5. Yona 설치 및 unzip

# wget https://github.com/yona-projects/yona/releases/download/v1.10.1-beta/yona-v1.10.1-mariadb-10.2-bin.zip
# unzip yona-v1.10.1-mariadb-10.2-bin.zip

6. Yona 설정 및 실행

yona를 실행하기 전에 application.conf에 mariadb의 yona 계정명과 패스워드를 입력해야합니다.

# vi yona-1.10.1/conf/application.conf
...
# MariaDB
db.default.driver=org.mariadb.jdbc.Driver
db.default.url="jdbc:mariadb://127.0.0.1:3306/yona?useServerPrepStmts=true"
db.default.user=yona
db.default.password="yona패스워드"
...
yona-1.10.1/bin/yona

yona를 실행시켜줍니다.

7. 방화벽 해제

yona 포트를 따로 지정해주지 않으면 9000으로 설정됩니다. 해당 포트에 대한 방화벽을 열어줍니다.

# firewall-cmd --permanent --add-port=9000/tcp
# firewall-cmd --reload

8. yona 접속

IP:9000

ex : http://localhost:9000/

9. SSH를 끊어도 yona가 종료되지 않게 하기

# yona-1.10.1/bin/yona &
# disown
# exit

참조 : https://ignorabilis.tistory.com/4

+ Recent posts