2014년 8월 29일 금요일

setuid, setgid 제거.

#test 디렉토리 생성.
[root@localhost src]# mkdir test\

#확인
[root@localhost src]# ll
합계 4
drwxr-xr-x 2 root root 4096 2014-08-28 16:30 test

#setuid 퍼미션 설정
[root@localhost src]# chmod 4000 test/

#확인.
[root@localhost src]# ll
합계 4
d--S------ 2 root root 4096 2014-08-28 16:30 test

#0000 8bit로 setuid 퍼미션 제거 시도.
[root@localhost src]# chmod 0000 test/

#확인. 제거가 안됨.
[root@localhost src]# ll
합계 4
d--S------ 2 root root 4096 2014-08-28 16:30 test

#심볼링 형식으로 제거 시도.
[root@localhost src]# chmod -s test/

#확인. 제거가 이루어 짐.
[root@localhost src]# ll
합계 4
d--------- 2 root root 4096 2014-08-28 16:30 test

참고 : http://linuxg.net/how-to-set-the-setuid-and-setgid-bit-for-files-in-linux-and-unix/

ps. 참고사이트에서도  0755 같은 형태로 앞부분에 0(zeroi)를 주면 삭제된다고 나옴...; 뭐지..

2014년 8월 27일 수요일

2014년 8월 25일 월요일

심볼릭 링크를 설정시 문제점.

심볼릭 링크를 설정시
타겟을 위치를 절대경로로 만들시 하위에 새로 생성되는 문제가 있다.

아래와 같이 명령어를 실행 했다.
ln -s /usr/local/mysql/data/ /var/lib/mysql

처음에는 제대로 /usr/local/mysql/data/ 디렉토리가 /var/lib/mysql 로 제대로 생성 되었다.

다시한번 실행해보자.
아무오류 없이 명령어가 적용된다.

/var/lib/mysql 위치로 들어가 보면 data 심볼링 링크가 생긴다.

제일 마지막의 '/' 주건 안 주건 상관 없다.
/var/lib/mysql/

그냥 속편히
cd /var/lib/
ln -s /usr/local/mysql/data/ mysql

이렇게 하면
ln: failed to create symbolic link `mysql/mysql': 파일이 있습니다
위와 같은 오류가 나온다.

심볼링 링크 삭제 시 주의점

symlinkFolder 가 심볼링 링크 파일일 경우

아래와 같이 하면 해당 파일의 하위까지 전부 지워버린다.
rm -rf symlinkFolder/

이런식으로 줘야 함.
rm symlinkFolder

2014년 8월 22일 금요일

mysql 에러 라인 출력.

mysql dump를 복구 하는데, 에러가 남.

근데, 어디서 에러가 나는 지 라인이 안나옴.

--debug  옵션을 주자.
mysql  --debug  database < database.sql

근데 에러남.

ERROR: Option 'debug' used, but is disabled

재컴파일 해야 된다고 함.
./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euckr --with-debug

mysql 4.1.22 버젼 이었음.

tar 압축 해제시 에러

tar 압축해제시 파일명에 특수문자가 있으면 에러가 남.

[root@backup]# tar zxvfp mysql_14-07-22_3\:48.tgz
tar (child): 원격 셸을 실행할 수 없습니다: 그런 파일이나 디렉터리가 없습니다
tar (child): mysql_14-07-22_3\:48.tgz: Cannot open: 입력/출력 오류
tar (child): Error is not recoverable: exiting now

gzip: stdin: unexpected end of file
tar: Child returned status 2
tar: Error is not recoverable: exiting now

 
해당 파일을 특수문자 없이 변경후 압축해제.
mv mysql_14-07-22_3\:48.tgz  mysql.tgz

2014년 8월 19일 화요일

mysql 4.0 to 5.1 업그레이드

frm 파일 자체를 옮겨서 시도.
실패.

mysqldump 로 시도.
mysqldump -u root-ppass -e --all-databases > DB_ALL.sql

아래와 같은 오류 발생.
ERROR 1064 (42000) at line 250: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN smallint(6) unsigned NOT NULL default '0',
  OUT smallint(6) unsigned NOT NUL' at line 18

정상적인 쿼리이나, IN 필드명이 mysql에서 사용하는 명령어라서 에러가 발생하는 것으로 보임.

테스트로 해당 테이블 필드를 모두 '로 감싸고 실행 했더니, 정상적으로 실행됨.

필드명를 '(따옴표)로 감싸줄 필요가 있음.

--quote-names 추가.
mysqldump -u kim01 -pwjqthr01 --opt --quick --quote-names --all-databases > DB_ALL.sql

결론.
-  mysql 간의 이동이라면 --opt 옵션를 사용하자. 복구 시간이 엄청 단축된다.
- --quote-names 를 사용하자.

참조 : http://start.goodtime.co.kr/2013/03/mysqldump-sql-%ED%98%B8%ED%99%98%EC%84%B1-%EB%86%92%EC%9D%B4%EA%B8%B0/