본문 바로가기

os/리눅스

(57)
unlink() 1 함수 원형 #include int unlink(const char *pathname); 2 동작 unlink 는 파일 시스템에서 pathname 이름을 가진 파일을 지운다. 만약 지우려는 파일이 파일에 대한 가장최근연결(링크가 오직 하나라면) 이며, 다른 어떠한 프로세스도 이 파일을 열고 있지 않다면, 파일은 지워지고, 파일이 사용한 공간은 사용가능하도록 파일시스템에 되돌려준다. 만약 지우려는 파일의 가장 최근 연결된 파일이지만, 이 파일을 다른 프로세스가 열고 있다면, 다른 프로세스가 이 파일을 닫을때까지 파일은 존재한체로 남게 되다. 만약 pathname이 심볼릭 링크파일이라면 연결은 제거된다. 3 return 성공할경우 0을 실패했을경우에는 -1을 반환하며, 적당한 errno 값을 설정한다. 4..
Race Condition Study on Race Condition---------------- 1. 머리말 유닉스는 멀티 유저를 지향한 매우 훌륭한 시스템이다. 여러 사람으로 하여금 정보를 공유할 수 있도록 잘 만들어져 있다. 그러면, 개인의 Privacy는 어떤 식으로 유지가 되는 것일까? 그것은 Permission, 그리고 password 등으로 가능하도록 구현해 놓았다. 그리고, 시스템 관리를 위해서 Root라는 superuser를 두어서 어떤 일이든 가능한 위치에 놓았다. 초기에 유닉스가 나타난 당시, 사용하는 유저가 그리 많지 않았고, 또한 흑심을 품은 해커도 별로 나타나지 않았으므로, 보안에 관한 관심이 별로 없었다. 그러나, 요즈음의 경우 사용자 편의를 위해 짜여진 프로그램이 거꾸로 시스템을 공격하는 무기고가 되고..
fork() 함수에 대해서.. Race Condition 문서를 읽으면 어김없이 나올수 밖에 없는 함수. 헤더 unistd.h 형태 pid_t fork(void); 반환 pid_t 실행에 실패하면 -1 을 반환. 부모에게는 새로 생성된 자식 프로세스 PID가 반환 되며, 자식 프로세스에는 0이 반환됩니다. fork()함수에 의해서 생성된 프로세서는 부모의 모든 값을 그대로 이어 받지만 프로세서 아이 디만이 틀릴뿐이다. fork()함수는 0으로 자식프로세서에게 아이디를 부여한다. 그러면 첫번째 자식 프로세서는 0이면 두번째 자식은 몇이 올것인가? 라는 문제의 식이다. 간단하게 프로그램을 짜보면 과연 결과값이 어떻게 나올것인지 곰곰히 생각해봐야한다.(처음이니까~) 결과가 어떠한가!! 처음엔 부모 프로세서가 다 돌고 두번째로 생성된 프로세..
/var/lib/dpkg/lock 잠근 파일을 얻을 수 없습니다. 에러~ E: /var/lib/dpkg/lock 잠금 파일을 얻을 수 없습니다. - open( 11 Resource temporarily unavailable) E: Unable to lock the administration directory (/var/lib/dpkg/), is another process 요런 에러는 apt-get install명령어로 실행중 에러가 나는 경ㅇ다. 대부분 시넵틱 관리자에서 업데이트하는중 나는 에러인데 Xwindows 상에서 실행되고 있는 업데이트를 모두 완료하고 다시 설치 하던가 시넵틱 관리자의 프로세서를 죽이고 하면 된다. 그래도 안된다면 #rm -rf /var/lib/dpkg/lock 명령어로 파일을 지운후 재부팅하면 된다. 리눅스를 하면서 신기한건 인스톨의 점유가 하나의..
리눅스 사용자 추가, 삭제 의외로 간단하네.. 사용자 계정 추가 root 계정에서 ./usr/sbin/useradd (추가할 사용자 계정명) passwd (추가한 사용자 계정명) New password : 패스워드 입력 다시 한번 패스워드 동일하게 입력 사용자 계정 삭제 ./usr/sbin/userdel (삭제할 사용자 계정명) 이렇게 하고 /home/ 디렉토리로 가보면 해당 계정의 디렉토리까지 생겨있다. 물론 모든 권한은 그룹으로 잡혀있어서 root의 권한부여없이는 사용불가능한 파일이 많다.
보안을 위해서~ Apache, PHP 버전 감추기 아시다시피 리눅스 커널과 Apache, php의 버전별 해킹 공략이 있을 정도니.. 이런건 않보여 주는게 상책이다. 일단은 Apache 버전정보는 httpd.conf에서 ServerTokens Full 을 ServerTokens Prod 로 변경해 준다. PHP버전 정보는 php.ini에서 expose_php = On 을 expose_php = Off 로 변경해주면 된다.
터미널에서 한글깨짐 & php에서 한글깨짐 -_- 이게 먼난리여.. 터미널에서조차 한글이 안되던 차에 이번에 손한번 봐야겠따!! #vi /etc/sysconfig/i18n LANG="ko_KR.eucKR" SUPPORTED="ko_KR.UTF-8:ko_KR:ko" SYSFONT="latarcyrheb-sun16" 고쳐주고~ #vi ~/.bashrc 파일에 다음을 추가 LANG="ko_KR.eucKR" SUPPORTED="ko_KR.UTF-8:ko_KR:ko" SYSFONT="latarcyrheb-sun16" export LANG SUPPORTED SYSFONT  터미널은 성공~ 이제 http와 php를 손봐야한다. #vi /etc/httpd/conf/httpd.conf AddDefaultChareset EUC_KR 요케 고친다.(UTF-8로 되..
ftp 사용자 계정 등록, 553 Could not create file. #adduser 계정이름 -d 경로(사용할경로) -s /sbin/nologin #passwd 계정이름 사용할 패스워드를 넣어주면 된다. 접속해서 파일을 올리려 하면 두둥! 553 Could not create file. -_-머지? 사용 원한이 없다는 것이다. #chown 계정이름 경로(사용할경로)#chgrp 계정이름 경로(사용할경로) 이케 해주면 잘된다~