rsync 설정은 문제가 없는 것 같은데 Permission denied가 발생한다면 selinux  가 enable 된 상태이다.

selinux 를  disabled로 변경하면 문제가 해결되지만 보안상 selinux를 enable해 둔 상태로 rsync를 가능하게 해보자.

 

아래와 같은 Permission denied 에러가 발생하고 있다.

ellord@DS1TTC ~ % rsync -azPog --delete root@218.146.255.53::home/ /Volumes/4T/backup/53home    
receiving file list ... 
rsync: opendir "/." (in home) failed: Permission denied (13)
1 file to consider
IO error encountered -- skipping file deletion
                    
sent 16 bytes  received 129 bytes  290.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/66382bca-8bca-11ec-aade-6613bcf0e2ee/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(1404) [generator=2.6.9]

 

 

1. selinux 환경 확인

[root@localhost /]# getenforce
Enforcing
[root@localhost /]# 
[root@localhost /]# getsebool -a | grep rsync
postgresql_can_rsync --> off
rsync_anon_write --> off
rsync_client --> off
rsync_export_all_ro --> off
rsync_full_access --> off
[root@localhost /]# set

selinux가 enforcing상태이고, rsync관련은 전부 off로 되어 있다.

 

rsync_client : 클아이언트 접속 허용

rsync_export_all_ro : 읽기 모드 허용

rsync_full_access  : 읽고쓰는 모든 기능 허용

 

이 부분을 on으로 변경해 보자.

 

[root@localhost /]# setsebool -P rsync_client 1
[root@localhost /]# getsebool -a | grep rsync
postgresql_can_rsync --> off
rsync_anon_write --> off
rsync_client --> on
rsync_export_all_ro --> off
rsync_full_access --> off

 

 

[root@localhost /]# setsebool -P rsync_export_all_ro 1
[root@localhost /]# getsebool -a | grep rsync
postgresql_can_rsync --> off
rsync_anon_write --> off
rsync_client --> on
rsync_export_all_ro --> on
rsync_full_access --> off
[root@localhost /]#

 

 

[root@localhost /]# setsebool -P rsync_full_access 1
[root@localhost /]# getsebool -a | grep rsync
postgresql_can_rsync --> off
rsync_anon_write --> off
rsync_client --> on
rsync_export_all_ro --> on
rsync_full_access --> on
[root@localhost /]#

 

 

2. rsync를 다시 시도해 본다.

 

ellord@DS1TTC ~ % rsync -azPog --delete root@서버아이피::home/ /Volumes/4T/backup
receiving file list ... 
526 files to consider
ds1ttc/             
ds1ttc/.bash_logout
          18 100%   17.58kB/s    0:00:00 (xfer#1, to-check=523/526)
ds1ttc/.bash_profile
         193 100%  188.48kB/s    0:00:00 (xfer#2, to-check=522/526)
ds1ttc/.bashrc
         231 100%  112.79kB/s    0:00:00 (xfer#3, to-check=521/526)

 

정상적으로 된다.

 

 

블로그 이미지

엘로드넷

,

리눅스 swapfile 추가

Linux 2020. 9. 1. 18:52

스왑파티션 확인

 

[root@localhost /]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                              	partition	16318460	0	-2

 

스왑파일을 추가로 만든다.

 

[root@localhost /]# fallocate -l 1GB /swapfile

swapon: /swapfile: read swap header failed: Invalid argument 와 같은 에러 방지를 위해 다음과 같이 해준다.

 

[root@localhost /]# sudo dd if=/dev/zero of=/swapfile count=1024 bs=1MiB

 

스왑파일 퍼미션 변경

[root@localhost /]# chmod 600 /swapfile

 

스왑파일로 변경

[root@localhost /]# mkswap /swapfile 
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=ed717676-8540-48c3-8034-94d0dea8e5b5

 

스왑파일 적용

[root@localhost /]# swapon /swapfile

 

스왑메모리 확인

[root@localhost /]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                              	partition	16318460	0	-2
/swapfile                              	file	1048572	0	-3
[root@localhost /]# 

/swapfile 이 추가되어 있다.

 

 

부팅시 적용

[root@localhost /]# vi /etc/fstab

 

하단에 아래 항목 추가

/swapfile swap swap defaults 0 0


#
# /etc/fstab
# Created by anaconda on Mon Aug 31 16:53:23 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=7d8e34c6-1c5e-43ed-9bb2-296a8e3be09a /boot                   xfs     defaults        0 0
UUID=C6F0-811D          /boot/efi               vfat    umask=0077,shortname=winnt 0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/swapfile		swap			swap	defaults	0 0

 

스왑을 적용한다.

[root@localhost /]# swapon -a

 

 

블로그 이미지

엘로드넷

,

1. 오라클 사이트에서 다운로드

 

http://www.oracle.com/java/technologies/javase7-archive-downloads.html 

 

jdk-7u80-linux-x64.tar.gz 를 다운받는다.

 

 

2. 서버에 업로드

 

3. 압축을 푼다.

 

[root@localhost ellord]# tar xvfz jdk-7u80-linux-x64.tar.gz 

 

 

4. 압축이 풀린 폴더를 /usr/local 로 이동시켜 준다.

 

[root@localhost ellord]# mv jdk1.7.0_80/ /usr/local/

 

5. 심볼릭 링크를 만든다. java여러 버전을 관리하기 위해서.

 

[root@localhost local]# ln -s jdk1.7.0_80/ ./java

아래와 같이 java 심볼릭 링크가 생성되었다.

 

[root@localhost local]# ll
total 0
drwxr-xr-x. 2 root root   6 Apr 11  2018 bin
drwxr-xr-x. 2 root root   6 Apr 11  2018 etc
drwxr-xr-x. 2 root root   6 Apr 11  2018 games
drwxr-xr-x. 2 root root   6 Apr 11  2018 include
lrwxrwxrwx. 1 root root  12 Sep  1 15:48 java -> jdk1.7.0_80/
drwxr-xr-x. 8   10  143 233 Apr 11  2015 jdk1.7.0_80
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib64
drwxr-xr-x. 2 root root   6 Apr 11  2018 libexec
drwxr-xr-x. 2 root root   6 Apr 11  2018 sbin
drwxr-xr-x. 5 root root  49 Aug 31 16:53 share
drwxr-xr-x. 2 root root   6 Apr 11  2018 src
[root@localhost local]# 

 

6. 현재 자바 버전을 확인해 본다.

 

[root@localhost local]# java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
[root@localhost local]# 

openjdk 1.8이 설치되어 있다.

 

방금 설치한 jdk1.7로 변경하려고 한다.

 

7. alternatives 심볼릭 링크 생성

[root@localhost local]# alternatives --install /usr/bin/java java /usr/local/java/bin/java 2
[root@localhost local]# alternatives --install /usr/bin/java javac /usr/local/java/bin/javac 2
[root@localhost local]# alternatives --install /usr/bin/java javaws /usr/local/java/bin/javaws 2
[root@localhost local]# 
[root@localhost local]# alternatives --set java /usr/local/java/bin/java
[root@localhost local]# alternatives --set javac /usr/local/java/bin/javac
[root@localhost local]# alternatives --set javaws /usr/local/java/bin/javaws
[root@localhost local]# 

 

8. 심볼릭 링크 확인

[root@localhost local]# alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*  1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64/jre/bin/java)
 + 2           /usr/local/java/bin/java

Enter to keep the current selection[+], or type selection number: 2

2번에 등록된 것 확인할 수 있다. 

2를 입력하고 엔터.

 

확인해 본다.

[root@localhost local]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[root@localhost local]# 

변경이 잘 되었다.

 

 

 

 

 

 

 

 

 

 

 

 

 

블로그 이미지

엘로드넷

,

같은 서버내의 서로 다른 계정끼리 폴더를 공유하는 방법이다.

 

 

공유할 폴더 : /home/testuser/공유폴더

공유할 사용자 : testuser1, testuser2

 

이후부터는 root로 작업한다.

 

 

1. 그룹을 만든다

 

# groupadd mygroup

 

2. 새로 만든 그룹에 속할 계정을 지정해 준다.(계정은 미리 만들어져 있어야 함)

 

# usermod -a -G mygroup testuser1
# usermod -a -G mygroup testuser2

 

-a : 그룹에 추가

-G : 다음에 그룹명 지정

mygroup : 그룹명

testuser1, testuser2 : 사용자계정

 

 

3. 그룹을 확인해 본다.

# cat /etc/group
mygroup:x:1011:testuser1,testuser2

group 파일의 하단에 위와 같이 그룹이 지정된 것을 확인할 수 있다.

 

 

 

4. 공유폴더의 그룹명을 변경해 준다.

 

# chgrp -R mygroup /home/testuser/공유폴더
# chmod -R 2775 /home/testuser/공유폴더

 

2 : 새롭게 생성되는 하위 폴더에 같은 그룹을 지정해주는 옵션

7 : 소유자에게 rwx(4+2+1) 권한 주기

7 : 그룹에게 rwx(4+2+1) 권한 주기

5 : 타인에게 rx(4+1) 권한 주기

 

 

5. 새로운 사용자를 생성하면서 이 그룹에 추가하려면 아래와 같이 하면 된다.

# useradd -m -c "Test User3" -s/bin/bash -G mygroup testuser3

 

공유설정은 끝났다.

 

 

6.

testuser1 계정으로 로그인해서 심볼릭링크를 걸어보자.

 

# ln -s /home/testuser/공유폴더 ./공유폴더

 

공유폴더 링크가 생성되었다.

ftp로 접속을 하면 폴더가 보인다.

 

그런데 접근이 안된다.

 

vsftpd설정에서 chroot_list 옵션을 사용중이어서 상위폴더로 접근이 금지되어 있기 때문이다.

 

 

7. 다음과 같이 해보자

 

심볼릭링크를 삭제한다.

 

그리고 아래와 같이 폴더를 생성한다.

 

# mkdir 공유폴더

 

아래와 같이 원본공유 폴더를 새로 생성한 공유폴더에 마운트 한다.

 

# mount --bind /home/testuser/공유폴더 ./공유폴더

 

 

원본 공유폴더에 777권한을 준다.

# chmod 777 /home/testuser/공유폴더

 

테스트를 해본다.

testuser1, testuser2 등 각기 다른 다른 사용자로 접속하여 파일을 생성하고 삭제해 본다.

정상적으로 작동한다.

 

 

 

*추가

 

재부팅하면 mount 가 해제되므로 다시 설정해야 함.

해당 폴더에 쓰기가 안된다면 selinux 를 아래와 같이 변경

 

# setsebool -P allow_ftpd_full_access 1

 

 

끝.

 

 

 

 

'Linux' 카테고리의 다른 글

리눅스 swapfile 추가  (0) 2020.09.01
centos7 jdk1.7 설치하기, 자바버전선택  (0) 2020.09.01
mariadb 설치 후 centos8 시작프로그램 등록  (0) 2020.05.02
rsync @ERROR: chroot failed  (0) 2019.01.08
CentOS7 apache 2.4 mod_deflate  (0) 2017.11.26
블로그 이미지

엘로드넷

,

시작프로그램 내역확인. 

[root@localhost ~]# chkconfig --list

알림: 이 출력 결과에서는 SysV 서비스만을 보여주며 기존의 systemd 서비스는 
포함되어 있지 않습니다. SysV 설정 데이터는 기존의 systemd  설정에 의해 
덮어쓰여질 수 있습니다. 

      'systemctl list-unit-files'를 사용하여 systemd 서비스를 나열하실 수 있습니다.
       특정 대상에 활성화된 서비스를 확인하려면
       'systemctl list-dependencies [target]'을 사용하십시오.

[root@localhost ~]# 

안된다.

 

systemctl 명령어를 사용하라고 한다.

[root@localhost ~]# systemctl list-unit-files | grep mariadb
mariadb.service                            disabled 
mariadb@.service                           disabled 
[root@localhost ~]# 

 

 

시작프로그램 등록

[root@localhost ~]# systemctl enable mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
[root@localhost ~]# 

 

등록확인

 

[root@localhost ~]# systemctl list-unit-files | grep mariadb
mariadb.service                            enabled  
mariadb@.service                           disabled 
[root@localhost ~]# 

 

시작프로그램에서 해제할 때엔

 

systemctl disable mariadb 로 하면 된다.

 

 

 

끝.

'Linux' 카테고리의 다른 글

centos7 jdk1.7 설치하기, 자바버전선택  (0) 2020.09.01
CentOS 리눅스 계정간 폴더 공유하기  (0) 2020.08.24
rsync @ERROR: chroot failed  (0) 2019.01.08
CentOS7 apache 2.4 mod_deflate  (0) 2017.11.26
CentOS7 sshd 포트 변경하기  (0) 2017.10.29
블로그 이미지

엘로드넷

,

잘 되던  rsync 가 아래와 같은 에러를 남기로 안될 때.


rsync @ERROR: chroot failed





1. SELinux 확인


9f57a1d448ffbd0a827ef4a2104344d8_1545056212_757.png
 

enabled 로 되어 있다.


이것을  disabled 로 변경하면 되지만 보안상 좋지 않으므로.


selinux 에 rsync 를 허용하는 방향으로 변경하고자 한다.



2. SELInux에서 관리하는 것들은 아래 명령어로 확인가능하다.


9f57a1d448ffbd0a827ef4a2104344d8_1545056534_8227.png
 

많은 것들이 표시되고 대부분 off로 되어 있다.


이중에서 grep키워드를 통해 rsync와 관련된 것들만 확인해 보자.


9f57a1d448ffbd0a827ef4a2104344d8_1545056631_7385.png
 

모두 off로 되어 있다.


이중에서 파일이나 디렉토리를 read only 상태로 접근을 허용하기 위해서는 rsync_export_all_ro 를 on  으로 변경해 줘야 한다.


아래와 같이 입력한다.


9f57a1d448ffbd0a827ef4a2104344d8_1545056833_0302.png
 

다시 getsebool 을 통해 rsync 상태를 확인해 본다.


9f57a1d448ffbd0a827ef4a2104344d8_1545056873_4517.png
 

rsync_export_all_ro 가 on 으로 변경되어 있다.



다시 rsync 명령어를 해보면 잘 될 것이다.



끝.



블로그 이미지

엘로드넷

,

CentOS7 에서 아파치 yum 설치시 mod_deflate 가 설치되어 있다.

아래와 같이 확인된다.


[root@localhost conf.d]# sudo httpd -M | grep deflate

 deflate_module (shared)



1. 설정파일을 아래와 같이 만든다.


[root@localhost conf.d]# vi /etc/httpd/conf.d/mod_deflate.conf


<filesMatch "\.(js|html|txt|css)$">

        SetOutputFilter DEFLATE

</filesMatch>

DeflateCompressionLevel 7

DeflateMemLevel 8

DeflateWindowSize 10

~                     



DeflateCompressionLevel : 1 ~ 9 (압축강도; 클수록 압축강도 높음)

DeflateMemLevel : 1 ~9 (압축시 메모리 사용수준)

DeflateWindowSize : 1 ~ 15




2. 아파치를 재시작한다.


[root@localhost conf.d]# systemctl restart httpd




3. 압축이 되는지 확인


서버에서) 파일 사이즈 확인 


[root@localhost js]# du -hs jquery-1.11.3.min.js 

96K jquery-1.11.3.min.js


jquery-1.11.3.min.js 파일이 96K 로 나온다.



wget으로 다운받아서 사이즈 확인

ELLORDNET-MPR:~ ellord$ wget --header="Accept-Encoding: gzip" http://www.yulha.in/js/jquery-1.11.3.min.js

--2017-11-26 21:42:20--  http://www.yulha.in/js/jquery-1.11.3.min.js

Resolving www.yulha.in (www.yulha.in)... 218.146.255.56

Connecting to www.yulha.in (www.yulha.in)|218.146.255.56|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: unspecified [application/javascript]

Saving to: ‘jquery-1.11.3.min.js’


    [ <=>                                                                                                      ] 42,385      --.-K/s   in 0.006s  


2017-11-26 21:42:20 (7.07 MB/s) - ‘jquery-1.11.3.min.js’ saved [42385]



ELLORDNET-MPR:~ ellord$ du -hs jquery-1.11.3.min.js 

 44K jquery-1.11.3.min.js



44K 로 나온다.



끝.









'Linux' 카테고리의 다른 글

mariadb 설치 후 centos8 시작프로그램 등록  (0) 2020.05.02
rsync @ERROR: chroot failed  (0) 2019.01.08
CentOS7 sshd 포트 변경하기  (0) 2017.10.29
아파치 OpenSSL 사설인증서 적용  (0) 2016.12.06
iconv euckr to utf8 파일명  (0) 2016.12.06
블로그 이미지

엘로드넷

,

root로 작업



1. semanage 설치


[root@localhost ellord]# yum install policycoreutils-python




2. 현재 사용중인 sshd 포트 확인 (당연히 22가 나온다)

[root@localhost ellord]# semanage port -l | grep ssh

ssh_port_t                     tcp       22




3. 22233 을 추가하려고 한다.



[root@localhost ellord]# semanage port -a -t ssh_port_t -p tcp 22233





4. 추가되었는지 다시 확인해 본다.


[root@localhost ellord]# semanage port -l | grep ssh

ssh_port_t                     tcp      22233, 22



22233이 추가되었다.



5. sshd 데몬에도 추가한다.


root@localhost ellord]# vi /etc/ssh/sshd_config 



[root@localhost ellord]# vi /etc/ssh/sshd_config 

#       $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $


# This is the sshd server system-wide configuration file.  See

# sshd_config(5) for more information.


# This sshd was compiled with PATH=/usr/local/bin:/usr/bin


# The strategy used for options in the default sshd_config shipped with

# OpenSSH is to specify options with their default value where

# possible, but leave them commented.  Uncommented options override the

# default value.


# If you want to change the port on a SELinux system, you have to tell

# SELinux about this change.

# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER

#

Port 22233


주석처리된 Port 22 에 주석을 풀고 22233으로 변경해 준다.



5. sshd 를 재시작한다.


[root@localhost ellord]# systemctl restart sshd



6. 접속해 본다.


ELLORDNET-MPR:~ ellord$ ssh 서버아이피 -p 22233




끝.

'Linux' 카테고리의 다른 글

rsync @ERROR: chroot failed  (0) 2019.01.08
CentOS7 apache 2.4 mod_deflate  (0) 2017.11.26
아파치 OpenSSL 사설인증서 적용  (0) 2016.12.06
iconv euckr to utf8 파일명  (0) 2016.12.06
텍스트파일 텍스트 치환  (0) 2016.12.06
블로그 이미지

엘로드넷

,
openssl 사설인증서

1. 키파일 생성
openssl genrsa -des3 -out server.key 1024


2. csr파일 생성
openssl req -new -key server.key -out server.csr


Country Name (2 letter code) [AU]:KR

State or Province Name (full name) [Some-State]:시도

Locality Name (eg, city) []:구군
Organization Name (eg, company) [Internet Widgits Pty Ltd]:회사명

Organizational Unit Name (eg, section) []:조직명

Common Name (eg, YOUR name) []:인증서에적용할사이트명

Email Address []:담당이메일주소
A challenge password []:

An optional company name []:

A challenge password[]는 공백으로 넘어감


3. crt 파일생성
openssl x509 -req -days 9999 -in server.csr -signkey server.key -out server.crt

9999는 인증서 만료날짜


4. 서버에서 패스워드 제거. 제거하지 않으면 웹서버 시작시마다 비밀번호를 입력해 줘야 한다.

cp server.key server.tmp
openssl rsa -in server.tmp -out server.key


인증서 생성이 완료되었다.

아파치에 적용하자.


httpd-ssl.conf 편집.


Listen 443
NameVirtualHost 127.0.0.0:443





DocumentRoot /home/mysite
ServerName www.mysite.com
SSLEngine on
SSLCertificateFile server.crt
SSLCertificateKeyFile server.key


 






 

'Linux' 카테고리의 다른 글

CentOS7 apache 2.4 mod_deflate  (0) 2017.11.26
CentOS7 sshd 포트 변경하기  (0) 2017.10.29
iconv euckr to utf8 파일명  (0) 2016.12.06
텍스트파일 텍스트 치환  (0) 2016.12.06
리눅스 버전 확인 Linux version check  (0) 2016.12.05
블로그 이미지

엘로드넷

,

특정 파일 열지 않고 인코딩 변환


#iconv -f 원래인코딩 -t 변경할인코딩 파일명




euckr 에서 utf8로 변경할 경우 : 


#iconv -f cp949 -t utf8 파일명



'Linux' 카테고리의 다른 글

CentOS7 sshd 포트 변경하기  (0) 2017.10.29
아파치 OpenSSL 사설인증서 적용  (0) 2016.12.06
텍스트파일 텍스트 치환  (0) 2016.12.06
리눅스 버전 확인 Linux version check  (0) 2016.12.05
Centos 배포판 구분  (0) 2016.10.21
블로그 이미지

엘로드넷

,