posted by 구름너머 2015. 6. 9. 14:44

'UNIX' 카테고리의 다른 글

디렉토리 생성하기  (0) 2014.02.15
/dev/null 2>&1  (0) 2013.11.18
cp 파일복사  (0) 2013.06.07
Shared Memory vs Semaphore  (0) 2013.04.26
버퍼 오버 플로우 방지  (0) 2013.04.08
posted by 구름너머 2014. 2. 15. 19:40

디렉토리 자동 만들기

 

 

[ -d $DIR ]      || { echo "${DIR}     를 생성합니다." ; mkdir -m 777 $DIR;     };

'UNIX' 카테고리의 다른 글

awk 특수문자 출력히기  (0) 2015.06.09
/dev/null 2>&1  (0) 2013.11.18
cp 파일복사  (0) 2013.06.07
Shared Memory vs Semaphore  (0) 2013.04.26
버퍼 오버 플로우 방지  (0) 2013.04.08
posted by 구름너머 2013. 11. 18. 20:05

/dev/null 2>&1 

만약... 
nohup ${DIR}/bin/scheduler scheduler.ini >scheduler.out 2>&1 & 
으로 한다면은... 에러 메시지(stderr)은 scheduler.out 파일에 에러 메시지를 출력하지 않고 바고 
콘솔에다가 뿌려 줍니다. 
이건 stderr(2)이 버퍼를 이용하지 않고 에러가 생기는 즉시 바로 출력을 해주기 
때문입니다. 
이렇게 2>&1 리다이렉션을 시켜 줌으로 인해 stderr > stdout 으로 출력이 되고 
scheduler.out 파일에 에러 메시지가 저장이 되게 되는 것입니다. 

------------------------------------------------------------------------- 
2 >&1 의 의미. 

n >&m: 표준출력과 표준에러를 서로 바꾸기. 
0, 1, 2는 각각 표준입력, 표준출력, 그리고 표준에러를 의미합니다. 

2>&1의 의미는 표준 출력의 전달되는 곳으로 표준에러를 전달하라라는 
의미입니다. 
이것은 Bourne쉘 연산자이기 때문에 csh에서는 사용할 수 없답니다. 

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

 if ( ls -l $0 | grep $LOGNAME >/dev/null ) 
    여기서 /dev/null로 리다이렉션하는건 무었을 의미하나요? 

표준출력을 버리라는 뜻입니다. 이 부분에서 grep 명령을 사용하는 것은 
걸리는 것이 어떻게 생겼는지 보려는 것이 아니라 걸리는 것이 있는지 
없는지 알아내어 별도의 작업을 하려는 것이고 화면에 뭔가가 "뿌려지는" 
것은 막자는 것이죠. 

이런 용도로 grep을 사용할 때, -q, -s 등의 옵션을 사용할 수 있습니다. 
자세한 내용은 man grep. 

 nohup ${DIR}/bin/scheduler scheduler.ini >scheduler.out 2>&1 & 

 여기서 2>&1 & 은 무얼 의미하나요? 

앞부분의 "2>&1"은 표준오류 스트림을 표준출력으로 돌리라는(?) 뜻입니다. 
그냥 ">"를 기준으로 보면 "2"를 "&1"로 보내라는 뜻인데, 여기서 "2"는 
표준오류 스트림을 나타내는 번호이고 "1"은 표준출력을 나타내는 번호입니다. 
마지막 "&" 는 백그라운드로 실행하라는 뜻이구요.  

>/dev/null 은 출력을 /dev/null로 하겠다는 소리입니다. 
즉 출력이 안보이겠죠. 

>&1이 의미하는 것은 출력을 표준 출력에다가 하겠다는 소리입니다. 
<& 0은 당연히 표준 입력이 되겠죠. 
------------------------------------------------------------------------- 
이렇게 해서 열흘 이상 지난 파일들을 자동으로 삭제하는 셸 스크립트를 완성했습니다. 
정확히 말하자면, 최근 열 개 까지의 날짜 디렉토리를 남겨 두고 나머지를 삭제하는 거겠군요. 
이제 휴지통에 신경을 덜 써도 될 것 같습니다. 
#!/bin/sh 

cd ~/.Trash/ 
mytrash=`date +%F` 

mkdir ${mytrash} >/dev/null 2>&1; 
mv * ${mytrash} >/dev/null 2>&1; 
mv ${mytrash}/20??-??-?? . >/dev/null 2>&1; 

for dir in `ls -1d 20??-??-?? | sort -r | tail -n +11` 
do 
        rm -rf "${dir}" 
done 

'UNIX' 카테고리의 다른 글

awk 특수문자 출력히기  (0) 2015.06.09
디렉토리 생성하기  (0) 2014.02.15
cp 파일복사  (0) 2013.06.07
Shared Memory vs Semaphore  (0) 2013.04.26
버퍼 오버 플로우 방지  (0) 2013.04.08
posted by 구름너머 2013. 6. 7. 15:28

유닉스 명령어 : cp

파일복사시 원본과 동일 날짜로 복사하기

 

cp -f 소스파일 목적파일

 

-p  Preserves for the copy the modification time, access time, file mode,
      user ID, and group ID of the original, as allowed by permissions.  If
      the user ID and group ID cannot be preserved, no error message is
      displayed and the exit value is not altered.  If the original is set-
      user-ID or set-group-ID, and either the user ID or the group ID cannot
      be preserved, the set-user-ID and set-group-ID bits are not preserved
      in the copy's permissions. [Tru64 UNIX]  Preserves the extended file
      attributes (property list), including the access control list (ACL) if
      any.

'UNIX' 카테고리의 다른 글

디렉토리 생성하기  (0) 2014.02.15
/dev/null 2>&1  (0) 2013.11.18
Shared Memory vs Semaphore  (0) 2013.04.26
버퍼 오버 플로우 방지  (0) 2013.04.08
wc cat awk 의 조화  (0) 2013.02.28
posted by 구름너머 2013. 4. 26. 16:15

Shared Memory
여러 프로세스들이 공통적으로 사용하는 메모리
주로 오라클과 같은 대용량 데이터베이스를 사용하는 시스템에서 사용함
테이블이 크고 데이터 양이 많을 수록 Shared Memory는 크게 잡아주어야 함.
HP-UX 11.0의 경우, 32bit는 1.7G까지, 64bit는 2TB, 즉 거의 무한대에 가까울 정도로 허용함

Semaphore
Shared Memory와 같이 사용되는 개념으로 Shared Memory에 Access하는 Process들을 관리하는 영역이라고 할 수있음.오라클은 백그라운드프로세스들 간의 일치를 조절하기 위해서 semaphore를 사용한다.
다중 프로그래밍에서 데드 로크를 방지하고 시스템 자원을 공유하기 위해 E. J. Dijkstra가 제안한 동기화 방식 또는 그 신호
Semaphores(세마포어)는 동시에 두 개 이상의 프로그램이 실행될 수 있는 다중 프로그래밍 환경에서 한 순간에 반드시 하나의 작업에 의하여 접근되어야 하는 긴급 영역 및 상호 배제 원리를 지키기 위한 방법을 말한다.
Semaphores는 E. J. Dijkstra가 제안한 것으로 반드시 상호 배제의 원리가 지켜져야 하는 공유 영역에 대하여 각각의 프로세서들이 접근하기 위하여 사용되는 두 개의 연산 P와 V라는 연산을 통해서, 프로세서 사이의 동기를 유지하고 상호 배제의 원리를 보장할 수 있다.

Shared Memory와 Semaphore의 값을 지나치게 크게 잡으면 시스템이 부팅이 안될 수도 있으나, HP-UX의 sam에서 값을 변경하면 sam에서 일단 변경된 설정값이 적절한지 체크해 주기 때문에 시스템이 부팅이 안될 위험은 피할 수 있다.
sam에 있는 semaphore값은 16진수이므로 10진수로 변환해서 계산

'UNIX' 카테고리의 다른 글

/dev/null 2>&1  (0) 2013.11.18
cp 파일복사  (0) 2013.06.07
버퍼 오버 플로우 방지  (0) 2013.04.08
wc cat awk 의 조화  (0) 2013.02.28
UNIX 1회성 작업 예약하기 : at  (0) 2013.02.28
posted by 구름너머 2013. 4. 8. 09:50

1. 설 명
지정된 버퍼의 크기보다 큰 데이터를 저장함으로써 실행 시 오류를 발생시키는 취약성을 말한다

2. 발생원인
▪ 외부로부터 입력된 데이터(사용자 입력, 홖경변수, Command-line 파라미터, 파읷 등)를 버퍼에 곧바로 입력할 경우
▪ 입력값을 큰 버퍼에서 작은 버퍼로 복사할 경우

3. 영향도
▪ 프로그램이 버퍼 오버플로우를 내재하고 있을 경우, 해커는 이 공격을 이용하여 자싞이 원하는 실행코드를 수행할 수 있고, 이 취약점을 이용해 쉘 코드를 실행함으로써 원격에서 Shell을 얻을 수 있게 된다.
▪ 웹 서비스나 웹 서버 자체에 심각한 영향을 초래할 수도 있으며, telnet과 같은 원격 접속 프로그램에 적용된다면, 암호가 틀려도 접속이 가능하게 되는 현상이 발생할 수 있다

4. 조치방법
▪ 입력 값에 대한 검증 (범위 및 유효성 검사)
▪ 경계값 체크를 하는 적젃한 함수 사용 (strncpy(), strncat(), snprintf(), fgets() 등)
▪ 웹 서버와 웹 애플리케이션 서버 제품굮 혹은 읶터넷 홖경 상에서 사용되는 제품들에 대해 최싞의 버그 리포트를 지속적으로 참고하여, 해당 제품굮의 최싞 패치를 적용하여야 한다.

5.코드 예

아래는 Pro*C에서의 예입니다.

취약한 함수 사용 예 ====> 안전한 함수 사용 예

--------------------------------------------------------------------------
void func(char *str) {
char buffer[256];

strcpy()

return;
}

void func(char *str) {
char buffer[256];
strcpy(buffer, str);
return;
}
--------------------------------------------------------------------------

void func(char *str) {
char buffer[256];
strcat(buffer, str);
return;
}

void func(char *str) {
char buffer[256];
strncat(buffer, str, sizeof(buffer)-1);
return;
}

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

void func(char *str) {
char buffer[256];
sprintf(buffer, "%s", str);
return;
}

void func(char *str) {
char buffer[256];
if(snprintf(target, sizeof(target)-1, "%s", string) > sizeof(target)-1)
/*....*/
return;
}

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

void func(char *str) {
char buffer[256];
gets(buffer);
return;
}

void func(char *str) {
char buffer[256];
fgets(buffer, sizeof(buffer)-1, stdin);
return;
}

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

* scanf() ,sscanf(),fscanf() *

void func() {
char buffer[256];
int num;
num = fscanf(stdio, "%s", buffer);
return;
}

void func() {
char buffer[256];
int num;
num = fscanf(stdio, "%255s", buffer);
return;
}

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

'UNIX' 카테고리의 다른 글

cp 파일복사  (0) 2013.06.07
Shared Memory vs Semaphore  (0) 2013.04.26
wc cat awk 의 조화  (0) 2013.02.28
UNIX 1회성 작업 예약하기 : at  (0) 2013.02.28
보안 & 트랙킹  (0) 2012.12.27
posted by 구름너머 2013. 2. 28. 14:59


[dms20:/file_pbs/201301] wc -l nPSS00NSIC201301011541.IS
      40 nPSS00NSIC201301011541.IS

 

[bdms20:/file_pbs/201301] cat nPSS00NSIC201301011541.IS | wc -l
      40

 

[dms20:/file_pbs/201301] wc -l nPSS00NSIC201301011541.IS | awk '{print $1}'
40

'UNIX' 카테고리의 다른 글

Shared Memory vs Semaphore  (0) 2013.04.26
버퍼 오버 플로우 방지  (0) 2013.04.08
UNIX 1회성 작업 예약하기 : at  (0) 2013.02.28
보안 & 트랙킹  (0) 2012.12.27
리눅스/유닉스 OS 32bit or 64bit 확인방법  (0) 2012.12.20
posted by 구름너머 2013. 2. 28. 13:36

1. UNIX 1회성 작업 예약하기
$>at now + 1 minute 또는 minute[s], hour[s], day[s], week[s], month[s], year[s]
내용입력
Ctrl + d 로 입력 종료
$>

2. 예약된 작업 보기
$>atq

3.예약된 작업 취소하기
작업번호는 atq로 조회된 값을 복사.
$>at -r 작업번호

'UNIX' 카테고리의 다른 글

버퍼 오버 플로우 방지  (0) 2013.04.08
wc cat awk 의 조화  (0) 2013.02.28
보안 & 트랙킹  (0) 2012.12.27
리눅스/유닉스 OS 32bit or 64bit 확인방법  (0) 2012.12.20
리눅스 GUI 인터페이스 부팅  (0) 2012.12.12