파일 탐색기 다시 시작
파일 탐색기는 전체 Windows 시스템의 기본 프로세스 중 하나입니다. 좋은 출발점은 다시 시작하고 문제의 파일이나 폴더가 나중에 잠금 해제되는지 확인하는 것입니다.

CTRL+ALT+DELETE를 눌러 작업 관리자를 엽니다.
프로세스 탭에서 Windows 탐색기를 찾습니다.
마우스 오른쪽 버튼으로 클릭하고 드롭다운 메뉴에서 다시 시작을 선택합니다.
이제 오류가 사라졌는지 확인하십시오.

apache 설정에서 proxy를 사용하기 위해서 mod_proxy 와 관련된 몇가지 so파일들을 컴파일 하는 방법에 대해 정리해 드리겠습니다.

별로 어렵지 않으니 따라하시다 보면 /modules/ 안에 mod_proxy.so파일이 생성된걸 확인하실수 있으실거예요.

apache mod_proxy.so 컴파일 방법

1) /apache/httpd-2.2.34/modules/proxy 해당 경로 이동

2) 아래 4개 컴파일 수행 (apache-2.2.34 설치된곳 경로지정)

/apache/apache-2.2.34/bin/apxs -i -a -c mod_proxy.c proxy_util.c

/apache/apache-2.2.34bin/apxs -i -a -c mod_proxy_http.c proxy_util.c

/apache/apache-2.2.34bin/apxs -i -a -c mod_proxy_connect.c proxy_util.c

/apache/apache-2.2.34/bin/apxs -i -a -c mod_proxy_ajp.c proxy_util.c ajp_header.c ajp_utils.c ajp_link.c ajp_msg.c

3) /apache/apache-2.2.34/modules 경로에 proxy 관련 파일 생성 확인 (4개)

mod_proxy_ajp.so
mod_proxy_connect.so
mod_proxy_http.so
mod_proxy.so

4) httpd.conf 에 삽입

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so

위처럼 하시면 일단 apache 에서 proxy를 사용하기 위핸 최소 조건인 mod_proxy.so파일의 설정이 완료된것입니다.

그럼 열공하세요..^^~

출처 : https://m.blog.naver.com/kletgdgo/90141426279

[root@localhost bin]# ./httpd -t

httpd: Syntax error on line 150 of /usr/local/apache/conf/httpd.conf: Cannot load modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: undefined symbol: unixd_config

아파치 시동시에 위와 같은 에러가 뜬다.

버전정보는

Server version: Apache/2.4.53 (Unix)
PHP 5.2.17 (cli)

보통 위 에러는 apache2와 php4.x로 컴파일 할때에 생기는 오류지만 apache2.4와 php5.2에서도 발생이 되기도 한다.
php압축해제경로/sapi/apache2handler/에서 php_functions.c 파일을 일부 수정한다.
 
[PHP 5.2.17 의 경우]

>line 386

#if !defined(WIN32) && !defined(WINNT) && !defined(NETWARE)
        AP_DECLARE_DATA extern unixd_config_rec ap_unixd_config;
#endif

 

>line 417

#if !defined(WIN32) && !defined(WINNT) && !defined(NETWARE)
        snprintf(tmp, sizeof(tmp), "%s(%d)/%d", ap_unixd_config.user_name, ap_unixd_config.user_id, ap_unixd_config.group_id);
        php_info_print_table_row(2, "User/Group", tmp);
#endif

 

재 컴파일 후 Syntax 테스트

[root@localhost bin]# ./httpd -t
Syntax OK

[PHP 4.4.8 의 경우]

php4소스파일에서 아래 경로의 파일을 수정해야합니다.

/sapi/apache2handler/php_functions.c

붉게 표시된 부분을 기존 unixd_config -> ap_unixd_config로 수정

373라인
AP_DECLARE_DATA extern unixd_config_rec unixd_config;

404라인
snprintf(tmp, sizeof(tmp), "%s(%d)/%d", unixd_config.user_name, unixd_config.user_id, unixd_config.group_id);

ap_get_server_version -> ap_get_server_banner로 수정

327라인
return (char *) ap_get_server_version();

수정 후 에 재 컴파일

출처 : https://rootrator.tistory.com/112

 

apache 시동시 에러 "undefined symbol: unixd_config"

[root@localhost bin]# ./httpd -thttpd: Syntax error on line 150 of /usr/local/apache/conf/httpd.conf: Cannot load modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: undefined symbol: unixd_config 아파치 시동시에 위와 같은 에

rootrator.tistory.com

출처 : https://darksharavim.tistory.com/333

 

[PHP]libphp4.so: undefined symbol 오류

환경 : centos7+apache2.4.6(RPM)+php4.4.9(src) 위 환경에서 아파치 구동시 아래와 같이 오류가 발생하여 확인해본 결과 libphp4.so: undefined symbol: unixd_config libphp4.so: undefined symbol: ap_get_server_version apache버전업

darksharavim.tistory.com

 

프로젝트를 진행하면서 특정폴더 안에 있는 파일리스트가 필요한 상황이었는데

DOS 명령어중 dir 명령어에 옵션을 넣어 사용하면 쉽게 파일 리스트를 텍스트 파일로 저장할 수 있습니다.

dir/b

dir 명령어에 /b 옵션을 붙이면  아래와 같이 파일명들만 출력됩니다.

dir/b 명령 결과

dir/b/s

여기에 /s 옵션을 더해주면 파일의 full 경로가 아래처럼 출력됩니다.

dir/b/s 명령 결과

이제 여기서 화면에 출력된 내용을 텍스트 파일로만 저장하면 됩니다.

방법은 > 기호를 사용하여 파일로 저장할 수 있습니다.

위와 같은 명령어를 실행하면 FileList.txt 파일로  파일리스트가 아래와 같이 저장됩니다.

참 쉽죠? ^^

 

ssh 로그인할때 로그인이 느려지는 현상
로그인을 할때 로그를 보면
john dbus[7254]: [system] Failed to activate service 'org.freedesktop.login1': timed out

로그인 timed out 이 뜨면서 계속 지연이 발생이 된다. 이걸 해결하기 위해서는
# systemctl restart systemd-logind
위 명령어를 입력해서 재구동 해주면 정상적으로 빠르게 로그인이 된다.

출처 : https://algo79.tistory.com/1277

 

우리는 대체로 이렇게 생각한다.

ctime : create time , mtime = modify time , atime = access time 이라고 생각한다. 

하지만 이렇게 생각하면 안된다.

ctime : 파일이나 inode 값이 바뀐 시점이다. 다시말해 속성값이 바뀐시점이다. 퍼미션이나 소유주, 파일크기 등 파일 속성값이 변경되었을 때 ctime 은 갱신된다.

mtime : 파일의 수정시간이다. 이는 속성이 아닌 파일의 내용이 바뀌었을때 이 값이 바뀐다. 주의할 것은 파일 내용이 바뀌면 파일의 크기가 달라진다. 이때 파일의 크기가 속성이므로 ctime도 갱신된다. 만약 파일 내용을 수정했는데 파일 크기가 바뀌지 않았을수 있다. 이때는 ctime이 바뀌지 않을까? 파일이 수정되면 mtime 이 바뀐다. mtime 은 파일의 속성이다. 때문에 ctime이 바뀐다.

** mtime은 대체로 ctime 과 같다. mtime이 갱신되면 ctime도 갱신된다. 하지만 ctime이 변경된다고 mtime이 변경되지는 않는다.

atime : 파일을 오픈하면 atime이 갱신된다. grep , sort, cat 등등 명령을 주거나 open() 함수로 열었을때 

파일의 ctime, mtime, atime을 쉘에서 ls로 확인법

ls의 옵션으로 -u 는 atime, -c는 ctime,  옵션이 없다면 mtime을 출력한다.

-u 와 -c 는 동시에 사용될 수 없다.

아래 포스팅을 참조하면 도움이 된다.

https://mapoo.net/os/oslinux/find%eb%a1%9c-%ea%b2%80%ec%83%89%ec%8b%9c-%ec%98%b5%ec%85%98%ec%9d%98-atime-ctime-mtime%ea%b3%bc-%ec%a1%b0%ed%95%a9%eb%90%98%eb%8a%94-%ec%8b%9c%ea%b0%84-%ea%b8%b0%ec%a4%80%ed%91%9c/

 

find로 검색시 옵션의 atime, ctime, mtime과 조합되는 시간 기준표 – mapoo's blog

-atime +n/-n/n 엑세스 시점으로 검색. cat, sort, open() 등을 하였을 때 -ctime +n/-n/n 파일의 속성값이 바뀐 시점으로 검색. (권한,inode,소유주 등) -mtime +n/-n/n 파일의 내용이 바뀐 시점으로 검색. 파일의 크

mapoo.net

 

출처 : https://mapoo.net/os/oslinux/%eb%a6%ac%eb%88%85%ec%8a%a4-ctime-mtime-atime-%eb%8b%a4%eb%a5%b8-%ec%a0%90-%ec%84%a4%eb%aa%85/

아래처럼 파이프로 넘겨서 간단하게 확인이 가능 합니다.

whois 주소 | iconv -f utf-8 -t euc-kr

가능하면 새로 설치하는것은 utf-8로 하는것이 좋겠습니다.

하지만 이전 시스템이 euc-kr 이라면 위와 같은 방법으로 한글 확인 하는데 조금 신경을 써 주셔야 합니다.

아래와 같은 방법으로 인코딩을 변경하는 방법도 있습니다.

LANG="ko_KR.eucKR"; /usr/bin/locale
LANG="ko_KR.UTF-8"; /usr/bin/locale

앨리어스를 줘서 전환을 쉽게 하는 방법을 사용해 보는것도 좋겠습니다.

/usr/bin/locale

명령은 설정하는것이 아니라 현재것 확인하는것입니다.

 

출처 : https://chamsora.tistory.com/3

리눅스를 이용해 서버를 운영하다 보면 버퍼/캐시가 쌓여 메모리를 점유하는 것을 top 또는 free -m 명령어로 확인할 수 있는데요.

버퍼와 캐시 메모리는 자주 사용하는 파일 내용이나 파일 위치등을 저장하기 때문에 캐시로 저장되어 있으면 디스크의 I/O를 줄여서 퍼포먼스를 빠르게 유지할 수 있는 장점이 있지만 장착된 램의 용량이 부족한 경우 스왑을 사용할 수도 있기 때문에 간헐적으로 메모리를 많이 사용하는 타이밍에는 성능 저하로 연결되게 됩니다.

이럴때 주기적으로 캐시 메모리를 비워 서버를 관리할 수 있습니다.

캐시 메모리 비우기

캐시 메모리를 비우기 위해서 /proc/sys/vm/drop_caches 를 사용합니다. 경로 때문에 파일 처럼 보이지만 바이너리 명령어로 다음과 같이 사용할 수 있습니다.

sync

echo 1 > /proc/sys/vm/drop_caches

echo 2 > /proc/sys/vm/drop_caches

echo 3 > /proc/sys/vm/drop_caches

메모리를 비우기 전 sync 명령어로 메모리에 올라간 데이터를 디스크로 옮겨줍니다. 이 과정을 거치지 않으면 흡사 프로그램을 강제 종료한 것 처럼 데이터가 유실될 수도 있습니다.

/proc/sys/vm/drop_caches 명령어는 위 처럼 3단계로 사용할 수 있는데 1은 Page Cache 비우기, 2는 dentries, inodes 비우기, 3은 모두 비우는 명령어 입니다.

페이지 캐시는 파일의 내용을 메모리에 올리는 구조이고 dentries는 데이터의 위치(directory Entry) , inodes는 파일과 디렉토리의 정보를 담고 있는 자료 구조를 담당합니다.

자동으로 캐시 메모리 비우기

위 명령어로 관리자가 수동으로 캐시 메모리를 비울 수 있지만 만일 주기적으로 캐시를 삭제하고 싶은 경우에는 크론탭(crontab)에 명령어를 등록할 수 있습니다.

0 7 * * 0 sync && echo 3 > /proc/sys/vm/drop_caches # 매일 오전 7시에 캐시 비우기
0 * * * * sync && echo 3 > /proc/sys/vm/drop_caches # 매 시간 캐시 비우기

crontab -e 명령어로 크론탭을 실행한 다음 맨 마지막 줄에 위 명령어 둘 중 하나를 추가한 다음 저장합니다.

출처 : https://extrememanual.net/29711#%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C_%EC%BA%90%EC%8B%9C_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EB%B9%84%EC%9A%B0%EA%B8%B0

 1.  mod_unique_id module 추가
    기본적으로 mod_unique_id 모듈을 apache install 시 설치해야되나 빠져있다면
    apache source를 다운받아서 해당 모듈만 복사한다.
   
    # cd /usr/local/src
    # wget http://mirror.apache-kr.org/httpd/httpd-2.2.27.tar.gz
    # tar xvfz httpd-2.2.27.tar.gz
    # cd httpd-2.2.27/modules/metadata
    # /usr/local/apache/bin/apxs -cia mod_unique_id.c
    # /etc/rc.d/init.d/httpd restart (/usr/local/apache/bin/apachectl restart)

2. 컴파일전 설치되어야할 라이브러리들이 다 설치되어 있는지 확인한다.
   https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#Installation_for_Apache
   해당 사이트를 참고

3. 컴파일
   # ./autogen.sh
   #./configure \
    --with-apxs=/usr/local/apache/bin/apxs \
    --with-libxml=/usr \
    --with-apr=/usr/local/apache/bin/apr-1-config \
    --with-apu=/usr/local/apache/bin/apu-1-config
   # make
   # make install

4. https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project 에서 최근 롤셋을 다운
   INSTALL text 파일안 설명대로 설치
   krcert.or.kr 에서 제공하는 룰셋은 오래전 룰셋이라 OWASP에서 제공하는 룰셋으로 셋팅한다.

5. httpd.conf 에 아래 내용 추가

   LoadModule unique_id_module   modules/mod_unique_id.so
   LoadFile  /usr/lib64/libxml2.so
   LoadFile  /usr/lib64/liblua-5.1.so
   LoadModule security2_module    modules/mod_security2.so

    <IfModule security2_module>
       Include conf/crs/modsecurity_crs_10_setup.conf
       Include conf/crs/activated_rules/*.conf
    </IfModule>

6. crs/activated_rules 디렉토리의 modsecurity_crs_10_setup.conf 심볼릭 링크 삭제
   httpd.conf 에 include되는 modsecurity_crs_10_setup.conf 파일을 아래 activated_rules/*.conf 으로 모든 파일을
   불러오는데 modsecurity_crs_10_setup.conf이 2번 불려오게 되서 apache error_log에
   ModSecurity: Found another rule with the same id 에러가 발생하게 된다.
   Include conf/crs/activated_rules/*.conf 만 하던지 심볼릭 링크를 삭제하던지 2번 불려지지 않게 한다.

7. httpd restart

8. www.your-domain.com/?foo=/etc/passwd 해서 apache error_log에 ModSecurity: Access denied.....이런 메세지가 나오면
   제대로 작동하는것이다.

9. 개발서버 IP로 접속이 안되면  modsecurity_crs_21_protocol_anomalies.conf 파일의 98번 라인을 주석처리하여 롤을
   없앤다.
   error_log를 보면 어떤 롤파일의 몇번째 롤 때문에 오류가 나는지 나오므로 그걸보고 하나씩 롤을 수정하면 된다.

출처 : https://kkamagistory.tistory.com/532