출처 :: http://hoyatic.tistory.com/136

리눅스 user에 관련된 것을 변경하기

Linux 2009/07/23 20:23

user에 관련된것을 바꿔 봅니다.
# grep test /etc/passwd --패스워드 정보
# grep test /etc/shadow -- 쉐도우 정보
# grep test /etc/group -- 그룹 정보
 


# grep test /etc/passwd 에서 나타난 정보를 보면
UID는 920 , GID는 500 , 코맨트는 user test , home디렉토리는 /usr/test 이며 그리고 사용하는 기본쉘은 bash 쉘 이라는 것을 알수 있습니다.

위의 값들을 바꾸어 보겠습니다.
1) 코멘트 바꾸기
# usermod -c change test
2) 홈 디렉토리 바꾸기
# usermod -d /usr/changetest test
3) UID 바꾸기
# usermod -u 500 test
4) 쉘 바꾸기
# usrmod -s /bin/csh test

 

 

 

 

 

위의 그림처럼 바뀐 것을 확인 하실 수 있습니다.

5) 계정 종료일 설정
# usermod -e 2009-12-31 test
계정 종료일은 shadow에서 확인합니다.

 

'운영체제 > LINUX' 카테고리의 다른 글

리눅스 호스팅 IP차단 방법  (0) 2012.11.27
php.ini httpd  (0) 2012.11.27
VI 명령어 모음  (0) 2012.11.27
find 명령어..  (0) 2012.11.27
log file 등 비우기  (0) 2012.11.27

출처 :: http://blog.cafe24.com/978?category=4

 

● 리눅스 호스팅 IP차단 방법

웹FTP에 접속해 www 안에 .htaccess 파일을 생성해야 합니다. 방법은 아래와 같습니다.
참고로 이 방법은 서버 내 .htaccess 파일이 없을 경우를 가정해 드리는 설명입니다.

 

01.
메모장을 실행
하세요

 

02.
메모장에 아래 내용을 넣으세요.

SetEnvIfNoCase remote_addr 123.45.123.45 go_out
Order allow,deny
Allow from all
Deny from env=go_out

 

※ 주의해야 할 점
차단할 IP가 123.45.123.45일 경우 위와 같은 구문을 작성합니다.

 

03.
메모장에 적은 내용을 파일로 저장합니다. 이때 반드시 파일 이름은 글자 그대로 [.htaccess]라고 지정하셔야 해요!!! 아래와 같이 말이죠 ^^


사용자 삽입 이미지

04.
바탕화면에 만들어진 .htaccess 파일을 www 폴더로 업로드 하시면 모든 게 끝난답니다.


사용자 삽입 이미지

 

만약 123.45.123.1 ~ 123.45.123.255 를 막으려면
123.45.123.45 부분을 아래와 같이 123.45.123. 라고 입력하면 됩니다.

SetEnvIfNoCase remote_addr 123.45.123. go_out
Order allow,deny
Allow from all
Deny from env=go_out


 

123.45.123.1 123.45.123.2 IP를 추가로 막을 때는

SetEnvIfNoCase remote_addr 123.45.123.1 go_out
SetEnvIfNoCase remote_addr 123.45.123.2 go_out
Order allow,deny
Allow from all
Deny from env=go_out

이와 같이 추가해주시면 됩니다.

 

 

'운영체제 > LINUX' 카테고리의 다른 글

리눅스 user에 관련된 것을 변경하기  (0) 2012.11.27
php.ini httpd  (0) 2012.11.27
VI 명령어 모음  (0) 2012.11.27
find 명령어..  (0) 2012.11.27
log file 등 비우기  (0) 2012.11.27

vi /usr/local/Zend/etc/php.ini


/usr/local/apache/bin/apachectl stop

/usr/local/apache/bin/apachectl startssl

->

/usr/local/apache/bin/apachectl restart


vi /usr/local/apache/conf/httpd.conf

 

'운영체제 > LINUX' 카테고리의 다른 글

리눅스 user에 관련된 것을 변경하기  (0) 2012.11.27
리눅스 호스팅 IP차단 방법  (0) 2012.11.27
VI 명령어 모음  (0) 2012.11.27
find 명령어..  (0) 2012.11.27
log file 등 비우기  (0) 2012.11.27

출처 : http://www.bomdol.com/rgboard/view.php?&bbs_id=study_server&page=7&doc_num=24

VI 사용하기
VI 명령어 모드 3가지
1) ESC 모드
2) 편집모드
3) ex모드

ESC 모드에서 사용되는 명령어
^ : 현재줄의 맨앞
G : 화일의 맨끝
0 : 현재줄의 맨앞
$ : 현재줄의 맨뒤
% : 짝을 이루는 기호 확인하기
w : 다음 단어
b : 이전 단어
e : 현재 단어의 끝 글자

커서 움직이기
글자 단위 이동
k : 위쪽
j : 아래쪽
h : 왼쪽
l : 오른쪽


줄 단위 이동

^ : 줄의 맨앞
0 : 줄의 맨앞
$ : 줄의 맨뒤
% : 짝을 이루는 기호 확인

+ : 다음줄의 첫번째 글자
- : 윗줄의 첫번째 글자
n| : 현재줄의 n 번째 열
H : 화면상에 처음줄
nH : 화면상의 처음줄로부터 n 줄 밑으로
M : 화면상의 중간줄
L : 화면상의 마지막줄
nL : 화면상의 마지막줄로부터 n줄 위로

G : 맨 마지막줄
nG : n 번째줄
gg : 맨 마지막줄
ngg : n 번째줄
:n : n 번째줄

단어 단위 이동
w : 한단어 오른쪽
b : 한단어 왼쪽
e : 현재 단어의 끝으로 이동
E : 현재 단어의 끝으로 이동 (영문만)
) : 다음 문장의 시작
( : 이전 문장의 시작
} : 다음 문단의 시작
{ : 이전 문단의 시작
]] : 다음 섹션의 시작
[[ : 이전 섹션의 시작

화면단위 이동
z 커서의 위치와 함께, 화면상의 맨위
nz n번 라인을 화면상의 맨위
z. 커서의 위치와 함께, 화면상의 중간
z- 커서의 위치와 함께, 화면상의 맨아래
Control - F(orward) 한화면 밑으로 이동.
Control - B(ackward) 한화면 위로 이동.
Control - D(own) 반쪽화면 밑으로 이동.
Control - U(pon) 반쪽화면 위로 이동.
Control - E 커서는 현재위치 그대로 화면만 한줄씩
위로 이동
Control - Y 커서는 현재위치 그대로 화면만 한줄씩
아래로 이동
Control - G 현재 편집문서의 정보 보여주기
Control - L 글자가 깨졌을 경우 화면 재표시
(=Control - R)

편집하기
복사/ 붙이기/ 합치기
y 복사하기
yy 한줄복사 (=Y)
nyy n줄 복사
yw 한단어 복사
y2w 두단어 복사
yG 문서의 끝까지 복사
p 붙이기
np 아래로(오른쪽으로) n번 붙이기
P 위로(왼쪽으로) 붙이기
nP 위로(왼쪽으로) n번 붙이기
J 두줄 합치기
nJ n줄 합치기

지우기/바꾸기/되살리기
d 지우기
dd 한줄지우기
ndd n줄지우기
dw 한단어 지우기
dG 문서 끝까지 지우기
D 그줄 끝까지 지우기 (=d$ 와 동일)
c 바꾸기
cc 한줄바꾸기
ncc 여러줄 바꾸기 (n 은 임의의숫자)
cw 한단어 바꾸기
ce 한단어 바꾸기 (공백 제외)
C 그줄 끝까지 바꾸기 (=c$ 와 동일)
r 한글자 바꾸기
R 바꾸면서 덮어 쓰기
s 한글자 지우고 insert 모드로 (=cl )
S 한줄지우고 insert 모드로 (=cc)
~ 대문자 / 소문자 바꾸기 (영문만)
u 되살리기

찾기
/ 찾기반복 - 위에서 아래로 (=n)
? 찾기반복 - 아래에서 위로(=N)
fn 현재줄에서 한 개의 n문자 찾기
Fn 현재줄에서 반대방향으로 한 개의 n문자 찾기
tn 현재줄에서 n문자를 찾아서 앞에 커서놓기
Tn 현재줄에서 반대방향으로 n문자를 찾아서 뒤에 커서놓기
; 현재줄에서 한글자 찾기반복
' 현재줄에서 한글자 찾기반복 (반대방향으로)

편집모드 지정하기
i 현재커서위치
I 현재커서가 위치한 줄의 맨처음에
a 현재커서위치 바로 다음에
A 현재커서가 위치한 줄의 맨끝에
o 현재커서위치 바로 아래줄에
O 현재커서위치 바로 윗줄에

ex 명령어
:n,n1 co n2 n줄 부터 n1줄 까지 n2줄 이후로 복사.
:n,n1 d n1줄 부터 n2줄 까지 삭제.
:.,$ d 현재줄부터 끝까지 지우기


g 옵션 붙이기
:g/word 화일전체에서 마지막으로 word이 쓰여진 줄로
가기
:g/word/ p 화일전체에서 word이 있는줄 보여주기
:g/word/ nu 화일전체에서 word이 있는줄을 번호와 함께 보
여주기


g 옵션과 바꾸기
,n s/old/new/g rn 줄부터 n줄까지 old라는 문자를 new문자로
바꾸면서 확인하기. :%
s/old/new/g 처음줄부터 마지막줄까지 old라는 문자를
new문자로 바꾸기

읽기

:r filename(=ex /usr/local/test) 현재위치에 filename
(=ex /usr/local/test)
읽어들이기

다중편집하기
형식 vi file1 file2 file3
:args 편집중인 화일목록 보여주기
:n 다음 화일로 넘어가기
:prev 이전화일로 돌아가기


새로운 화일 편집하기
:e file_name 새로운 file_name 편집하기.
:e! 현재의 편집중인 내용을 무시하고 가장
최근에 편집한 내용을 다시편집하기



저장 및 종료하기
:w 저장하기 (write)
:q 종료하기 (quit)
:wq 저장하고 종료하기
:x 저장하고 종료하기 (:wq 와 동일)
:w! 강제로 저장하기
(read-only 로 열었을경우)
:wq! 강제로 저장하고 종료하기
:q! 편집한 내용을 저장하지 않고 종료하기
:w fillename 새로운 파일이름으로 저장하기
:w %.new 현재화일 이름에 .new 라는 새로운
확장자로 저장 

'운영체제 > LINUX' 카테고리의 다른 글

리눅스 호스팅 IP차단 방법  (0) 2012.11.27
php.ini httpd  (0) 2012.11.27
find 명령어..  (0) 2012.11.27
log file 등 비우기  (0) 2012.11.27
HTPASSWD를 이용한 홈페이지에 패스워드 걸기(User Authorization)  (0) 2012.11.05

find / -size +2000M -exec ls -lh {} \;

특정 용량 이상의 파일 검색

2G 이상을 검색할때...

------------------------------------------------------------------------

출처 :: http://blog.naver.com/youngrimi?Redirect=Log&logNo=50112013269

find

윈도우의 검색과 비슷한 기능으로 단순히 파일을 찾는 역할만 하는 것이 아니라 찾은 파일에 대하여 특정 작업까지도 할 수 있다.

파일을 찾을때도 많은 옵션으로 다양한 방법이 제공된다

사용형식

find [대상경로] [OPTIONS] [ACTIONS]

대상경로(PATH)

경로지정방법

검색대성범위

지정 예

.

현재 디렉토리 이하

.

/

시스템전체

/

~ID

계정사용자의 홈디렉토리이하

~user1

/경로

/ 경로 디렉토리이하

/etc , /usr/local

검색옵션(OPTION)

검색옵션

의 미

-empty 비어있는 파일 (단, 일반파일 또는 일반 디렉토리에 한함)
-uid n 지정된 n 값의 UID를 갖는 파일
-gid n 지정된 n 값의 GID를 갖는 파일
-group 그룹명 지정한 그룹명에 소속된 파일
-name 지정된 형식의 패턴을 가지는 파일
-newer 파일 지정한 '파일' 보다 더 최근에 변경된 적이 있는 파일
-used n 파일이 변경된 이후 최근 n일 이후에 액세스된 적이 있는 파일
-user uname 지정한 uname의 소유로 된 모든 파일. (UID로 지정가능)
-admin n 최근 n 분 이전에 엑세스(access) 된 적이 있는 파일
-anewer 파일 지정한 '파일' 보다 더 최근에 엑세스 된 적이 있는 파일
-atime n 최근 n*24시간 전에 엑세스 된 적이 있는 파일
-mmin n 최근 n 분 이전에 변경된 적이 있는 파일
-mtime n 최근 n*24시간 이전에 변경된 적이 있는 파일
-executable 실행 가능한 파일
-readable 읽기 가능한 파일
-writable 쓰기 가능한 파일
-fstype type 지정한 파일시스템타입(type)에 존재하는 파일
-nogroup 소속그룹이 존재하지 않는 파일
-nouser 소속 사용자(ID)가 존재하지 않는 파일
-path 패턴 파일명이 '패턴'에 매칭되는 파일
-perm 모드 '모드'에서 지정된 퍼미션과 일치하는 퍼미션을 가진 파일만 해당됨. 주의할 것은 정확하게 일치해야 한다는 점. 예를 들어 '-perm g=w'로 지정했을 경우에는 퍼미션이 0020인 것만 해당됨.
-perm -mode '모드'에서 지정된 퍼미션을 가진 모든 파일. 예를 들어 '-perm -g=w'로 지정되었다면 그룹소유자에 w 퍼미션(쓰기권한)이 있는 모든 파일이 이에 해당됨.
-regex 패턴 '패턴' 에서 지정한 정규표현식에 매칭되는 파일
-size n[cwbkMG] 지정된 n 단위의 디스크공간을 사용하는 파일. 여기에는 b(디폴트), c, w, k, M, G 등이 올수 있음
-type 타입 지정한 파일타입에 해당하는 파일. b, c, d, p, f, l, s등이 있음.

+n 은 n 보다 큰 값을 의미하고, -n 은 n 값보다 작은 값을 의마하며, n은 정확하게 n 값만을 의미한다.

검색 후 수행작업(ACTION)

ACTION

수 행 내 용

-delete 검색된 파일들을 삭제
-exec command ; 지정한 command 를 실행
-exec command {} + 검색된 파일들을 차례대로 매칭하면서 지정된 command를 수행
-ls 'ls - dils'를 수행
-ok command ; -exec와 같지만 실행하기 전에 먼저 사용자에게 표준입력으로 수행할 command를 입력 받는다. 만약 입력이 없다면 지정된 command를 수행한다.
-print 검색된 파일들에 대하여 전체파일 경로로 파일리스트를 표준출력으로 출력한다.
-printf format 검색된 파일들에 대하여 지정된 format 형식으로 표준출력으로 출력

연산자(OPERATORS)

연산자

의 미

( ) 괄호 안의 연산이 먼저 행해짐
! expr expr 이 거짓일 때 참. 참일 때 거짓이 됨.
-not expr 위의 '! expr' 과 동일함. (POSIX 호환용)
expr1 expr2 AND 의 의미. expr1의 거짓일 때에는 expr2는 평가되지 않음
expr1 -a expr2 'expr1 expr2' 와 같음
expr1 -and expr2 'expr1 expr2' 와 같음 (POSIX 호환용)
expr1 -o expr2 OR의 의미. expr1이 참일 경우 expr2는 평가되지 않음
expr1 -or expr2 'expr1 -o expr2' 와 같은 의미 (POSIX 호환용은 아님)

보다 다양하고 복잡한 find 명령문을 만들어 찾고자 하는 파일이나 디렉토리를 보다 정확하게 검색하는데 사용

1. find의 파일검색 기본사용법

find / -empry -exec ls -l {} \;

시스템 전체에서 용량이 0인 비어있는 파일을 검색하여 ls -l 형식으로 {} 차례대로 치환하여 출력한다.

find / -uid 500 -exec ls -l {} \;

uid가 500인 사용자인 모든 파일을 찾아서 ls -l로 화면 출력

find / -user localhost -print

ID를 지정하여 그 사용자의 ID 소유로 된 파일들을 검색하는 예

리눅스 시스템내에 존재하는 localhost 소유의 모든 파일을 검색

-exec ls -l {} \;와 -print의 차이점은 -print는 검색결과를 파일의 절대경로로 표시하는 반면, -exec ls -l {} \;는 ls -l 과 같은 형식으로 검색결과를 표시한다.

find /home/localhost -name *.dat -exec ls -l {} \;

/(시스템전체)가 아닌 특정 사용자의 홈디렉토리내에서 특정 파일을 검색한 예

홈디렉토리 이하에 존재하는 모든 *.dat을 찾기

find ~young -name *.dat -exec ls -l {} \;

young 이라는 사용자의 홈디렉토리를 모를 경우 ~young 지정

~young 는 /etc/passwd 파일에 존재하는 young라는 사용자의 홈디렉토리위치를 의미

2. 검색된 파일을 바로 삭제

사용형식 : find 삭제할 경로 -name 파일정규식 -exec rm -f {} \;

young 라는 계정사용자의 홈디렉토리내에 존재하는 *.bak 파일을 찾아서 모두 삭제하는 예

* 백업 이라고 해서 .bak의 형태가 아닐수 있음

find ~young -name *.bak -exec ls -l {} \;

파일의 존재를 우선 확인한다.

find ~young -name *.bak -exec rm -f {} \;

rm -f 명령어를 실행하여 삭제한다.

rm -f /home/young/*****.bak

rm -f /home/young/********.bak

위의 명령어가 차례대로 실행되는 것과 같은 것이다.

삭제를 하려면 정말로 서버내부에서 불필요한 파일들인가를 반드시 확인한 후에 사용해야하고 가능하다면 경로를 전체경로 하는 것은 삼가해야 한다.

리눅스시스템내에 존재하는 불필요한 파일들

*.bak 백업파일, *.old, *.org, *orig 등의 작업 전 복사본, 서버장애의 원인을 발생할 수 있는 웹로그파일

APACHE 웹서버에 설정된 가상호스트들이 모두 동일한 access_log 파일을 가지는 경우도 있겠지만, 대부분의 가상 호스트들은 자기 자신의 홈페이지 디렉토리에 별도로 저장되는 경우가 일반적이다.

find / -name access_log -exec rm -f {} \;

find /home -name *.bak -exec rm -f {} \;

find /home -name error_log -exec rm -f {} \;

서버전체를 대상으로 access_log 파일을 찾아서 rm -f 실행한 것

아파치의 기본 설정은 access_log 파일이나 error_log 파일이 존재하지 않을 경우에는 자동으로 파일을 생성하게 되므로 삭제한 후에도 아파치는 정상 작동 한다. 하지만 로그 파일을 저장하는 디렉토리는 반드시 존재해야 아파치가 정상 작동된다.

3. 파일용량이 큰 파일들을 모두 검색하여 처리하기

find / -size +100M -exec ls -lh {} \;

h(human-readable) 파일을 리스팅할 때에 용량단위 (kilo, mega, giga)를 붙여서 출력한다.

4. 지정한 퍼미션을 가지고 있는 파일 검색하기

find / -perm 4755 -exec ls -l {} \;

SetUID 퍼미션과 755라는 퍼미션을 가진 파일을 찾은 예

(4000 setuid - 소유자 권한, 2000 setgid - 그룹권한)

5. 파일의 변경시간을 기준으로 원하는 파일 검색하기

최근 몇분, 몇 시간 이전 또는 이후에 사용되거나 변경된 적이 있는 파일을 검색할수 있다.

find /home/young -mmin 5 -exec ls -l {} \;

-mmin n , 정확하게 n을 의미 (+n n보다 큰값을 의미, -n n보다 작은 값을 의미)

find /home/young -atime -100 -exec ls -l {} \;

-atime -100 : 최근 100 시간 이내에 액세스된 적이 있는 파일을 검색한다.

find /home/young -mtime -1 -exec ls -l {} \;

-mtime -1 : 최근 1 시간 이내에 변경된 적이 있는 파일을 검색한다.

6. 지정한 파일보다 더 최근에 사용된 적이 있거나 변경된 적이 있는 파일 검색

find /home -anewer /home/young/begin -exec ls -l {} \;

/home/young/begin 파일 보다 더 최근에 액세스 된 적이 있는 파일들을 찾아서 보여준다.

특정파일을 지정해야 한다.

find /home -newer /home/young/begin -exec ls -l {} \;

/home/young/begin 파일이 변경된 것 보다 더 최근에 변경된 적이 있는 파일을 찾아서 보여준다.

7. 읽기 또는 실행, 쓰기가능한 파일을 검색하기

-executable : 실행 가능한 파일을 검색한다.

-readable : 읽기 가능한 파일을 검색한다.

-writable : 쓰기 가능한 파일을 검색한다.

find /home/young -executable -print

find /home /user -executable \! -writable -print

실행은 가능하지만 쓰지 못하는 파일을 대상으로 검색

8. 특정 파일타입의 파일들만 검색하기

파일종류를 지정하는 방법

-type b : 블록장치 파일 (block special file)

-type c : 문자블록장치 파일 (character special file)

-type d : 디렉토리 (directory)

-type p : FIFO 파일 (first in first out)

-type f : 일반파일 (regular file)

-type l : 심볼릭 링크파일 (symbolic link file)

-type s : 소켓파일 (socket file)

find /dev -type b -exec ls -l {} \;

블록장치파일

find /dev -type c -exec ls -l {} \;

문자장치파일

find /etc -type d -print 디렉토리

find /etc -type f -print 일반파일

find /etc -type l -exec ls -l {} \; 링크파일

find /tmp -type c -exec ls -l {} \; 소켓파일

9. root 소유의 SetUID, SetGID, StickyBit 파일을 검색하기

root 소유의 SetUID 파일들은 시스템에서 특별관리대상이기 때문에 어떤파일이 설정되어 있는가를 파악하고 별도 관리해야한다. find를 이용하여 root 소유의 SetUID파일을 검색할 줄 알아야 한다.

find / -user root -perm 4755 -exec ls -l {} \;

find / -user root -a -perm 4755 -exec ls -l {} \;

find / -user root -and -perm 4755 -exec ls -l {} \;

위의 방식은 모두 -user root와 -perm 4755는 AND조건

OR 연산 검색

find / -user root -o -perm 4755 -exec ls -l {} \;

find / -user root -or -perm 4755 -exec ls -l {} \;

10. 시스템 보안점검시 반드시 검색해야 하는 몇가지 find 검색방법

.rhosts , .bash_history , 무적파일(소유자가 없는 파일)

1. .rhosts 파일 검색

.rhosts 파일은 외부에서 아무런 제한 없이 로그인할 수 있는 접근허용이 설정된 파일

따라서 이 파일이 존재한다면 반다시 그 내용을 확인해 보아야 한다.

find / -name .rhosts -exec ls -l {} \;

만약 이파일이 존재한다면 그 용도와 사용목적을 학인해야 한다. 최근에 .rhosts파일을 사용하는 경우가 드물기 때문에 이 파일이 존재한다면 정상적인 사용이 아닐 가능성이 매우 높다

2. .bash_history

.bash_history 파일은 root를 포함하여 각 사용자들의홈디렉토리에 존재하는 파일로서 각 사용자들이 사용했던 명령어가 저장되어있는 매우 중요한 파일이다. 만약 이파일들 중 파일용향이 0인 파일이 있다면 해킹가능성을 의심해 보아야한다. 특히 root 소유의 bash_history 파일의 용량이 0이라면 매우 심각한 경우로서 99% 이상은 시스템이 해킹되었다고보아야 한다.

find / -name .bash_history -exec ls -hl {} \;

3. 무적파일(소유자가 없는 파일)

무적파일이란 소유자 또는 소유그룹이 존재하지 않는 파일을 의미하며 시스템 보안관리에 매우 중요하다. 리눅스는 멀티유저 운영체제이기 때문에 존재 하는 모든 파일과 디렉토리, 심지어 모든 장치들은 소유자나 소유그룹이 존재하기 마련이다. 따라서 소유자나 또는 소유그룹이 존재하지 않는 파일이나 디렉토리 혹은 장치파일등이 있다면 반드시 그 소속과 생성경위를 확인하여야 한다. 간혹 해킹된 시스템에서 무적파일이 생성되어 있는 경우가 매우 흔하기 때문이다.

find / -nouser -o -nogroup -exec ls -l {} \;

11. 지정한 문자열을 가지고 있는 파일 검색하기

윈도우의 검색 유틸리티 처럼 리눅스에서도 find 명령어를 이용하여 특정문자가 속한 파일을 찾을 수 있다.

형식 : find 대상 -type f -exec egrep -i "포함하는문자" /dev/null {} \;

파일종류를 지정하는 방법

-type b : 블록장치 파일 (block special file)

-type c : 문자블록장치 파일 (character special file)

-type d : 디렉토리 (directory)

-type p : FIFO 파일 (first in first out)

-type f : 일반파일 (regular file)

-type l : 심볼릭 링크파일 (symbolic link file)

-type s : 소켓파일 (socket file)

로그 파일등을 관리할때,

파일명 및 권한은 남겨 놓고, 비울때 사용한다.


cat /dev/null > 파일명

cat /dev/null > access_log

외부 서버 mysql DB 접속 장애 발생시


확인해야 할 상황-


1. mysql 접속하여

mysql -p -u root

mysql비밀번호 입력


2.쿼리가 쌓이고 있는지 확인

mysql> show processlist;

+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 72 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
1 row in set (0.00 sec)

<-- 정상인 상황


mysql> show processlist;
+------+----------------------+-----------------------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------+----------------------+-----------------------+------+---------+------+-------+------------------+
| 72 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 3519 | unauthenticated user | 112.*.*.*:53949 | NULL | Connect | NULL | login | NULL |
+------+----------------------+-----------------------+------+---------+------+-------+------------------+
2 rows in set (0.00 sec)


unauthenticated user <-- 이 부분이 많이 쌓일 경우 속도가 늦어짐..


해결책 ->

mysqld 재시작 및

/etc/hosts 설정 파일에 접속 IP와 호스트명을 넣어 주면 해결.





참고 1: http://blog.naver.com/sihal7?Redirect=Log&logNo=110083544250

참고 2: http://gorder.blog.me/39239536

참고 3: http://www.cyworld.com/oracooler/9179996

-->

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

skip_name_resolve 파라메터에 대한 굉장히 큰 오해

임창선 2011-12-06 13:21:52 주소복사
조회 181 스크랩 0

MySQL 파라메터 중 skip_name_resolve

MySQL 레퍼런스를 보면

"skip_name_resolve를 적용하게 되면 MySQL 서버가 클라이언트들의 접속시 DNS LOOKUP 과정을 생략시킨다."

덧붙여서 인터넷에 있는 글들을 본다면 "그러므로 속도가 빠르다" (인터넷 대부분의 글들) ...... 라고 설명이 되어 있다.

오라클은 접근 하려는 스키마의 ID와 패스워드를 알고 있는 상태에서 각 서버간의 네트워크 접근 권한만 허용된다면,

리스너를 통해 마음대로 접속할 수 있다. ( 물론 sqlnet.ora 파일에 접근 제한 설정이 안된 상태)

하지만 그와 다르게 MYSQL은 DB가 자체적으로 ID 와 PASSWORD그리고 IP(HOST)를 체크한다.

위 3가지 조건 중 하나라도 만족을 하지 못한다면, DB에 접근 할 수 없다.

MYSQL의 계정 권한이 저장된 USER 테이블을 조회한다면 이러한 결과값을 볼수 있다.

(또한 hash 함수로 암호화 저장 되어 있는 password를 볼 수 있다.)

mysql> select user, host , password from mysql.user;
+----------+---------------------+-------------------------------------------+
| user | host | password |
+----------+---------------------+-------------------------------------------+
| root | localhost | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| repl | % | *A424E797037BF97C19A2E88CF7891C5C2038C039 |
| dumpuser | 192.168.100.100 | *56C09388C92050AD66D96D207790DFBA76CD410B |

| testuser | kthcorp | *56C09388C92050AD66D96D207790DFBA76CD410B |
+----------+--------------------+-----------------------------------------------+

해당 계정들을 대상으로 하여서 서버로의 접근 상황을 예로 든다면

일단 해당 ID와 패스워드를 모두 알고 있다고 하여도 모든 계정들의 접근에는 제한이 있다.

왜냐하면 host 컬럼에 등록된 IP 권한들이 모두 다르기 때문이다.

1. root 계정의 경우 localhost 로 등록되어 있어서 로컬에서만 접근이 가능하다.

(보안상 root는 로컬에서만 접근하도록 허용하는 것이 좋다.)

2. repl 계정의 경우 %로 되어 있다.

%는 어디서 접근을 하던지 간에 무조건 id와 패스워드만을 알고 있다면 접근을 허용 해준다.

3. dumpuser의 경우 192.168.100.100이라는 곳에서만 접근을 허용 해준다.

4. testuser의 경우 kthcorp라는 호스트를 가진 클라이언트가 접근 요청시에만 허용 해준다.

위의 1,2,3 의 경우는 모두 MYSQL 서버가 클라이언트 접근 요청시 자체적으로 판단이 가능하다는 것을 알 수 있다.

하지만 4번의 경우 MYSQL이 kthcorp 라는 호스트명을 가진 서버가 어느 서버인지를 알 수가 없다.

그러므로 4번 testuser 계정이 접근을 요청할 경우,

MySQL 서버는 먼저 /etc/hosts 파일에서 kthcorp라는 호스트명을 가진 서버의 ip를 체크하여 접근을 허용해준다.

가상의 시나리오를 한가지 생각하자면,

MySQL 서버에 저러한 host명으로 등록된 계정들이 굉장히 빈번하게 접근할 경우,

그 때마다 MYSQL은 일일이 hosts 파일을 체크하며, 접근을 제한하려 하므로 서버에는 부하가 생길 것이다.

그러므로 skip_name_resolve 라는 파라메터를 설정하여 이러한 룩업 과정을 생략함으로,

서버에 접근 부하를 줄일수 있다고 한다면 이 얼마나 좋은 상황인가.....?

하여 직접 테스트를 해보았다.

결론은 skip_name_resolve 파라메터를 적용한다면, 위의 룩업 과정을 생략한다.

그런데 중요한 점은 인증 과정을 생략하고 접근을 허용해주겠다는 의미가 아니라,

이러한 인증 없이 그냥 HOST로 등록된 계정들은 무시하겠다는 의미이다....

그러므로 skip_name_resolve 파라메터를 적용한 순간부터는 HOST명으로 등록된 계정들은 모두 서버에 접근할 수 없다.

(localhost, ip, %로 등록된 계정만 접근할 수 있다)

일반적으로 DBA 조직이 운영하는 서비스 DB에서는

산발적으로 개별 클라이언트들을 모두 MySQL 서버로 붙게 하는 구성은 하지 않을 것이다.

DB 앞단에 존재하는 WAS 서버에서 커넥션을 조절하며, 관리를 하기에

이러한 skip-name-resolve와 관련된 이슈 사항을 접할 일은 사실상 흔치 않을 것이다.

/etc/hosts 파일과 mysql.user 테이블의 상호 연관성 테스트 시나리오

1. MySQL 서버 hosts 파일에 등록된 클라이언트 서버의 host ip 부분을 삭제 한후,

클라이언트에서 host로 등록된 계정 접속을 시도할 경우 접근이 불가능함을 알 수 있다.

단 최초 mysql 서버 오픈 이후 이미 인증한 hosts에 한해서는 hosts 파일을 삭제해도 접근이 가능함을 알 수 있다.

(메모리에 host 정보 기록됨)

2. skip_name_resolve 설정된 MySQL 서버에 /etc/hosts가 등록된 계정으로도 접근 불가능함을 알 수 있다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

'운영체제 > MySQL' 카테고리의 다른 글

MySql-Password 변경  (0) 2012.10.30
MySQL 기본 명령어 정리  (0) 2012.10.30
MySQL 사용자 추가 및 데이터베이스 추가 (2009/11/03 수정)  (0) 2012.10.30
MySQL 총정리  (0) 2012.10.30
Mysql Dump 백업,복구  (0) 2012.10.30

HTPASSWD를 이용한 홈페이지에 패스워드 걸기 (User Authorization)

Web Server 데몬인 아파치의 사용자 인증 기능을 이용하여 
홈페이지 특정 디렉토리에 접근시 ID와 비밀번호를 받아 인증
된 사용자만 사용할 수 있도록 하는 기능을 말합니다.


사용법

인증할 홈페이지 주소

http://cgiserver.sogang.ac.kr/~user-id/html

관련 파일 저장 경로

/m1/pubcgi/user-id/html

1) .htaccess 파일 만들기

cgiserver% cd /m1/pubcgi/user-id/html

cgiserver% vi .htaccess

------ .htaccess의 내용입니다. -----


AuthName

"User Authorization"

인증화면에 표시

AuthType

Basic


AuthUserFile

/m1/pubcgi/user-id/html/.htpasswd

.htpasswd파일의 위치

AuthGroupFile

/dev/null

그룹단위 인증 사용안함


<Limit GET>

require valid-user

인증된 사용자만 사용허가

</Limit>

2) .htpasswd 파일 만들기

.htpasswd 는 .htaccess 를 작성 후 htpasswd 를 실행하면 자동으로 생성되는 패스워드 파일입니다.

가. 처음 사용자 만들기

cgiserver% cd /m1/pubcgi/user-id/html/

cgiserver% htpasswd -c .htpasswd user-id

Adding password for user-id. 
New password : ******** (password는 화면에 나타나지 않습니다)
Re-type new password : ********

나. 사용자 추가하기

cgiserver% htpasswd .htpasswd user2

처음 사용자를 만들 경우 "-c" 옵션을 사용합니다. 
"-c" 옵션은 초기화 후 새로운 파일로 시작할 때 사용하는 옵션입니다. 

주의) user2를 만들 때 "-c" 옵션을 사용한다면 이전 user-id는 없어지고 다시 user2가 첫 사용자가 됩니다.

'운영체제 > LINUX' 카테고리의 다른 글

find 명령어..  (0) 2012.11.27
log file 등 비우기  (0) 2012.11.27
리눅스 서버에 최근 수정된 파일 찾기  (0) 2012.11.05
Linux - find 파일 찾기 명령어  (0) 2012.11.05
리눅스 권한주기  (0) 2012.11.02

[Linux] 리눅스 서버에 최근 수정된 파일 찾기

리눅스 내에 최근 수정된 파일을 찾을때 find 명령에 다음과 같은 옵션을 이용하시면 됩니다.
주로 서버에 해킹을 당했는데 몇일간 관리자가 수정한일이 없었다면 이와 같이 검색해서 수정된 파일들 위주로 역추적해서 찾을 수도 있습니다.

find / -ctime -5 -type f


-ctime
Many times this is understood as a creation time but that wrong. Ctime is change time
of file stats such as ownership, what permissions it has etc. 
파일의 정보가 변경된 시간 chmod, chown과 연관성이 있습니다.

-mtime
File modification time. Value of mtime is updated when content of file changes. 
파일의 내용이 변경된 시간 ls -l 에서 나오는 시간

-atime
File access time. Value of atime is modified when file is opened.
파일을 열어본 시간 또는 디렉토리에 cd명령으로 접근한 시간

-5 
서버에서 5일전에 변경된 파일

Linux - find 파일 찾기 명령어

1. 특정용량 이상되는 파일 찾기 (ex : 100 Mb)
find /* -size +100000k -exec ls -l {} \;

2. 특정 퍼미션 파일 찾기 (ex : 4755)

find /* -perm 4755 -exec la -l {} \;


3. 지정된 일자 이후에 변경된 모든 파일 찾기 (서버 보안점검시 사용, ex : 2일)

find /* -used 2 -exec ls -l {} \;

4. 특정디렉토리내에 존재하는 모든 디렉토리 목록만 확인하기
find /* -type d -print

5. PC내에 존재하는 모든 링크파일 검사하기(서버 보안점검시 사용)

find /* -type l -exec ls -l {} \;


6. 특정 문자열로 된 파일 찾기

find /* -name "*.php" -print | xargs egrep -rnoI "sms" | more

+ Recent posts