로그는 모든 웹 서버에 비종속적으로 사용하기 위해서 Common Log Format(CLF)라는 포맷을 사용하고 있다.
이 포맷은 클라이언트의 요청에 대한 로그를 각각의 줄로 기록을 하게 되며, 한 중에서는 스페이스로 구별을 하여 로그 정보를 적고 있다. 이 파일 포맷은 거의 모든 웹 서버에서 지원을 하고 있으나 때에 따라서 웹 서버를 만든 제작사의 포맷 또는 DB에 바로 저장할 수 있는 기능을 가지고 있는 웹 서버도 있다.
로그를 기록하기 위한 지시자는 TransferLog, LogFormat, CustomLog 세 개의 지시자이다.


1. TransferLog

Syntax : TransferLog file-pipe

TransferLog는 로그를 적을 파일 또는 프로그램을 지정할 수 있다. 로그는 파일에 적을 수도 있지만 특정 파이프 라인을 통해서 프로그램으로 바로 전달할 수도 있다.
TransferLog 지시자에는 특정 로그 포맷을 지정할 수 없기 때문에 가장 나중에 정의한 LogFormat을 사용한다. 특정 로그 포맷이 정의되지 않았다면 CLF 로그 파일 포맷을 따르게 된다.

예를 들어서 간략하게 A,B,C 세 개의 로그 포맷을 지정했다면 TransferLog가 사용하는 로그 포맷은 LogFormat C를 사용하게 된다.

 

LogFormat "포맷형식" A
LogFormat "포맷형식" B
LogFormat "포맷형식" C
TransferLog logs/access.log

위의 예제는 C 포맷을 사용한다. 로그가 쌓일 대상 파일은 logs/access.log 파일이다. 이 매개 변수가 "/"로 시작하지 않았기 때문에 ServerRoot 밑에 있는 logs 디렉토리에서 access.log 파일에 로그를 적게 되는 것이다. 만약에 "/"로 경로가 시작되었다면 이 경로는 절대 경로가 된다.

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

TransferLog logs/access.log 


2. CustomLog

Syntax : CustomLog file-pipe format-or-nickname

CustomLog는 TransferLog와 똑 같은 기능을 지니고 있는 지시자이지만 매개 변수에 포맷을 따로 지정하거나 가칭을 적을 수 있다.

LogFormat "포맷형식" A
LogFormat "포맷형식" B
LogFormat "포맷형식" C
CustomLog logs/access.log A

 

위와 같이 로그 파일을 정의했다면, LogFormat에서 A 라고 별명을 달아논 포맷을 가지고 logs/access.log 파일에 로그를 적게 된다. 물론 이 별칭 대신에 포맷을 직접 적어도 상관이 없다.

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

CustomLog logs/access.log agent


3. LogFormat

Syntax : LogFormat format [nickname]
               Default: LogFormat "%h %l %u %t \"%r\" %s %b"

LogFormat은 CLF 로그 포맷과 별도로 관리자가 정의한 로그 파일 형식을 만들기 위해서 사용이 되어진다.

다음 표는 로그 포맷에서 사용이 되어지는 변수들이다.(포맷에 대한 조금 더 자세한 내용은 Apache HTTP Server Project 를 참조)

 

변수   설명
%% : 퍼센트 기호
%...a : 요청한 클라이언트의 IP주소(원격 IP주소)
%...A : 로컬 IP 주소(서버 IP주소)
%...B : HTTP 헤더를 제외한 전송 바이트의 수
%...b : HTTP 헤더를 제외한 전송 바이트의 수. 전송 바이트가 없는 경우에 CLF에서 0으로
   표기하지 않고 '-'로 표기한다.
%...{Foobar}C : 서버가 수신한 요청에서 Foobar 쿠키의 내용
%...D : 요청을 처리하는데 걸린 시간(마이크로초 단위)
%...{Foobar}e : Foobar라는 환경 변수
%...f : 파일명
%...h : 요청한 원격 호스트(예:210.210.210.10)
%...H : 요청 프로토콜(예:HTTP/1.1)
%...{Foobar}i : Foobar의 내용-서버에 요청을 할 때의 헤더에 있는 내용
%...l : 리모트 로그인 이름(identd 데몬으로 부터 얻어 올 수 있을 때, 없을 경우 - 표시)
%...m : 요청 메소드(예:GET 또는 POST)
%...{Foobar}n : 다른 모듈에서 "Foobar"의 내용
%...{Foobar}o : Foobar의 내용 - 응답에서 헤더에 있다
%...p : 응답을 처리해준 서버의 포트(예:80)
%...P : 응답을 처리해준 차일드 프로세스의 프로세스 번호(예:14633)
%...{format}P : 요청을 서비스하는 자식의 프로세스 ID 혹은 쓰레드 ID. format에는 pid와 tid가
   가능하다
%...q : 쿼리 스트링(예:http://www.webnkorea.com/server-status?refresh=5라고 하면
   '?refresh=5' 가 기록된다. 쿼리 스트링이 없으면 빈 공백이 들어간다)
%...r : 요청을 할때의 첫 라인(index.html을 요청을 했다면 다음과 같이 기록 된다.
   (GET/HTTP/1.1)
%...s : 요청에 대한 서버의 상태
%...t : 요청을 받은 시간, CLF에서 시간과 같다(영어로 표기됨)
%...{format}t : 주어진 형식의 시간. strtime(3) 포맷으로 주어져야 한다.
%...T : 서버가 요청을 처리하는 데 걸리는 시간(초)(예:1초 미만일 경우 '0'으로 표기)
%...u : 원격 사용자 이름
%...U : 요청한 URL
%...v : 요청에 대해서 처리를 한 서버 이름(예:www.webnkorea.com)
%...V : UseCanonicalName 설정에 따른 요청에 대해서 처리한 서버 이름
%...I : 요청과 헤더를 포함한 수신 바이트수로 0일 수 없다.(영문자 아이임)
   (사용하려면 mod_logio가 필요하다)
%...O : 헤더를 포함한 송신 바이트수로 0일 수 없다.(사용하려면 mod_logio가 필요하다)

 

LogForamt 지시자에서 위의 변수들을 사용해서 마음대로 로그 포맷을 바꿀 수 있다. 자신이 모니터링하고 싶은 정보만을 로그에 기록함으로써 가독성을 늘리고 데이터의 크기를 줄일 수 있다.


4. 다중 로그 파일
현재의 아파치 버전에서는 하나의 요청에 대해서 여러 개의 로그 파일을 만들 수 있다. 만약 두 개의 로그 파일을 만든다고 가장할 때 하나는 디폴트인 CLF 포맷을 사용할 수 있고 다른 하나는 자신이 정의한 포맷을 지정해서 사용할 수도 있다.

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

TransferLog logs/access.log

LogFormat "%u %U %p" my

CustomLog logs/access.log my


TransferLog 앞에는 어떠한 LogFormat도 지정하지 않으면 기본적으로 CLF 포맷으로 로그를 만들게 된다. 다음에 LogFormat 지시자를 사용해서 포맷을 지정하고 별칭을 my로 지정한 후 CustomLog 지시자를 사용해서 자신이 원하는 로그 포맷을 사용할 수 있다.

이 로그 형식은 가상 사이트 컨테이너인 <Virtual></Virtual>에서 따로 로그에 대한 설정을 하지 않는다면 메인 프로세스의 로그 파일에 로그자 저장된다.


5. TIP(가상 호스트에 대한 효율적인 로그 관리)
일반적으로 가상 호스트에 대해서 따로 로그를 관리하지는 않지만, 웹호스팅을 하는 업체라면 고객으로 부터 자신의 사이트에 대한 통계를 요청받는 경우가 있다. 이러한 경우, 효율적으로 로그를 관리하기 위해서 가상 호스트에 대해서 따로 로그를 만들어 줄 필요가 있다. 물론 한 파일에서 관리한 다음 각각의 가상 호스트에 대한 로그로 필터링을 하면 되겠지만, 아무래도 개별 파일에서 관리하는 것 보다 깔끔하지 않다.

 

그래서 log 디렉토리 밑에 logs/vhost 라는 디렉토리를 만든 다음 도메인 이름명을 따서 로그 파일을 만드는 방법이 유용하다. 따라서 webnkorea.com 이라는 가상 호스트가 있다면, <Virtual></Virtual> 컨테이너 안에 로그 파일에 대한 설정을 다음과 같이 해 준다.


CustomLog logs/vhost/diverman.com-access_log "Format"

이렇게 하면 각각의 가상 호스트에 대해서 로그 파일을 관리해 줄 수 있다. 좀 더 신경을 쓴다면 rotatelog 데몬을 이용해서 로그가 일정 크기 이상 증가하지 않도록 해 주는 것도 좋을 것이다.

출처: https://berry2.tistory.com/entry/Apache-Access-Log-Format [베리베리 지식창고:티스토리]

1. 마이그레이션

1-1. 접근 제어 선언 방식 변경

  • 2.2에서 Order, Allow , Deny 등의 지시자로 하던 접근 제어 설정은 Require 를 이용한 방식으로 변경되어야한다.

1) 모든 요청 거부

# 2.2 설정
Order deny,allow
Deny from all

# 2.4 설정
Require all denied

 

2) 모든 요청 허용

# 2.2 설정
Order allow,deny
Allow from all

# 2.4 설정
Require all granted

 

3) example.org 허용 나머지 거부

# 2.2 설정
Order Deny,Allow
Deny from all
Allow from example.org

# 2.4 설정
Require all denied
Require host example.org

 

4) 127.0.0.1 허용 나머지 거부

# 2.2 설정
Order Deny,Allow
Deny from all
Allow from 127.0.0.1

# 2.4 설정
Require all denied
Require ip 127.0.0.1

 

1-2. 속성/모듈 변경

  • 속성/모듈 변경
    • Httpd의 기존 설정에서 아래 속성/모듈과 관련된 선언이 있다면, 이름을 바꾸어준다.
    • 속성명
      • MaxClients -> MaxRequestWorkers
      • MaxRequestsPerChild -> MaxConnectionsPerChild
    • 모듈명
      • mod_disk_cache -> mod_cache_disk
    • KeepAlive 
      • 속성은 On 이나 Off 중 하나의 값을 가질수 있다. 0,1과 같이 숫자로 선언되어 있는 경우가 있었다면 수정해야 한다.
<IfModule mpm_prefork_module>
    StartServers          30
    MinSpareServers       30
    MaxSpareServers      128
    ServerLimit         1024
    MaxClients          1024 # MaxClients -> MaxRequestWorkers
    MaxRequestsPerChild  100000 # MaxRequestsPerChild -> MaxConnectionsPerChild
</IfModule>

...

KeepAlive Off # 속성은 On 이나 Off 중 하나의 값을 가질수 있다.

 

  • 속성 디폴트 값 변경 확인
    • 아래 속성들은 디폴트값이 바뀌었다.
    • 기존에 암묵적으로 디폴트값에 의존을 했었다면 명시적으로 선언한다.
  • Options 내 -,+ 모두 표시
    • Either all Options must start with + or -, or no Option may.
    • 오류가 발생시 모든 Options 내  +, -  표시를 해주어야 합니다.
<Directory "/home1/irteam/deploy/doc_base">
        Options -Indexes FollowSymLinks MultiViews # Options -Indexes +IncludesNoExec +FollowSymLinks +MultiViews
        AllowOverride None # 명시적으로 선언
        Order allow,deny
        Allow from all
        FileETag None # 명시적으로 선언
</Directory>

 

2. 오류로그 및 해결책

오류 1

# 오류 로그
httpd: Syntax error on line 59 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf: 
Cannot load modules/mod_authz_default.so into server: /home1/irteam/apps/apache/modules/mod_authz_default.so: cannot open shared object file: No such file or directory

# 해결 방법
mod_authz_default 삭제

 

오류 2

# 오류 로그
httpd: Syntax error on line 73 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Cannot load modules/mod_ident.so into server: /home1/irteam/apps/apache/modules/mod_ident.so: cannot open shared object file: No such file or directory

# 해결 방법
mod_ident 삭제

 

오류 3

# 오류 로그
AH00534: httpd: Configuration error: No MPM loaded.

# 해결 방법
추가 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

 

오류 4

# 오류 로그
AH00526: Syntax error on line 106 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'User', perhaps misspelled or defined by a module not included in the server configuration


# 해결 방법
추가 LoadModule unixd_module modules/mod_unixd.so

 

오류 5

# 오류 로그
AH00526: Syntax error on line 214 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration

# 해결 방법
추가 LoadModule access_compat_module modules/mod_access_compat.so

 

오류 6

# 오류 로그
[Thu Aug 01 16:16:15.768125 2019] [core:warn] [pid 29604] AH00117: Ignoring deprecated use of DefaultType in line 281 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf.
AH00526: Syntax error on line 325 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'Require', perhaps misspelled or defined by a module not included in the server configuration

# 해결 방법
추가 LoadModule authz_core_module modules/mod_authz_core.so

 

오류 7

# 오류 로그
[Thu Aug 01 16:17:14.560832 2019] [core:warn] [pid 29690] AH00117: Ignoring deprecated use of DefaultType in line 282 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf.
AH00526: Syntax error on line 353 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'LockFile', perhaps misspel

# 해결 방법
DefaultType text/plain -> ForceType text/plain(모든 응답을 text/plain으로 처리함.) 옵션 제거 할 것

 

오류 8

# 오류 로그
AH00526: Syntax error on line 353 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'LockFile', perhaps misspelled or defined by a module not included in the server configuration

[Mon Aug 05 15:47:04.456821 2019] [core:warn] [pid 26228] AH00117: Ignoring deprecated use of DefaultType in line 280 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf.
AH00526: Syntax error on line 396 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Invalid command 'Allow', perhaps misspelled or defined by a module not included in the server configuration

# 해결 방법
LockFile "logs/accept.lock" -> Mutex file:/home1/irteam/logs default

 

오류 9

# 오류 로그
AH00526: Syntax error on line 521 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
JkWorkersFile: Can't find the workers file specified

# 해결 방법
/home1/irteam/apps/apache/conf/workers.properties 추가

 

오류 10

# 오류 로그
AH00526: Syntax error on line 600 of /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:
Either all Options must start with + or -, or no Option may.

# 해결 방법
Options -Indexes FollowSymLinks MultiViews
>> Options -Indexes +FollowSymLinks +MultiViews

 

오류 11

# 오류 로그
AH00548: NameVirtualHost has no effect and will be removed in the next release /home1/irteam/apps/apache-2.4.39/conf/httpd.conf:626
AH00112: Warning: DocumentRoot [/data/images/deploy/doc_base] does not exist
AH00526: Syntax error on line 23 of /home1/irteam/apps/apache/conf/vhost-avatar-static.conf:
Require not allowed in <VirtualHost> context

# 해결 방법
NameVirtualHost 삭제

 

오류 12

# 오류 로그
[Thu Aug 01 16:30:33.693824 2019] [proxy_balancer:emerg] [pid 31012] AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded??
[Thu Aug 01 16:30:33.693839 2019] [:emerg] [pid 31012] AH00020: Configuration Failed, exiting

# 해결 방법
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so 추가.

 

오류 13

# 오류 로그
[Thu Aug 01 16:32:06.814692 2019] [jk:warn] [pid 31220] No JkShmFile defined in httpd.conf. Using default /home1/irteam/apps/apache/logs/jk-runtime-status
[Thu Aug 01 16:32:06.833689 2019] [jk:warn] [pid 31224] No JkShmFile defined in httpd.conf. Using default /home1/irteam/apps/apache/logs/jk-runtime-status

# 해결 방법
JkShmFile /usr/local/apache2/logs/mod_jk.shm

 

출처 : https://ssackssly.tistory.com/14

URL 주소 중 기호 부분을 두 자리의 16 진수로 변환하여 표현하고 있습니다. 
요새는 통 들여다 볼 일이 없어서 자꾸 가물거리기에 그냥 정리 해 둡니다. 
저같은 경우에는 다운로드 파일의 다이렉트 주소를 소스에서 뽑아올 때 자주 썼습니다.

%26   &
%2F   /
%3A   :
%3F   ?
%3D   =

아래는 예제입니다.

☞ 원래 주소

http://example.com/index.php?page=260&id=22

☞ 변환된 모습

http%3A%2F%2Fwww.example.com%2Findex.php%3Fpage%3D260%26id%3D22

☞ PHP 에서 원래 주소로 다시 변환하기

<?php

$raw_url = "http%3A%2F%2Fwww.example.com%2Findex.php%3Fpage%3D260%26id%3D22";

$decoded_url = rawurldecode($raw_url);

echo $decoded_url;

?>

출처: https://shinb.tistory.com/398 [신비 블로그:티스토리]

시스템 정보에서 Windows 정품인증 또는 제품 키 변경을 클릭 시

Windows 정품 인증 클라이언트의 작동이 중지되었습니다 라고 에러가 발생하면

명령어로 정품 인증을 진행하면 된다.

[명령프롬프트] 에서 (관리자모드로 실행)

cd c:\windows\system32
cscript slmgr.vbs /ipk OOOOO-OOOOO-OOOOO-OOOOO-OOOOO 명령을 실행
[참고] OOOOO-OOOOO-OOOOO-OOOOO-OOOOO은 해당 윈도우 버전에 맞는 유효한 제품키

위 명령을 실행하면 
"제품키 OOOOO-OOOOO-OOOOO-OOOOO-OOOOO 을(를) 설치했습니다." 라고 나온다.

cscript slmgr.vbs /ato 명령을 실행 

위 명령을 실행하면 
"제품에 대한 정품 인증을 받았습니다." 메세지가 나온다.


다시 시스템 정보를 호출하여 정품인증 여부를 확인

vi, vim ^M 제거


윈도우에서 작성한 파일을 Unix/Linux상에 올리면 개행 문자가 깨져서 ^M가 보이는 경우를 봤을 것이다.이것은 윈도우에서는 CRLF 가 개행인데 Linux/Unix에서는 LF가 개행이라 나타나는 현상으로 보면 된다.

[CR,LF 뜻]

라인피드(LF : Line Feed) => 현재 위치에서 바로 아래로 이동

캐리지리턴(CR: Carriage return) => 커서의 위치를 앞으로 이동

설명은 이정도로 하고 제거 방법을 알아 보자

vi, vim에서 제거 하는 방법

결론부터 말하면 다음과 같이 하면 된다.

:%s/^M//g

위에서 ^M는 ^+M 이 아니고 Ctrl + v + m 이다.

vi에서 입력한 각 명령어에 대해 설명 하겠다.

:                 --> vi,vim에서 명령어를 입력 하겠다는 신호
:%s            --> 문자열을 치환하겠다는 명령어
:%s/^M      --> ^M 문자열을 치환하겠다
:%s/^M//    --> ^M 문자열을 공백으로 치환하겠다.
:%s/^M//g  --> 해당 문서 전체 ^M 문자열을 공백으로 치환하겠다.

 

윈도우에서 Unix/Linux로 파일 올릴때 ^M 안생기게 하는 방법

운영체제 마다 줄바꿈 정의가 다르다. 

각 운영체제 마다 정의를 살펴 보자.

윈도우/DOS : CRLF 조합으로 줄바꿈을 정의
Unix/Linux/C : LF 만으로 줄바꿈을 정의

이래서 윈도우에서 작성 된 것을 Unix/Linux 계열로 올리면 vi로 편집했을 때 ^M이 붙는 것을 확인 할 수 있다.

물론 ftp로 올릴 때 방식이 텍스트/2진 어떤 것을 선택하느냐에 따라 달라질 수 있다.

텍스트 방식으로 올리면 데이터 변환이 생겨 /r/n -> /n 으로 된다. 

2진 모드로 올릴때는 변환이 생기지 않아 윈도우에서 작성된 파일이 컴파일이 안되거나 script작성 된것이 동작 안할 수가 있다.

[sftp 전송 방식]
텍스트 방식 : 줄바꿈에 대한 변환이 일어남
2진 모드 : 줄바굼에 대한 변환이 일어나지 않음 ( 문제가 발생할 수 있다. )

출처: https://jink1982.tistory.com/123 [돼민이:티스토리]

bash script에서 문자열을 맨앞이나 맨뒤에서 부터 잘라내 버리고 싶은 경우가 있다. 요놈들을 참조하면 원하는 만큼 매치된 문자열을 제거할 수 있다.

${string#substring} - 맨앞에서부터 가장 짧게 매치된 문자열을 지운다.
${string##substring} - 맨앞에서부터 가장 길게 매치된 문자열을 지운다.
${string%substring} - 맨뒤에서부터 가장 짧게 매치된 문자열을 지운다.
${string%%substring} - 맨뒤에서부터 가장 길게 매치된 문자열을 지운다.

간단한 예제로 앞에서 부터 짤라보자.

STR=ABC123abc123ABC
#   |--|            가장 짧은거 (#)
#   |--------|      가장 긴거 (##)

echo ${STR#A*1}     # 23abc123ABC
echo ${STR##A*1}    # 23ABC

이번엔 뒤에서 부터 짤라보자.

STR=ABC123abc123ABC
#              |--| 가장 짧은거 (%)
#        |--------| 가장 긴거 (%%)

echo ${STR%3*C}     # ABC123abc12
echo ${STR%%3*C}    # ABC12

맨앞이나 맨뒤에서부터 매칭되지 않으면 잘리지 않는다.

echo ${STR#a*c}     # ABC123abc123ABC
echo ${STR%%a*c}    # ABC123abc123ABC

출처 : https://blog.leocat.kr/notes/2018/01/18/shell-remove-substring

root패스워드 설정 방법

sudo -s

그럼 패스워드를 입력하라고 나오는데 현재 접속되어 있는 사용자 계정의 패스워드를 입력해 준다.
입력이 정상적으로 되면 root계정으로 접속된다.

whoami

위 명령어로 현재 사용자가 root로 나오는지 확인한다.

passwd root

passwd 명령어로 root 계정에 대한 패스워드를 설정해 준다.

맥, 맥북 파인더(Finder) 즐겨찾기 추가 및 삭제 방법을 알려드리도록 하겠습니다.

맥북 사용하시다 보면 초반에는 익숙하지 않지만 파인더(Finder)라는 파일 검색 프로그램을 많이 사용하시게 됩니다.

맥에 많은 폴더를 넣고 작업하시는 분들은 특정 작업을 위한 폴더에 빈번히 접근하는 경우가 많은데요.

맥에 특정 폴더를 일일히 찾아가려면 귀찮기도 하고 시간도 많이 걸려서 비효율적일때가 많습니다.

윈도우의 경우에도 이를 해결하기 위해서 바로가기와 같은 방법으로 특정 폴더에 직접 접근할 수 있는 기능을 제공하고 있는데요.

맥에서도 이와 같이 자주 사용하는 폴더 또는 직접 접근하고 싶은 폴더를 즐겨찾기에 추가해서 쉽고 빠르게 접근할 수 있도록 돕고 있습니다.

물론 그냥 해당 폴더에 바로가기 버튼을 만들어서 바탕화면에 두면 간단하고 좋긴 하겠지만, 바탕화면을 지저분하게 유지하고 싶지 않으신 분들은 오늘 알려드리는 방법을 사용하셔서 폴더 접근을 보다 쉽게 하시면 좋을 것 같습니다.

먼저 여러분이 접근을 용이하게 하고 싶어 하시는 폴더가 있다는 가정하에서 진행해 보겠습니다.
저는 맥북 데스크톱에 바로 폴더를 만들어서 파인더 즐겨찾기 추가를 수행해 보도록 하죠.
맥북 파인더(Finder)를 클릭하셔서 윈도우 창을 띄워보도록 합시다.

그럼 이처럼 왼쪽에 파인더 즐겨찾기를 보실 수 있습니다.
파인더 즐겨찾기에는 기본적으로 다음과 같은 폴더들이 존재합니다.

맥, 맥북 파인더 즐겨찾기 추가를 위해서는 추가하고자 하는 폴더를 즐겨찾기에 드래그 하시면 됩니다.
추가하고자 하는 폴더를 클릭한 상태로 움직여 즐겨찾기에 이동시키면 다음과 같이 투명한 상태의 폴더가 파인더 즐겨찾기에 추가됩니다.

맥, 맥북 파인더 즐겨찾기에 추가하고자 하는 폴더를 이동시키면 이처럼 해당 폴더가 추가된 것을 보실 수 있습니다.
물론 추가한 폴더가 복사된 것이 아닙니다. 단순히 추가된 폴더의 바로가기와 같은 링크가 파인더 즐겨찾기에 추가된 것입니다.
이제 맥, 맥북 파인더를 실행할때마다 즐겨찾기에 추가한 폴더를 클릭하시면 직접 해당 폴더로 바로 접근 할 수 있습니다.

그렇다면 맥, 맥북 파인더에 추가한 즐겨찾기를 삭제하고 싶을때는 어떻게 해야 할까요?
파인더에 추가한 폴더를 클릭하고 마우스 오른쪽 클릭을 해서 추가한 즐겨찾기 폴더를 제거할 수 있습니다.

이처럼 맥, 맥북 파인더 즐겨찾기 폴더에서 마우스 오른쪽 클릭을 하시면 "사이드바에서 제거" 라는 메뉴가 뜹니다.
이것을 클릭하시면 파인더에 추가한 즐겨찾기 폴더를 제거하실 수 있습니다.

[출처] https://tomorrow001.tistory.com/155#recentEntries

RockyLinux8 (CentOS8) 이상부터는 파일명에 공백이나 특수문자가 포함된 경우 파일명이 작은 따옴표로 감싸지는 현상이 있다.

이 따옴표가 매우 걸리적거려 해결방법을 검색하다가 해외포럼에서 해결책을 찾게 되었다. 아래는 그 내용에 대한 정리다.

[원문]
This was a highly unpopular feature introduced to version 8.25 of the GNU coreutils package as recently as 2016, by a consensus of just three developers.

Arguments cited by critics of the change include that it makes the output of ls look considerably more unsightly, unnecessarily diverges from nearly half a century of Unix tradition, and due to the way it was implemented (opt-out instead of opt-in) breaks compatibility with long-standing existing scripts and utilities.

Because the feature was introduced to the coreutils package - which virtually every Linux distribution depends on and which ls is a part of - the change affects every Linux or Linux-like system imaginable, from Arch Linux to Cygwin.

In the case of Debian and Debian-derived distros like Ubuntu, the change was at some point reverted after considerable protest, before being once again reinstated in October 2017.

As this answer makes clear, the best way to register your disappointment at this change would be to contact the coreutils developers directly via a bug report and (politely) make the argument that they've made a huge mistake. As per the open source ethos, a critical mass of users respectfully but adamantly insisting that the way ls used to behave be properly reinstated should in theory be enough to convince the coreutils developers to listen to the Linux community.

[번역]
이것은 단지 3명의 개발자들의 합의에 의해 2016년까지만 해도 GNU 코어유틸스 패키지 버전 8.25에 도입된 매우 인기 없는 기능이었습니다.

이러한 변화에 대한 비평가들이 인용한 주장으로는 ls의 출력을 훨씬 더 보기 흉하게 만들고, 거의 반세기에 걸친 유닉스 전통과 불필요하게 괴리가 있으며, 구현 방식으로 인해 (opt-in 대신 opt-out) 오래된 기존 스크립트 및 유틸리티와의 호환성이 깨진다는 것 등이 있습니다.

이 기능은 사실상 모든 리눅스 배포판이 의존하고 어떤 ls가 속해 있는지에 따라 결정되는 코어유틸리티 패키지에 도입되었기 때문에, 이러한 변화는 Arch Linux에서 Cygwin에 이르기까지 상상할 수 있는 모든 Linux 또는 Linux와 유사한 시스템에 영향을 미칩니다.

우분투와 같은 데비안 및 데비안 파생 디스트로의 경우 상당한 항의 끝에 변경이 어느 정도 번복되었다가 2017년 10월에 다시 복원되었습니다.

이 답변이 분명히 밝힌 바와 같이, 이러한 변화에 대한 실망감을 등록하는 가장 좋은 방법은 버그 보고서를 통해 코어유틸리티 개발자들에게 직접 연락하여 (정중하게) 그들이 큰 실수를 저질렀다고 주장하는 것입니다. 오픈 소스의 기풍에 따르면, 이론적으로 이전에 행동했던 방식이 적절하게 복원되어야 한다고 주장하는 사용자들의 비판적인 집단은 이론적으로 코어유틸리티 개발자들이 리눅스 커뮤니티에 귀를 기울이도록 설득하기에 충분해야 합니다.

[해결책] 2가지 방법 중 편한 것을 이용

1) 로그인 유저의 .bashrc파일에 아래 내용을 추가

export QUOTING_STYLE=literal

[참고] 전체 유저에 적용하고 싶다면 /etc/profile 파일 최하단에 추가하면 된다.

2) ls -N 명령어를 alias 설정

alias ls="ls -N"    ( -N, --literal print entry names without quoting)

위 내용을 적용을 희망하는 계정 내  .bashrc 파일에 추가한다.

원문 : http://www.openssh.com/legacy.html

If the client and server are unable to agree on a mutual set of parameters then the connection will fail. OpenSSH (7.0 and greater) will produce an error message like this:

Unable to negotiate with legacyhost: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1 

For the case of the above error message, OpenSSH can be configured to enable the 

diffie-hellman-group1-sha1

 key exchange algorithm (or any other that is disabled by default) using the 

KexAlgorithms

 option - either on the command-line:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 user@legacyhost 

or in the ~/.ssh/config file:

Host somehost.example.org 
KexAlgorithms +diffie-hellman-group1-sha1 

OpenSSH 7.0 이상에서는 해당 옵션이 기본으로 enable 되어 있지 않기 때문에옵션을 넣어줘야 한다.항상 넣기 귀찮으니 config를 만들어서 넣고 쓰도록 하자.config파일이 없으면 그냥 생성하면 적용 됨.

OpenSSH 버전확인 명령어 : ssh -V

출처: https://bluelimn.tistory.com/entry/ssh사용-시-diffiehellmangroup1sha1-관련 [ANMIAN:티스토리]