2010년 4월 4일 일요일
아웃포커싱 관련 내용
2010년 3월 23일 화요일
이거 넘 재밌어서..퍼왔음..(오마이뉴스)
긴급뉴스입니다! 지난주부터 한명숙 전 국무총리 공판이 진행되고 있는데요, 이 공판을 지켜보던 한 누리꾼이 "의자를 구속하라"며 '의자구속국민연대'를 조직했다는 소식입니다.
이번 '의자구속' 논란은 한명숙 전 총리에게 뇌물을 준 혐의로 기소된 곽영욱 전 대한통운 사장의 법정 증언 때문에 빚어졌는데요. 곽 전 사장은 이전 검찰 조사에서 "석탄공사 사장에 임명될 수 있게 해달라며 5만 달러를 한 전 총리에게 건넸다"고 진술했는데, 이번 법정에선 이 진술을 뒤집으며 돈을 "의자에 두고 나왔다"고 밝혔습니다. 그리곤 한 총리가 이것을 봤는지는 기억이 안 난다고도 덧붙였습니다.
이 소식을 접한 누리꾼들, 앞 다퉈 "의자를 기소하라"(에이왁스, DJUNA의 영화낙서판)며 연대 조직을 선언하고 나섰습니다. 때문에 죄 없는 '의자'만 구속당할 처지에 놓였는데요. '2010 댓글늬우스', 이 건에 대한 자세한 소식 전해드리면서 시작합니다.
[한명숙 전 총리 공판] "돈 받은 의자를 출국 금지해야"
| ||||||
자신의 진술을 뒤집은 곽영욱 전 사장의 '의자' 발언에 검찰수사는 점점 '코미디'가 돼가고 있습니다. 곽 전 사장이 두고 나온 돈을 본 건 '의자'뿐인지라, '의자'를 법정에 세워야할 처지에 놓인 검찰. 좀 난감할 것 같은데요. 이런 검찰의 심정을 잘 헤아렸는지, 누리꾼들이 먼저 나서 '의자구속국민연대'를 만들었습니다. 누리꾼들은 아주 구체적으로 의자를 잡을 수 있는 방법을 검찰에 제시하기도 했습니다. 한 번 들어보시죠.
"돈 받은 의자를 구속해야 한다. 의자가 확실하게 받은 건 전 국민이 확인했으니 일단 의자를 출국 금지해야 한다. TV에 나왔으니 몽타주도 필요 없다.<의자구속 국민연대>" (이단, 오마이뉴스)
하지만, 뜬금없이 죄인(혹은 죄물)이 된 '의자'는 억울함을 감출 수 없었을 텐데요. 이에 누리꾼들은 궁지에 몰린 '의자'의 입장을 적극 옹호하며 약자를 보호하는 센스를 발휘하기도 했습니다.
"의자 : 곽 사장이 거기에 돈을 내려놓았을 뿐이다. 나는 잘못 없다."(타보, DJUNA의 영화낙서판)
"의자를 욕 보이지마라. 니들이 언제 남 궁둥이에 깔려보기나 했나?" (이윤형, 네이트)
| ||||||
한편, 이 건과 관련된 또 다른 정황도 속속 드러나고 있어 주목됩니다. 이번 공판을 보도하던 한 언론은 "곽영욱 전 사장이 2004년 총선 때 한 전 총리에게 후원금 100만 원을 냈으며, 한 전 총리는 곽 전 사장의 아들 결혼식 때 축의금 10만 원을 냈다는 정황이 드러났다"고 전했습니다. 아… 좀 안타까운데요. '5만 달러'는 대체 어디 가고, '100만 원', '10만 원'만 남은 걸까요. 하지만 이 보도는 '누리꾼 수사대'에게 곽 전 사장의 속마음을 눈치 챌 수 있는 한 가지 '결정적' 단서(?)를 제공했습니다.
"곽 사장은 삐진 거다. 후원금으로 100만 원이나 줬더니 자기 아들 결혼식 때 10만 원 밖에 안 내고 그래서 보복 하는 거다. 쳇 속 좁은 인간."(wing****, 네이버)
최근 벌어지고 있는 공판에서 진술을 완전히 뒤집으며 검찰 수사를 '안드로메다'로 보내버린 곽 전 사장, 정말 대단한데요. 곽 전 사장은 현재 5만 달러를 건넨 시기도, 청탁 사실 자체도 번복하고 있습니다. '번복'만 '반복'되며 밝혀지는 것 없이 미궁으로 빠지고 있는 공판에 누리꾼들도 지쳐가는 눈치인데요. 답답함을 참지 못하던 누리꾼들, 수사를 담당한 검찰을 향해 '이렇게' 소리쳤습니다.
"법정에서 개그 콘서트하냐?! 법정이 콘서트장이야? 재판관이 MC야?? 이거 아니자나!! (bgg0****, 네이버)
"너희들이 쓰는 검~자가 돼지 등에 검은 아니겠지??"(칠봉달, 다음)
"이게 유죄면 사람들이 청와대 앞에 백만 원씩 놓고 갔다고 드립(발언이나 시도를 낮추어 이르는 말)치면 이명박이 유죄가 되는 건가? 많은 걸 안 바란다. '상식'을 가져라" (이현섭, 네이트)
[MB 독도 발언] "그럼 정식으로 요미우리를 고발 하세요"
| ||||||
지난 주 댓글폭풍 기사, 기억하십니까? 최근 일본 <요미우리신문>이 "2008년 이명박 대통령이 후쿠다 야스오 당시 일본 총리에게 (독도를 '다케시마'로 표기하는 것을) '기다려 달라'고 했다는 보도는 허위사실이 아니다"라고 밝혔는데요. 포털사이트 다음에 이 사건을 최초 보도한 <국민일보>기사가 올라가자 19일 현재 댓글이 13만개가 넘게 달렸습니다.
누리꾼들은 "이 시대 최고의 어록 기다림의 미학 '지금은 곤란하다 조금만 기다려 달라'"(이정근, 네이트)라며 이명박 대통령의 발언을 명언으로 꼽고 있는데요. 지난주에 이어 이번 주에도 '기다려 달라' 패러디가 많이 등장했습니다.
"[명언] 성웅 이순신 : 나의 죽음을 알리지 말라.
설치 이명박 : 지금은 곤란하니 기다려
달라."(꿀술, 다음)
누리꾼들의 이런 '명언' 칭찬에 탄력 받은 걸까요. 청와대 대변인도 나섰습니다. 16일, 누리꾼 앞에 선 청와대 대변인은 독도는 민감한 이슈라며 "우리 언론에 의해서 이렇게 제기되고 있는 현실이 참 갑갑하다"고 불편한 속내를 드러냈습니다.
아, 이건 뭔가요. 청와대의 이런 '갑갑한' 소식을 전해들은 누리꾼들, 드라마 <다모> 명대사를 패러디했는데요. 누리꾼들의 한숨 소리, 함께 들어보시죠.
"너도 갑갑하냐? 나도 갑갑하다! 국내 방송사를 그렇게 팼으면서(MBC PD수첩), 일본 언론에 대해서는 그렇게 너그럽게 구는 이유가 대체 뭐냐?"(잡초, 다음)
<요미우리신문>의 발언이 사실이 아니라면 청와대가 '오보'를 한 일본 신문에 강경하게 나갔어야 한다는 누리꾼들의 지적, 아주 굿입니다. 이번 건과 관련해서는 언론들도 비난의 화살을 피할 수 없었는데요. 몰랐던 건지, 알면서도 보도를 안 한 건지를 모르겠는 언론들에게 보내는 누리꾼들의 외침이 따갑습니다.
"노무현 대통령은 앞 뒤 내용 다 자르고 '대통령 못해먹겠다'만 쏙 뽑아서 대서특필하더니, 조중동은 '기다려 달라' 대서특필 안 하냐, 자냐?"(heemut, 다음)
이번 일이 나쁜 영향만을 준 건 아닌가봅니다. 이명박 대통령이 일본에 대한 국민들의 인식을 '우호적'으로 바꾸기 위해 일부러 그런 걸까요. "각하 때문에 난생 첨으로 일본신문을 믿게 됐다"(시민, 다음)는 누리꾼도 등장했습니다. 하지만 이미 '불신의 늪'에 빠진 이들의 마음을 돌릴 해결책은 떠오르지 않는데요. 누리꾼 한 명이 "그럼 정식으로 요미우리를 고발 하세요"(조르바, 다음)라는 명쾌한 해결책을 청와대에 제시했습니다. 역시 우리 누리꾼들 문제 해결 능력, 탁월합니다.
[문광부 '회피연아' 고소] "웃자고 한 일에 죽자고 덤비는..."
| ||||||
17일, 밴쿠버 겨울 올림픽의 열기가 잦아든 이 시점에 문화체육관광부(문광부)가 우리 국민여동생, '피겨여왕' 김연아 선수를 '실시간 이슈검색어' 반열에 올려놨습니다. 이게 다 유인촌 문광부 장관님 덕인데요. '정말 뜬금없다'고 생각하실 여러분을 위해 설명을 드리자면, 사건의 발단은 이렇습니다.
지난 2일, 밴쿠버 겨울올림픽 선수단이 귀국한 날이었죠. 마중 나온 유인촌 문광부 장관이 김연아 선수와 포옹하려 하자 김연아 선수가 살짝 어깨를 빼는 동영상이 '회피 연아'라는 제목으로 인터넷을 떠돌았는데요. 누리꾼들 사이에서 재미있는 동영상쯤으로 여겨지던 '회피 연아'. 그런데 문제가 커졌습니다. 17일 문광부가 동영상을 편집해 올린 누리꾼을 명예훼손 혐의로 경찰에 고소했기 때문이죠. 문광부는 "(유 장관이) 성추행하려 했다고 왜곡"했다고 말하고 있습니다.
이번 정부는 '명예훼손 고소의 달인'들만 모아놓은 걸까요. 2008년엔 농림수산식품부(농림부)가 '<PD수첩> '광우병'편으로 인해 명예가 훼손됐다'며 제작진을 고소하기도 했었는데요. 이 건은 지난 1월, 법원이 "PD수첩 무죄" 결론을 내려 이슈가 되기도 했습니다. 이번 문광부의 '고소' 소식을 접한 누리꾼들의 반발은 어떤 내용일까요?
"제 발 저린 격"(우병욱, 네이트)
"동영상 보고 아무도 성추행이라고 생각 안 했는데 자백하는 것도 아니고."(풋, 다음)
"이런 게 있는지도 몰랐는데, 문광부에서 신속하게 유포하고 계신 걸로 보입니다."(서민지, 네이트)
"4800만 명 고소할 기세."(곽동영, 네이트)
"2010년은 고소가 유행이냐? 너도 나도 고소로 대동단결. 고소하기 참 쉽다. 판사, 변호사 일거리 늘려주기 프로젝트냐? 그것도 취업향상이라면 할 말 없네"(시도때도없이, 디시인사이드)
"웃자고 한일에 죽자고 덤비는 아마추어 정권"(hankboy, 다음)
하지만 이런 '고소'에 아무리 간 큰 누리꾼들이라고 해도 긴장하지 않을 수 없겠죠. "베플 추천했다고 고소당하는 건 아니겠죠?"(강은주, 네이트) 한 마디로 '고소'공포증이 생긴 건데요. 이 댓글 '대박' 공감합니다.
한편 이번 뉴스 댓글에는 난데없는 인물들이 툭툭 등장해 고개를 갸우뚱하게 만들었는데요. "코난, 제이, 콜베어, 스튜어트, SNL(부시를 강하게 비꼬고 풍자한 인물·방송)을 모두 참아낸 부시는 진정한 사나이, 세계 최고의 남자"(morcheeba, DJUNA의 영화낙서판)라고 부시를 추켜세우는 글부터 "최불암씨 자식교육을 어떻게 시키셨음? a/s 해주셔야 할 듯"(행복한인터넷, 다음)이라고 죄 없는 최불암씨를 질타하는 목소리까지. 어서 빨리 정부의 '고소질주본능'이 잠잠해지길 기대해 봅니다.
[안상수 "좌파교육" 발언] "서유럽은 성폭력 대박 터지겠네요"
| ||||||
마지막 소식은 안상수 한나라당 원내대표의 "좌파교육" 발언 관련입니다. 16일, 바른교육국민연합 창립대회에 참석한 안 원내대표는 귀를 의심할 만한 발언을 했습니다.
"10년간의 좌파정권 기간 동안에 편향된 교육이 이루어졌습니다.... 이런 잘못된 교육에 의해서 그야말로 극악무도한 흉악범죄들, 아동 성폭력 범죄들까지 생겨나고 있는 것입니다."
아…. 제가 잘못 들은 건 아니겠죠. <오마이뉴스> 보도로 알려진 이 소식이 일파만파 퍼지자 안 원내대표는 "<오마이뉴스>가 왜곡보도를 했다"고 진화에 나섰는데요. 불길은 잡히긴커녕 더 번져나가는 모양샙니다. 이를 들은 누리꾼들은 '발끈' 했는데요.
"서유럽은 성폭력 대박 터지겠네요."(유가당, DJUNA의 영화낙서판)
"그럼 북한은 강간의 왕국인가요." (fanpan, DJUNA의 영화낙서판)
"좌파교육이라니, 그럼 우리나라 20대층은 전부다 강간범이란 소리냐?" (최태욱, 네이트)
| ||||||
안 대표의 말이 전해지자 노회찬 진보신당 대표는 16일 한 라디오방송에서 "안상수에게 전자발찌 채워야"한다고 말했는데요. 그러자 한 누리꾼은 "전자 발찌→전자구찌 or 전자입찌"(無心草, 오마이뉴스)라 대꾸했습니다.
반면, 아주 재밌었다면서 "한나라당의 묘미는 역시 자폭이죠 ㅋㅋ" (송호진, 네이트), "개콘보다 정치가 더 재밌다, 한 치 앞을 예상할 수 없는 창의적인 발언들"(배지성, 네이트)라고 안상수 원내대표에게 감사를 전한 누리꾼들도 있었습니다. 이렇게라도 즐거움을 주셨으니 고맙다고 해야 할까요. 하지만 뒷맛이 씁쓸합니다.
이번 주 '2010 댓글늬우스'가 준비한 소식은 여기까지입니다. 끝으로, 지난 주에 도착한 사연 하나 소개하고 마무리 하겠습니다.
"Welcome back. 추카 추카 방가 방가. 앞으로 댓글 더 열심히 달자. 봄은 짧고 우리가 기다리던 여름의 문턱, 6월이 다가 오기 때문이다."(선지자, 오마이뉴스)
'댓글늬우스'가 사라진 이유에 대해 궁금해 하던 누리꾼 '선지자'. 돌아온 '댓글늬우스'에 환영의 댓글을 달아줬는데요. 그의 말마따나, 열심히 댓글 달아주십시오. 당신의 '촌철살인' 댓글 한 개가 '댓글늬우스'를 빛낸다는 거 잊지 마시고요. 다음 주엔 더 큰 '의미+재미'를 가지고 찾아뵙겠습니다. 고맙습니다.
2010년 2월 17일 수요일
MS Outlook에서 exe파일 받기
MS Outlook을 사용하면서 위 그림과 같은 경우, 즉 "보안상 안전하지 않을 수 있으므로...."
경고메세지와 같이 첨부파일을 PC에 저장하지 못하는 경우가 종종 발생한다.
이유는 MS에서
Outlook의 보안강화를 적용한 이후(2000년 6월 7일)부터이다.
이 경우 첨부파일을 PC에 저장할 수 있는 방법은
다음과 같다.
1. 시작 > 실행 > regedit 실행
2. HKCU > Software > Microsoft
> Office > {Version} >
Outlook > Security
(Version은 MS Office의 버전이다. 2007 버전은 12.0, 2003 버전은
11.0, 2002 버전은 10.0)
3. 편집 > 새로 만들기 > 문자열 값 {Level1Remove}
4.
Level1Remove를 더블 클릭하여 확인하려는 첨부파일의 확장자를 등록
예) .exe;.msi;.reg
5.
regedit를 적용한 이후 MS Outlook을 재시작
2010년 2월 11일 목요일
리눅스의 구조
3.1 파일 시스템
파일 시스템이란 운영제제가 파일을 시스템의 디스크상에 구성하는 방식을 말한다. 운영체제는 시스템의 디스크 파티션상에 파일들을 연속적이고 일정한 규칙을 가지고 저장하는데 파일 시스템은 이러한 규칙들의 방식을 제시하는 역할을 한다. 또한 파일 시스템은 시스템 디스크나 파티션 그라고 파일 시스템의 형식을 말할 경우에도 쓰일 수 있다. 파티션과 파일 시스템은 다른 것이다. 파일 시스템은 파티션을 구성해 주는 역할을 한다. 파일 시스템을 포함하지 못한 파티션은 파일 시스템을 사용될 수 있도록 초기화되고 파일 정보를 기록하기 위한 형식을 만들어야 한다. 이 과정을 거쳐야 파티션은 파일 시스템으로 사용될 수 있다.
3.1.1 파일 시스템의 구조
◎ 슈퍼블록(super block)슈퍼블록(Super Block)은 파일 시스템에 의존하는 정보를 가지며 파일 시스템의 크기 등과 같은 파일 시스템의 전체 적인 정보를 가지고 있다.
◎ 인노드(inode)
인노드(inode)는 파일의 이름을 제외한 해당 파일의 모든 정보를 가지고 있다. 파일 이름은 인노드 (inode)번호와 함께 디렉토리 안에 저장된다.
◎ 테이터 블록(data block)
데이터 블록(data block)은 인노드에 포함된다. 인노드가 몇 개의 데이터 블록을 포함하고 있다. 데이터 블록은 파일에서 테이터를 저장하기 위해서 사용된다.
◎ 디렉토리 블록(Directory Block)
파일 이름과 인노드번호를 저장하기 위해서 사용된다.
◎ 간접 블록(Indirection Block)
간접블록은 추가적인 테이터 블록을 위한 포인터들이 사용할
동작으로 할당되는 공간이다. 실제적으로 인노드는 적은 수의 테이터 블록을 가지고 있다. 그러므로 더 많은 데이터 블록이 필요할
경우 이를 지정할 포인터가 필요하게 되는데 그때 포인터들이 사용할 동적인 블록이 간접 블록이다.
◎ 홀 (Hole)
홀은 인노드나 간접 블록안의 테이터 블록의 주소로 특별한 값을 저장한다.홀은 파일
시스템에 의해서 파일안에 자리하게 된다. 하지만 이 홀을 위해 실질적으로 디스크 상에 공간은 할당되지 않는다. 단지 0바이트가
파일 안에서 특정 공간을 차지하고 있더라고 가정하는 것이다.
@ EXT2
◎ EXT2 인노드인노드는 파일시스템의 가장 기본되는 단위이다. 또한 각각을 구분할 수 있는 고유 번호를 가지고 파일의 테이터가 어느 블록에 어느 위치에 저장되어 있는지, 파일에 대한 접근 권한, 파일의 최종 수정시간 그리고 파일의 종류등의 정보를 innode 테이블에 저장한다. 저장되는 정보는 모드, 소유자 정보, 크기, 타임 스템프, 테이터 블록이다. 모드(mode)에는 인노드가 속한 파일에 대한 정보와 파일에 대한 접근 권한 정보가 저장된다. EXT2 에서 인노드는 단지 하나의 파일, 디렉토리, 심볼릭 링크, 블록 장치, 문자 장치 등만을 나타낸다. 소유자 정보 (Owner Information)는 파일과 디렉토리에 대한 소유자와 그룹에 대한 식별자를 나타낸다. 소유자 정보를 사용하여 파일이나 디렉 토리에 대한 접근 권한을 관리 할 수 있다. 크기(size)는 파일의 크기 정보를 저장한다. 파일에 대한 크기 정보는 바이트 단위로 저장된다. 타임 스템프 (timestamps)는 인노드가 생성된 시간과 최종적으로 수정을 가한 시간에 대한 정보를 저장한다. 데이터 블록(Data Blocks)은 인노드가 지정하고 있는 데이터 블록에 대한 포인터를 저장한다. 데이터블록에는 총 15개의 포인터가 존재하는데 이 포인터들 중에서 선행의 12개 포인터는 해당 인노드가 지정하고 잇는 데이터에 대한 실제 블록에 대한 포인터 정보를 가지고 있다. 나머지 3개의 포인터는 높은 수준의 간접 연결에 대한 정보를 가지고 있다. 인노드 또한 실제로 존재하지는 않지만 시스템의 장치에 접근할 수 있는 특별한 장치 파일의 표현에도 사용된다. 리눅스 시스템의 /dev 디렉토리 안에 위치하는 파일들이 그것들이다.
◎ EXT2 슈퍼블록
슈퍼블록(Super Block)은 해당 파일 시스템의 기본적인 크기나 형태에 대한 정보를
저장한다. 파일 시스템 관리자는 이 슈퍼 블록의 정보를 이용하여 파일 시스템을 활용하고 유지할 수 있다. 슈퍼 블록에 저장되는
정보의 항목은 다음과 같다. 매직 넘버(Magic Number)는 마운트하는 소프트웨어에게 EXT2파일 시스템의 슈퍼 블록임을
확인 하게 하는 값이다. 개정 래벨(Revision Level)개정 래벨은 메이저 레벨과 마이너 래벨로 구성되어 있음 개정
래벨의 역할은 마운트 프로그램이 어떤 특정한 버전에서만 지원되는 기능이 이 파일 시스템에서 지원되는지에 대한 확인을 위해
사용된다. 또한 개정 레벨은 기능 호환성 항목을 포함하여 마운트 프로그램이 해당 파일 시스템에서 안정적으로 사용할 수 있는
기능이 무엇인지를 판단할 수 있는 기준을 제공한다.파운트 횟수(Mount Count)와 최대 마운트 횟수(Maximum
Mount Count)의 두 가지 정보를 이용하여 파일 시스템 전체를 검사할 필요가 있는지를 확인할 수 있다. 마운트 횟수는
마운트가 실행될 때마다 1씩 그 값이 증가하여 만약 마운트 횟수가 최대 마운트 횟수에 도달하게 되면 시스템은 e2fsck를
실행하라는 메시지를 내보낸다.블록 그룹 번호(block Group Number)는 슈퍼 블록 복제본을 가지고 있는 블록 그룹의
번호를 나타낸다.블록 크기(Block size)는 파일 시스템의 블록 크기를 바이트 단위로 표시한다.그룹 당 블록수(Blocks
per Grop)는 하나의 그룹에 속한 블록의 수를 나타낸다.이 수는 블록의 크기와 마찬가지로 파일 시스템을 만들 때 결정된다.
프리 블록(Free Block)파일 시스템 내부적으로 존재하는 프리 블록의 수를 나타낸다. 프리 인노드(Free inode)파일
시스템 내부적으로 존재하는 프리 인노드 수를 나타낸다. 첫 인노드(Frist inode)파일 시스템 내부적으로 존재하는 첫번째
인노드 번호를 나타낸다. 리눅스 시스템에서 첫 번째 인노드는 "/"디렉토리에 디렉토리 엔트리를 나타낸다.
◎ EXT2 그룹 기술자(Group Descriptor)
그룹기술자는 블록 그룹에서 블록의 할당 상태를
나타내주는 비트맵으로 그 수는 블록의 수와 동일하다.블록 비트맵은 블록을 할당하거나 해제할 경우 참고 되는 정보다.그룹 기술자에
저장되는 항목은 블록비트맵,인노드 비트맵,인노드 테이블이다.블록 비트맵(Block Bitmap)은 블록 그룹에서 블록의 할당
상태를 나타내주는 비트맵으로 그 수는 블록의 수와 동일하다 블록 비트맵은 블록을 할당하거가 해제 할 경우 참고되는 정보다.인노드
비트맵(inode Bitmap)은 블록 그룹에서 블록의 인노드 할당상태를 나타내 주는 비트맵으로 그 수는 블록 비트맵과 같이
블록의 수와 동일하다. 인노드 비트맵은 인노드를 할당하거나 해제할 경우 참고 되는 정보이다.인노드 테이블(innode
Table)은 블록 그룹의 인노드 테이블에서 시작 블록을 나타내며 그 수는 블록의 수와 동일하다.이외에도 프리 블록 개수,프리
인노드 개수,사용된 디렉토리 개수가 있다.그룹 기술자는 연속적으로 나타나서 전체적으로 하나의 그룹 기술자 테이블을 형성하게
된다. 각 블록 그룹에는 슈퍼블록 바로뒤에 그룹 기술자 테이블 전체가 위치 하게 된다.하지만 실제로 EXT2 파일 시스템에서
사용되는 블록 그룹이'0'인 첫 번째 복사본이다. 나머지는 예상치 못한 시스템의 손상에 대비해 시스템 복구를 위해 준비하고 있을
뿐이다.
◎ EXT2디렉토리
EXT2파일 시스템에서 디렉토리는 파일에 대한 접근 경로를 생성하고 저장하는 특별한 의미의 파일로 취급된다.
디렉토리는 엔트리의 리스트로 나타내어 지며,엔트리 리스트에 저장되는 정보는 인노드,이름길이,이름이다.
인
노드 (inode)는 디렉토리 엔트리에 해당하는 인노드를 나타낸다.인노드 값은 블록 그룹의 인노드 테이블에 저장되어 잇는 인노드
배열에 대한 인텍스 값이다.이름길이(Name Length)는 디렉토리 엔트리의 길이를 바이트로 나타낸것을
의미한다.이름(name)은 디렉토리의 이름을 나타낸다. EXT2파일 시스템에서 모든 디렉토리에서 처음 두 엔트리는 항상
"."과".."으로 시작한다 "."은 현재 디렉토리를 의미하며,".."은 상위 디렉토리인 부모 디렉토리를 의미한다.
@ EXT3
◎ EXT3로 포팅 동기기존의 EXT2는 캐시에 저장되어 있는 테이터들을 디스크로 저장하는 도중 만약 시스템이 다운되거나 여러 가지 문제가 발생할 경우 파일 시스템이 손상되는 단점을 가지고 있었다. 이를 위해 EXT2는 fsck(File System Check)라는 파일 시스템 복구 기능을 제공한다. 하지만 이 복구 방법은 복구하는데 시간이 만이 소요되는 문제점을 가지고 있다. 파일 시스템의 크기가 크다면 복구하는데 오랜 시간이 걸릴 뿐만 아니라 복구하는 동안시스템을 사용하지 못한다. 또한 슈퍼 블록에 마운트 횟수를 저장하는 영역이 있어서 마운트 횟수가 일정횟수 이상이 될경우에도 자동으로 fsck를 실행하게 된다. EXT3파일 시스템은 이러한 단점을 보안하기 위해서 저널링(Journaling)이라는 기능을 추가 해서 소개된 파일 시스템이다. 시스템의 무결성은 물론 뛰어난 복구 기능까지 가질수 있게 되었다. 또한 EXT2는 기능적인 측면보다는 파일 시스템의 휴율과 퍼포먼스에 중점을 두고 디지안된 파일 시스템이다. 그래서 EXT2는 파일의 내용과 파일에 대한 허가권, 소유권, 생성과 접근 시간과 같은 메타 데이터를 동기화 하지 않는다. 이럴경우 방생하는 문제는 파일의 내용을 수정도중 시스템의 문제가 생길 경우 해당 파일의 메타 데이터와 내용이 일치 하지 않는 문제점이 발생한다. 이것을 보안한 것이 저널링 기술을 이용한 EXT3 파일 시스템이 대두한 것이다.
◎ 저널링(Journaling)기술이란?
데이터를 디스크에 쓰기 전에 로그에 데이터를 남겨 시스템의 비정상적인
셧다운에도 로그를 사용해 fsck보다 빠르고 안정적인 복구기능을 제공하는 기술이다. 기존 EXT2 파일 시스템의 경우에는
시스템이 동작을 멈추기 바로 직전에 파일 시스템에 어떤한 수정을 가하고 있었는지 전혀 알 수 없다. 때문에 복구하기 위해서는
fsck에 의해서 관리되는 슈퍼 블록, 비트맵, 인노드 등을 모두 검사해야 하기 때문에 시간이 오래 걸렸다. 저널링 기술은
사용한 파일 시스템의 경우 파일을 실제로 수정하기 전에 우선 로그에 그 수정된 내용을 저장하기 때문에 복구하기 위해서 로그만
검사하면된다. 로그를 바탕으로 다시 실제 파일 시스템에 수정 내용을 적용하기 때문에. 속도와 복구 안정성이 더욱 뛰어나다.
이런한 동작 수행을 리플레이(Replay)이라고 한다. 만약 해당 로그에 저장된 내용이 불안정할 경우에는 복구 자체를 포기하기
때문에 파일 시스템이 불안정한 상태로 되지 않는다. 파일 시스템에 수정을 가하기 전에 우선 로그에 저장하는 이러한 파일 시스템의
특성 때문에 Log-Ging 파일 시스템이라 부르기도 한다.
◎ 저널링 파일 시스템의 구조
저널링 파일 시스템의 구조는 로그 영역과 일반적인 파일 시스템 영역으로
나눌 수 있다. 로그 영역은 파일 시스템에 대한 수정을 위한 로그 데이터를 저장하기 위해 그리고 파일 시스템영역은 관리 영력과
테이터 영역으로 구성되어 있다. 저널링 파일 시스템은 일반 적인 파일 시스템에 로그 영역을 추가 한 구조이므로, 저널링 기능을
제거하고 일반적인 파일 시스템과 같이 사용할 수도 있다. 로그(Log)는 원형의 버퍼 구조 형태로 순환적으로 데이터들이
저장된다. 버퍼의 끝에 도달하면 데이터들은 다시 버퍼의 가장 앞쪽에 저장되는 구조이다. 로그상에는 테이터를 지정하는 포인터가
존재하여 테이터를 구분할 수 있다. 로그의 내용은 계속해서 수정되는 파일 시스템에 대한 로그 레코드가 추가되어 갈 뿐 일반적인
파일 시스템운영에서는 로그에 대한 읽기와 쓰기 같은 접근은 이루어 지지 않는다. 로그는 원형의 버퍼와 같은 구조로 되어 있기
때문에 시간이 지나면 포화 상태가 된다. 그러므로 로그 영역이 포화가 되면 가장 오래된 로그 레코드 순으로 삭제하는 동작을
수행해야 한다. 삭제의 수행은 실제 파일 시스템에 적용되 레코드들이 포함된다. 로그 레코드에 대한 삭제를 위한 전용 스레드에
의존한다. 적잘한 관리가 이루어지지 않으면 로그의 빈공간을 찾아 기다리게 되어 I/O수행이 느려질 수도 있다. 트랜잭션은 저널링
파일 시스템에서 로그에 내용을 저장하는 수행단위다. 파일 시스템의 일정한 조작에 대한 파일 시스템 내부적인 일련의 동작
수행이다. 저널링 파일 시스템은 디스크의 빈 블록 비트맵이나 인노드가 포함된 블록에 대한 수정을 하기 전에 반드시 로그에 대한
트랜잭션을 수행한다.
트랜잭션의 수행을 단계별로 보면
트랜잭션 할당 단계 - 수행할 파일 작성 트랜잭션에 대한 ID를 획득하기 위해서 새로운 트랜잭션 할당을 수행한다.
트
랜잭션 추가 단계 - 디스크상의 블록을 변경하기 전에 반드시 로그에 기록해야하기 때문에 트랜잭션별로 할당되어 있는 관리 데이터와
링크되어 메모리에 저장된다. 이 단계는 아직 로그에 저장된 상태는 아니다. 단지 트랜잭션에 로컬로 저장된 상태이다.
트랜잭션
위탁 단계 - 트랜잭션 추가 단계에서 만들어진 트랜잭션의 내용을 로그에 저장하는 동작을 수행한다. 위탁과 함께 롤백이라는 동작도
수행되는데 롤백은 트랜잭션 중에서 수행한 수정을 취소할 경우 수행되는 것으로 에러가 발생했을 경우에도 수행된다.
3.1.2 파일 시스템의 종류
리눅스는 다양한 파일 시스템을 지원한다. ext2, ext3, minix, xiats, umsdos, hpfs OS/2, isofs, CD-ROM, msdos, nfs, sysv 등이 있다. 이 파일 시스템들은 각각 다음과 같은 특징을 가지고 있다.◎ minix
과거 미닉스에서 사용되어졌던 파일 시스템으로 리눅스 파일 시스템 대부분의 기능을 제공하는 파일 시스템이다.
◎ xiafs
미닉스의 제한이 이었던 파일 이름과 파일 시스템에 대한 제한을 보안한 미닉스 파일 시스템의
수정 버전이다. 이 파일 시스템에는 추가된 새로운 기능은 없다. 한때 ext2와 함께 사용되었던 파일 시스템이었으나 현재는 많이
사용되지 않는다.
◎ msdos
도스의 FAT파일 시스템과 호환을 지원하는 파일 시스템이다. 또한 msdos와 OS/2와 윈도NT FAT파일 시스템과도 호환된다
◎ hpfs OS/2
OS/2의 파일 시스템이다. 하지만 현재는 읽기 전용인 파일 시스템으로 파일 시스템에 대한 읽기만이 가능하다.
◎ isofs CD-ROM
ISO기준을 따르는 표준 CD-ROM의 파일 시스템이다. isofs CD-ROM은 CD-ROM에 좀더 긴 파일명을 사용할 수 있도록 확장된 록 브릿지가 기본으로 지원된다.
◎ umsdos
MS-DOS 파일 시스템을 리눅스 상에서도 긴 파일명과 소유자, 접근 허가, 링크와 장치
파일 등을 사용할 수 있도록 확장한 파일 시스템이다. umsdos는 일반적으로 DOS 파일 시스쳄이 마치 리눅스 파일 시스템인
것처럼 보이도록 하는 기능을 제공하므로 따로 리눅스를 위한 파티션은 필요하지 않는다.
◎ nfs
네트워크 파일 시스템이다. 네트워크 상의 많은 컴퓨터들이 각각의 시스템에 가진 파일들을 서로 쉽게 공유하기 위해 제공되는 상호간의 파일 시스템 공유 파일시스템이다.
◎ sysv
System V/386, Xenix 그리고 Coherent 파일 시스템이다.
◎ ext
리눅스 초기에 사용되던 파일 시스템으로 호환성이 없던 ext2의 구 버전이다. 지금은 대부분 하지 않는다.
◎ ext2
리눅스는 미닉스 파일시스템을 처음으로 사용했다. 그러나 여러가지 제약 조건과 성능이 뛰어나지
못하였다. 이를 보안 하기 위해 EXT(Extened File System)이 제시 되었다. 이 파일 시스템은 리눅스 전용으로
설계되어 1992년 4월에 소개 되었다. 또한 1993년에는 2차 확장 파일 시스템인 EXT2가 ext의 여러가지 문제점을
보안하여 나왔다.
3.2 디렉토리 구조
리눅스의 기본 디렉토리 구조는 트리 구조를 하고 있다. 그리고 디렉토리 구조는 기본구조를 제외하고 사용자의 설정에 따라 달라질 수 있다. 리눅스의 디렉토리 구조는 파일 시스템 표준안 (FSSTND, Linux File System Standard)을 기반으로 하는 것이 바람직하다. 파일 시스템 표준안은 리눅스상에서 어떻게 파일 시스템을 구성할 것인지에 대한 표준안을 제정하기 위해서 만들어진 문서이다. 표준안을 무조건 따르라는 강제력은 없지만 파일의 위치가 일관된게 유지되어 프로그램 작성, 포딩은 물론 시스템 관리도 쉬워지는 이점이 있기에 배포판들은 이 표준안을 지키고 있다.
3.2.1 디렉토리 기능 및 내용
대부분의 리눅스는 FHS(Filesystem Hierarchy Standard) 표준 파일 시스템 계층을 사용하고 같은 목적의 파일들은 같은 장소에 일관되게 모아 관리하므로 시스템에 자원이나 프로그램들을 쉽게 찾을 수 있다.◎ /
루트 디렉토리라고 부르는 리눅스 시스템에서 가장 최상위 디렉토리며 디렉토리 구조의 시작이다. 시스템관리자의
홈인 /root와는 다르다. / 디렉토리 아래에 /bin, /etc, /boot, /mnt, /usr, /lib, /home,
/dev, /proc, /var, /sbin, /tmp, /root,
/lost+found 등의 디렉토리가 존재한다.
◎ /bin
binaries의 약어로 이진 파일들이며 리눅스에서 가장 기본이 되는 명령어들이 모여 있는
디렉토리이다. 디렉토리의 파일들을 보면 대부분이 실행 파일임을 알 수 있다. 또한 이곳에는 부팅에 필요한 명령어들이 위치하여
부팅후에 시스템의 계정 사용자들이 사용할 수 있는 일반적인 명령어들도 위치 하고 있다.
◎ /etc
이 디렉토리는 리눅스 시스템에 관한 각종 환경 설정에 연관된 파일들과 디렉토리들을 가진
디렉토리이다. 대부분의 이 디렉토리의 파일들은 시스템 관리자에 의해 관리되는 파일들이다. 웹 서버 환경 설정, 시스템 계정
사용자 정보, 패스 워드 관리, 시스템의 파일 시스템 관리 파일, 여러가지 시스템 보안에 관련된 파일들, 시스템 초기화 설정
파일, TCP/IP 설정 파일 등 시스쳄 전반에 걸친 거의 모든 환경 설정 파일들이 모두 이 디렉토리에 있다.
◎ /etc/rc.d
시스템의 부팅과 시스템 실행 레벨 변경시에 실행되는 스크립트들이 저장되어 있는 디렉토리이다. 리눅스의 6가지 실행 레벨로 각각의 해당 디렉토리가 있다.
◎ /etc/shadow
파일에서 패스워드 부분만을 따로 저장하는 파일이다. 이 파일에 패스워드는 암호화 되어 셰도우 패스워드 형태로 저장되어 있으며 시스템 관리자만이 접근할 수 있기 때문에 크래킹 등에 대한 우려가 상대적으로 적다.
◎ /etc/group
시스템의 그룹에 대한 정보를 저장하고 있는 파일이다.
◎ /etc/inittab
init를 설정하는 파일이다.
◎ /etc/issue, /etc/issue.net
getty에 의해서 로그인을 위한 프롬프트가 뜨기 전에
출력되는 메시지를 설정하는 파일이다. 리눅스 시스템으로 접속할 경우 가장 처음으로 볼 수 있는 메시지이다. 보통 시스템에 대한
설명과 각종 환영 메시지를 전달하기 위해서 사용된다. issue 파일의 내용은 보통 시스템의 터미널에서 볼 수 있다. 그리고
/etc/issue.net 파일의 내용은 리모트상에서 시스템으로 접속할 경우 볼 수 있다.
◎ /etc/motd
'Message of the day'의 약자로 시스템으로의 접속에 성공할 경우 쉘이 뜨기 전에 출력되는 메세지를 설정하는 파일이다.
◎ /etc/profile, /etc/csh.login, /etc/csh.cshrc
시스템이 시작될 때 사용자가 로그인을 할 때 본쉘이나 C쉘에 의해서 실행되는 스크립트 파일이다. 일반적으로 사용자들에 대한 기본 환경 설정에 사용된다.
◎ /etc/securetty
시스템 관리자가 시스템에 로그인할 수 있는 안전한 터미널에 대한 정보가 저장되어 있다. 일반적으로 가상콘솔이 설정되어 있다. 이것은 네트워크를 통해 시스템으로 침입해 시스템 관리자의 권한을 획득하는 크랙킹을 막기 위해서이다.
◎ /ete/shell
시스템에서 안정적으로 사용할 수 있는 쉘에 대한 정보를 저장하고 있는 파일이다.
만약 chsh명령을 사용해 사용중인 쉘을 바꾸려면 이 파일에 저장되어 있는 쉘중에 선택해야한다. 또한 ftp데몬의 경우 사용자의
쉘을 검사하여 /etc/shell에 저장되어 있지 않은 쉘을 사용한다면 로그인을 허용하지 않는다.
◎ /boot
리눅스 커널이 저장되어 있는 디렉토리로서 각종 리눅스 boot에 필요한 booting지원 파일들이 저장되어 있는 디렉토리이다.
◎ /mnt
외부 장치인 플로피 디스크, 시디롬, 삼바등을 마운트하기 위해서 제공되는 디렉토리이다. 임시로
사용되는 디렉토리이므로 프로그램들은 /mnt에 어떤 파일 시스템이 마운트 되었는지 자동으로 인식하지 않는다. 또한 /mnt는
보통 여러 개의 하위 디렉토리로 나누어 사용되고, 평소에는 각 디렉토리들은 비어 있다.
◎ /usr
시스템에 사용되는 각종 프로그램들이 설치되는 디렉토리이다. 프로그램과 관련된 명령어 미치
라이브러리들이 이 디렉토리에 위치 하게 된다. 또한 X 시스템관련 파일들과 리눅스 커널 소스, 각종 C언어 과련 해더 파일 등도
이 디렉토리 안에 저장되어 있다.
◎ /usr/bin
리눅스 시스템에서 사용되는 각종 프로그램들이 저장되어 있으며 /bin 디텍토리에 없는 다양한 실행 파일들이 저장되어 있는 디렉토리이다.
◎ /usr/X11R6
X 윈도우 시스템에 사용되는 모든 파일들이 이 디렉토리 안에 저장된다. 이 디렉토리는 X 윈도우 시스템의 개발과 설치를 좀더 쉽게 하기 위해서 전체 시스템 디렉토리 구조에 통합되지 않고 독자적인 구조를 가진다.
◎ /usr/etc
/etc 디렉토리에는 각종 환경 설정 파일들이 있듯이 이곳에도 여러 가지 시스템 환경 설정 파일들이 저장되어 있다./usr/etc의 파일들은 /etc디렉토리 안의 파일들과 달리 꼭 팔요한 파일들은 아니다.
◎ /usr/sbin
시스템 관리자를 위한 명령어들이 저장되는 디렉토리이다. 보통 이 디렉토리의 명령어들은 루트 파일 시스템에는 필요가 없는 서버 프로그램들이 저장된다.
◎ /usr/include
C언어 관련 해더 파일드이 저장되어 있는 디렉토리이다.
◎ /usr/lib
각종 라이브러리들이 저장되어 있는 디렉토리이다. 만약 사용자가 직접 작성한 프로그램을
컴파일한다면 해당 프로그램은 /usr/lib 디렉토리의 파일에 link된다. 또한 이 라이브러리 안에 실행 코드가 필요하다면
/lib 디렉토리를 참조한다.
◎ /usr/local
시스템의 특정적인 프로그램들이 저장되는 디렉토리이다.특정적인이란 시스템 관리자에 의해서 따로 설치되는 프로그램들을 말한다.
◎ /usr/man
man페이지의 실제 내용들이 저장되어 있는 디렉토리이다. 디렉토리를 살펴보면 man1,
man2, man3, 등과 같이 여러개의 디렉토리들로 나누어져 있는 모습을 볼수 있다.man1 디렉토리는 섹션 1의 man
페이지 소스를 위한 디렉토리를 말한다.
◎ /usr/src
시스템에서 사용하는 각종 프로그램들의 컴파일되지 않은 소스 파일들이 저장되어 있다./usr/src/linux 디렉토리가 바로 리눅스의 커널소스를 저장하고 있는 디렉토리이기 때문이다.
◎ /usr/X386
/usr/X11R6 디렉토리와 유사한 티렉토리로 X11 Release 5를 위한 디렉토리이다.
◎ /usr/info GNU info문서들을 저장하고 있는 디렉토리이다.
◎ /usr/doc
각종 문서들이 저장되어 있는 디렉토리이다
◎ /lib
프로그램들의 각종 라이브러리들이 존재한다. 대부분 공유 라이브러리로 더 편하게 사용할 수
있으며,파일의 크기를 줄여서 실행할 때 불러 사용하게 된다. /lib/modules 디렉토리에는 커널로 로딩 사능한 커널
모듀들이 저장되어 있다.
◎ /home
시스템 계정 사용자들의 홈 디렉토리와 ftp,www,등과 같은 서비스 디렉토리들이 저장된다. 이곳의 디렉토리와 파일들은 시스템에서 상용되지 않는다. 단지 리모트상에서 시스템으로 접속하는 사용자들을 위한 공간이다.
◎ /dev
디렉토리에는 시스템의 각종 디바이스들에 접근하기 위한 디바이스 드라이버들이 자장되어 있는
디렉토리이다. 이 디렉토리는 물리적인 용량은 갖지 않는 가상 디렉토리이다. 대표적으로는 하드 드라이브,플로피, 씨디롬 그리고
루프팩장치 등이 존재한다. 리눅스 시스템은 윈도우와 달리 각종 디바이스 장치들을 하나의 파일로 취급한다. 따라서 시스템은 각각의
장치들로부터의 정보를 /dev 디렉토리에 존해하는 해당 장치 파일로 부터 가지고 온다.
◎ /dev/console
시스템의 콘솔이다.
◎ /dev/hda
시스템의 하드 디스크이다. 여기서 /dev/hda는 첫 번째 하드 디스크를 의미하는
것이다./dev/hda1은 첫번째 하드 디스크의 첫번째파티션,/dev/hda2 두 번째 파티션등을 의미한다.만약 시스템에 여러
개의 하드 디스크가 부착되어 있다면 /dev/hdb,/dev/hdc 등의 파일도 /dev/hdb1,/dev/hdb2등과
같은형식으로 저장되어 있다.
◎ /dev/lp
시스템의 병렬 포트 장치들이다.
◎ /dev/null
이 디렉토리는 블랙홀이라고도 부르는 특별한 장치이다. 이 장치로 데이터 등을 보내면 모두 폐기되므로 주의해야 할 것이다.
◎ /dev/pty
시스템으로의 원격 접속을 위한 'pesudo-terminal'들이다. 만약 시스템 계정 사용자드이 원격지에서 시스템으로 텔넷등을 이용하여 시스쳄에 접속을 시도한다면 이들은 /dev/pty 디바이스들을 사용하게 되는 것이다.
◎ /dev/sda
SCSI 장치들이다. 만약 시스템에 스카시 하드 디스크를 장착했다면 시스템은 /dev/sda파일에서 정보를 얻어 장치에 접근할 것이다.
◎ /dev/ttyS,/dev/cuaS
/dev/ttyS은 직렬포트 장치들이고, /dev/cauS는 Callout. 장치이다.
◎ /dev/tty
시스템의 가상콘솔들이다. 이 가상 콘솔의 기능은 하나의 화면에 여러 개의 콘솔들을
만든다. 만약 사용자가 시스템 앞에 앉을 수 있다면,Alt + F1, Alt + F2등을 이용하여 리눅스에 제공한 여러개의 가상
콘솔을 직접 볼수 있을 것이다.
◎/proc
시스템의 각종 프로세서, 프로그램 정보 그리고 하드웨어적인 정보들이 저장된다. 이
티렉토리는 가상 파일 시스템으로 가상 파일 /dev와 마찬가지로 하드 디스크상에 물리적인 용량을 갖지 않는다. 즉 디렉토리에
존재하는 파일들은 실제 하드 디스크에 저장되지 않고 커널에 의해 메모리에 적재 된다. 디렉토리 안의 파일들은 현재의 시스템
설정을 보여 주는 것이다.
◎ /proc/1
프로세스 번호가 1인 프로세스에 대한 정보를 저장하는 디렉토리이다. 다른 프로세스들도 자신의 고유한 프로세스 번호의 디렉토리를 가진다는 것을 의미한다.
◎ /proc/cpuinfo
프로세서의정보를 저장하고 있는 파일이다. cpu의 타입, 모델, 제조회사, 각종 성능 등의 정보를 제공하여 준다.
◎ /proc/devices
현재 시스템 커널에 설정되어 있는 장치들에 대한 정보를 저장하고 있다.파일등의 정보로 모든 시스템의 장치 목록에 대한 정보를 얻을 수 있다.
◎ /proc/dma
현재 시스템에서 사용하고 있는 DMA 채널에 대한 정보를 저장하고 있다.
◎ /proc/filesystem
시스템에 설정되어 있는 파일 시스템에 대한 정보를 저장하고 잇는 파일이다.
◎ /proc/interrupts
현재 사용중인 인터럽트와 인터럽트의 사용량에 대한 정보를 저장하고 있는 파일이다.
◎ /proc/ioports
현재 사용중인 I/O 포트에 대한 정보를 저장하고 있는 파일이다.
◎ /proc/kcore
현재 시스템에서 사용중인 메로리의 실제 이미지이다. 이 파일은 실제 메모리의 내용을 모두 가진 것처럼 보이지만 프로그램이 필요로 하는 부분의 이미지만을 필요할 때 만들어 제공한다.
◎ /proc/kmsg
커널에 의해서 출력되는 메시지들을 저장하고 있는 파일이다.이것은 또한 syslog파일에도 저장된다.
◎ /proc/loadavg
현재 시스템의 평균 부하량(Load Average)에 대한 정보를 저장하고 있는 파일이다.이 파일을 통해서 시스템이 현재 수행해야 하는 일이 얼마나 많은지를 알려주는 3가지 지표에 대한 정보를 얻을 수 있다.
◎ /proc/ksyms
시스템 커널이 사용하고 있는 심볼들에 대한 정보를 저장하고 있는 파일이다.
◎ /proc/meminfo
현재 시스템이 사용중인 메모리의 사용량을 저장하고 있는 파일이다./proc/meminfo에서 실제 메모리는 물론 가상 메모리에 대한 정보도 얻으 수 있다.
◎ /proc/self
이 디렉토리를 보고 있는 프로그램 자시의 프로세스 디렉토리로 링크도어 있다. 만약
서로 다른 2개의 프로세스가 /proc 디렉토리를 보고 있다면 두 프로세스는 서로 다른 링크를 보게 된다. 이를 통해서
프로그램들이 자신의 프로세스 디렉토리를 쉽게 찾을 수 있다.
◎ /proc/stat
시스템의 현재 상태에 대한 다양한 정보를 저장하고 있는 파일이다.
◎ /proc/uptime
시스템이 얼마나 오래 동작했는지에 대한 정보를 저장하고 있는 파일이다.
◎ /proc/version
시스템이 현재 사용중인 커널 버전에 대한 정보를 저장하고 있는 파일이다.
◎ var
시스템에서 사용되는 동적인 파일들이 저장된다. 각종 시스템 로그 파일, 사용자 로그인에 대한 보안기록,메일서버를 운영한다면 사용자들에게 전송된 메일들을 임시로 저장한다.
◎ /var/cache
포멧된 메뉴얼 페이지들이 잠시 대기(Cache)하기 위한 디렉토리이다.
◎ /var/lib
시스테이 동작하면서 계속 수정되고 변경되는 파일들을 위한 디렉토리이다.
◎ /var/local
/usr/local 디렉토리에 설치된 프로그램들의 각종 데이터들이 저장되는 디렉토리이다.
◎ /var/lock
잠금 파일들이 저장되는 디렉토리이다.프로그램들이 특정한 장치나 파일들을 프로그램
자신이 독점적으로 사용하려 할 때 /var/lock 디렉토리에 잠금 파일을 만들어 사용하게 된다. 그렇기 때문에 다른
프로그램들은 장치나 파일을 사용하기 전에 우선 이 디렉토리의 내용을 조사하여 해당 장치나 파일들이 사용중인지 확인하게 된다.
◎ /var/log
프로그램들의 로그 파일들이 저장되는 디렉토리이다. 이 디렉토리에 wtmp파일은
login 파일과 messages파일은 syslog의 로그 파일이다.wtmp는 시스쳄의 모든 사용자 로그인과 로그 아웃에 대한
정보르 저장하고 있는 파일이고,messages는 커널과 시스템의 모든 출력 메세지를 저장하고 있는 파일이다./var/log 안의
파일들은 시스템의 사용량에 따라 그 크기가 무한대로 증가할 있으므로 정기적으로 파이들을 삭제하는 등 디렉토리 관리가 필요하다
◎ /var/run
시스템의 현재 정보들을 저장하고 있는 디렉토리이다./var/run/xinetd.pid 파일의 경우 현재 사용중인 xinetd 데몬의 프로세스 번호를 저장하고 있다.
◎ /var/spool
메일이나 뉴스, 프린터 큐 등고 같은 시스템상에서 대기 상태에 있는 작업들을 위한
디렉토리이다. 각각의 대기 작업들은 모두 /var/spool 아래 고유의 디렉토리에 위치하게 된다. 예를 들어 시스템의 계정
사용자들의 메일은 /var/spool/mail 에 저장된다.
◎ /var/tmp
/tmp에 저장된 임시 파일들중에 오래 보관되어야 할 임시 파일들이 저장되는 디렉토리이다.
◎ /tmp
이름에도 알 수 있듯이 임시 파일들을 위한 디렉토리이다.
◎ /root
시스템 관리자의 홈 디렉토리이다.
리눅스 디렉토리 구조와 파티션 관리의 기본
- 레드햇 계열의 디렉토리 구조는 다음과 같다.
/ 루트 디렉토리
/bin 가장 필수적인 실행명령
/boot 커널,LILO 등 부팅에 관련된 파일
/dev 장치파일
/etc 시스템 전체 설정파일
/home 사용자의 홈디렉토리
/lib C 라이브러리 등 가장 필수적인 공유 라이브러리
/mnt 임시 마운트용 디렉토리
/proc 시스템 정보를 위한 가상적인 디렉토리
/root 루트 사용자의 홈 디렉토리
/sbin 시스템 관리용 실행파일
/tmp 임시 파일 생성용 디렉토리
/usr 어플리케이션이 설치되는 디렉토리
/var 시스템 운영중 생성되는 각종 임시 파일
2. 각 디렉토리들
1) /
근원이 되는 뿌리로 구체적인 파티션에 대한 정의
가 없는 경우 루트 디렉토리에 포함 되어진다.
2) /bin
실행파일들이 놓여있는 디렉토리로 부팅에 과정에서 필요하고 부팅후에도 일반
사용자를 포함한 모든 사용자들이 사용하는 프로그램들이 있다. 각종 쉘 프로
그램 및 리눅스 기본 명령어들이 포함되어 있다.
가장 기본이 되는 명령어들이 있는 디렉토리이므로 이곳에 있는 명령어들은
숙달되게 사용할 수 있도록
* 명령어: ls -la /bin | more
한후 다른 한텀이나 xterm을 띄워
* 명령어: man 명령어이름
명령어 사용법을 알아 두어야 한다.
3) /boot
GNU/Linux 에서 Linux( 리눅스 커널 )이 위치하는 디렉토리 이다.
부팅 이미지, 시스템 맵, 모듈 정보, 리눅스 커널등이 있다.
# ls -al /boot
4) /dev
리눅스에서는 모든 장치들이 하나의 파일로 간주한다.
디바이스 드라이버들도 하나의 파일처럼 간주되고 그렇게 사용된다.
다만 그것에 대하여 장치 파일처럼 놓는 통신포트,프린터 포트,터미널 장치처
럼 한번에 한바이트씩 자료가 오가는 단방향의 순차적인 접근만 할 수 있는 장
치이며, 블록 장치는 디스크,시디롬으로 원하는 부분만을 읽어들일 수 잇는 양
방향의 랜덤한 방식으로 작동한다.
블록 장치는 버퍼링을 하는데, 읽기 버퍼링의 경우는 캐쉬 메모리처럼 이미 읽
은 내용을 메모리에 보관하고 있다가 요청이 있을 때마다 보여준다.
쓰기 버퍼링의 경우에는 일종의 스풀링 기능처럼 일정시간 혹은 일정량을 모아
두었다가 한꺼번에 작업을 한다.
그렇게 함으로 해서 다중 사용자, 다중 작업 시스템의 효율성을 높이는 것이다.
유닉스를 기반으로 하는 리눅스에서는 모든 하드웨어에 대하여 각각의 파일명
을 가지고 있으며, 이 파일들은 /dev 디렉토리에 놓여있다.
이 파일들을 mknod나 /dev/MAKEDEV 라는 스크립트를 이용하여 만들수 있다.
brw-rw---- 1 root disk 3, 1 May 6 1998 hda1
퍼미션 앞에 있는 문자 b는 불록 장치임을 의미하며, c는 문자 장치를 나타낸다
Disk 다음에 나오는 번호는 장치 파일의 고유속성값인 메이저 번호이며, 파일
명의 끝에 붙어있는 숫자는 마이너 번호이다.
IDE 하드디스크의 장치 파일은 마이너 번호 3번으로 시작하며, SCSI 하드디스크
의 장치 파일은 8번으로 시작한다.
이 번호들은 고유 번호로 임의로 선택하거나 변경할 수 없다.
/devfd0 : 플로피 디스크 드라이브
/dev/hda : 첫 번째 마스터 IDE 드라이브
/dev/hdb : 첫 번째 슬레이브 IDE 드라이브
/dev/hdc : 두 번째 마스터 IDE 드라이브
/dev/hdd : 두 번째 슬레이브 IDE 드라이브
/dev/sda : 첫 번째 SCSI 하드 디스크 드라이브
/dev/st0 : 첫 번째 SCSI 테이프 드라이브
/dev/scd0 : 첫 번째 SCSI 시디롬 드라이브
/dev/mouse : 마우스
/dev/psaux : PS/2 마우스
/dev/ttyS0 : COM1 포트
5) /ETC
시스템에서 사용하는 각종 설정에 대한 정보를 가지고 있다.
가장 중요한 디렉토리 중 하나이다.
제일 중요한 파일들로소는 사용자 정보를 가지고 있는 파일인 passwd(쉐도우
파일 시스템에서는 패스워드가 shadow 파일에 따로 놓인다.)
그룹 정의 파일인 group, 프린터 목록 파일인 printcap, 자동 마운트 될 파일
시스템을 등록해 두는 파일 시스템 테이블 파일인 fstab, 그리고 각종 네트웍
관련 파일들이 있다.
/etc/fstab
리눅스에서 사용하고자 하는 디스크 및 마운트 할 디렉토리에 대한 정보가 들
어있는 파일이다.
fstab의 설정에 따라 부팅시 자동으로 마운트할 디렉토리들이 결정되게 된다.
만일 새로운 하드디스크를 추가하고 이를 리눅스에서 사용하고자 한다면 fstab
에 등록해야만 부팅시 자동으로 마운트 할수 있다.
/etc/inittab
시스템의 런레벨을 지정하는 파일이다.
/etc/issue
로그인 시 'login:' 프롬프트 바로 위에 나타나는 메시지를 가지고 있는 파일
이다.
당연히 issue 파일을 수정하면 원하는 메시지를 출력할 수 있다.
하지만 다음에 부팅해보면 다시 이전의 기본값으로 변경되어 있는 것을 알 수
있다.
이를 수정하려면 /etc/rc.d/rc.local 파일 후반부의 issue 파일 생성스크립트
를 모두 주석처리하거나 삭제해주면 된다.
/etc/login.defs
login명령에 대한 설정 파일.
/etc/motd
issue와 비슷한데 issue가 로그인 전에 나타나는 메시지에 비해 motd는 로그인
직후 나타나는 메시지이다.
/etc/mtab
현재 마운트되어 있는 파일시스템의 목록. 처음에는 초기화 스크립트에 의해
설정되고 mount명령에 의해 자동으로 갱신된다.
/etc/rc.d or /etc/rc.?.d 디렉토리
처음 시스템이 시작될 때나 런 레벨이 변경될 때 실행 되는 스크립트 또는 스
크립트들이 들어있는 디렉토리이다.
/etc/magic
file 명령을 위한 설정 파일. 이 파일은 file이 어떤 파일의 타입을 추측할때 증거가
되는 여러 가지 파일 형태에 대한 기술을 담고 있다.
/etc/securetty
root의 접속이 허용되는 터미널(secure terminal)을 정의한다. 일반적으로 가
상콘솔만이 목록에 들있어서 모뎀이나 네트웍을 파고 들어서 슈퍼유저의
권한을 획득하는 것을 실질적으로 불가능하거나 아주 어렵게 만든다.
/etc/shells
신뢰성 있는 쉘의 목록. 일반 사용자는 chsh 명령으로 로그인 쉘을 변경할 수
있으며 이때 여기에 기록되어 있는 쉘만이 가능하다. FTP서버 데몬인 ftpd는
사용자의 쉘을 검사해서 만일 /etc/shells에 나와있지 않은 쉘이라면 접속을
허용하지 않는다.
/etc/termcap
터미널의 특성에 대한 데이터베이스 파일. 여러종류의 터미널들이 어떤 escape
코드에 의해 제어되는지를 나타낸다. 프로그램들은 직접 escape코드를 출력해
서 특정한 타입의 터미널에서만 작동하도록 만들어지는 대신 적절한 코드를
/etc/termcap에서 찾도록 짜여진다. 그러면 결과적으로 대부분의 프로그램들이
모든 종류의 터미널에서 작동할수가 있게 된다.
6) /home
별다른 의미가 없는 디렉토리로 일반적인 리눅스에서는 사용자들의 홈디렉토리
들을 위치시키는데 사용한다.
다중 사용자 시스템이므로 각 사용자의 자료가 뒤죽박죽 섞이지 않도록 모든
사용자는 자신만의 공간을 갖고, 자료파일은 모두 그곳에 두도록 한다.
물론 디스크 구조에 따른 다른 디렉토리를 사용하는 경우도 많다.
레드햇 기반의 리눅스에서는 홈디렉토리를 ftp,httpd 등의 네트워크 서비스의
공용 홈디렉토리로 사용하고 있다
7) /lib
일반적인 리눅스시스템에서 사용하는 공용라이브러리 파일들이 위치한 곳이다.
실수로 파일들을 지우지 않아야 한다.
C 라이브러리 같은 경우 시스템이 더 이상 작동하지 않을 것이다.
이 디렉토리에는 다음과 같이 라이브러리 파일과 그 라이브러리 파일을 가르키
는 심볼릭 링크로 구성되어 있다.
파일은 라이브러리 이름과 버전 그리고 .so(shared Object)라는 문자로 구성되
어 있다.
윈도우에서의 DLL과 같은 기능의 파일이다.
cpp@ libext2fs.so.2.4* libnss_nis.so.2@
ld-2.1.1.so* libm-2.1.1.so* libnss_nisplus-2.1.1.so*
ld-linux.so.1@ libm.so.6@ libnss_nisplus.so.2@
ld 로 시작하거나 libdl 로 시작하는 파일들은 프로그램들이 실행될 때 필요한
라이브러리를 알맞게 찾아서 메모리에 올려주고 연결해 주는 로더이다.
이미 메모리상에 존재하는 공유 라이브러리를 메모리에 중복해서 올릴 필요없
이 같이 사용할 수 있어 메모리를 절약할 수 있다.
그러나 일부 특수한 프로그램들은 공유 라이브러리를 사용하지 않고 모든 기능
을 다 포함시켜 놓은 경우가 있는데 이런 프로그램들을 정적 컴파일 되었다고
한다.
정적 컴파일된 라이브러리는 당연히 파일 크기 자체도 크며, 모든 기능을 자체
적으로 갖고 있기 때문에 메모리 손실이 크다.
어떤 프로그램이 어떤 라이브러리와 동적링크가 되어 있는지는 ldd 명령을 사
용하여 확인할 수 있다.
다음과 같이 명령을 했을 때 나타나는 메시지에서처럼 라이브러리가 하나라도
없으면 그 명령은 실행되지 않는다.
# ldd /bin/cp
lib.so.6 => /lib/libc.so.6 (0x4001a000)
/lib/ld-linux.so.2 = > /lib/ld-linux.so.2 (0x40000000)
8) /mnt
디스크,CD-ROM, floppy등을 마운트 할 경우 기본적으로 적재할 위치로 사용된다.
그러나 굳이 /mnt를 사용하지 않아도 된다.
#ls -la /mnt
cdrom
floppy
smb
nfs
9) /proc
파일시스템은 가상적인 파일시스템을 담고 있다. 이것은 디스크상에 존재하는 것이 아니고
대신에 커널에 의해 메모리상에 생성되며, 시스템에 대한 정보를
제공하는데 이용된다.(원래는 프로세스에 관한 정보였으며 그 이유로 /proc이라 이름붙여졌다.)
여러 파일과 디렉토리들 중 중요한 것들에 대해서 아래에 설명한다.
/proc 파일시스템에 대한 더 상세한 내용은 proc 매뉴얼 페이지를 참고하라.
/proc/1
1번 프로세스에 대한 정보를 가진 디렉토리. 각각의 프로세스는 /proc 아래에
해당 프로세스 번호에 해당하는 이름의 디렉토리를 가진다.
# cat /proc/1/status
/proc/cpuinfo
타입, 제조사, 모델, 성능 등 프로세서에 관한 정보.
# cat /proc/cpuinfo
processor : 0
/proc/devices
현재 동작중인 커널에 설정되어 있는 디바이스 드라이버의 목록.
# cat /proc/devices
/proc/dma
지금 현재 어떤 DMA 채널을 사용중인지 보여준다.
# cat /proc/dma
/proc/filesystems
커널에 설정되어 있는 파일시스템들.
# cat /proc/filesystems
/proc/interrupts
어떤 인터럽트가 사용중이고 각각의 인터럽트가 얼마나 사용되었나를 보여준다
# cat /proc/interrupts
/proc/ioports
현재 어떤 I/O 포트가 사용중인지 보여준다.
# cat /proc/ioports
/proc/kcore
시스템의 실제 메모리에 대한 이미지. 이것의 크기는 메모리의 크기와 정확히
같지만 메모리를 억세스할 때에만 생성되므로 실제로 그렇게 많은 메모리를
차지하지는 않는다(만약 다른곳으로 복사하지 않는다면 /proc 아래에 있는 것
은 디스크 공간을 전혀 차지하지 않는다는 것을 상기하라).
** 절대 출력 하지 말것 - 책임 못짐 **
/proc/kmsg
커널이 출력하는 메시지. 시스템 호출 syslog도 이것들을 보여준다.
/proc/ksyms
커널의 심볼 목록.
# cat /proc/ksyms | tail -20
/proc/loadavg
시스템의 평균적인 부하; 순간 시스템이 얼마의 일을 해야 하는지를 나타내는
세 개의 지표로 표시된다.
# cat /proc/loadavg
/proc/meminfo
실제 메모리와 스왑 메모리의 사용량에 대한 정보.
# cat /proc/meminfo
/proc/modules
현재 어떤 커널 모듈이 로드되어 있는지를 나타낸다.
# cat /proc/modules
/proc/net
네트웍 프로토콜의 상태에 대한 정보.
# ls /proc/net/
/proc/self
/proc을 억세스하는 프로그램의 프로세스 디렉토리에 대한 심볼릭 링크. 두 개
의 프로세스가 /proc에 접근하면 각각은 서로 다른 링크를 갖게 된다. 이것은
주로 프로그램이 자신의 프로세스 디렉토리에 쉽게 접근하도록 하기 위함이다.
# ls /proc/self/
/proc/stat
시스템이 부팅된 이후 발생한 페이지 폴트의 횟수와 같은 시스템에 관련된 여
러 가지 통계 자료.
# cat /proc/stat
/proc/uptime
시스템이 작동해온 시간.
# cat /proc/uptime
/proc/version
커널 버전.
# cat /proc/version
이것 외에도 많은 시스템의 정보를 얻을 수 있다.
위의 파일들은 텍스트 파일이므로 그냥 읽을 수 있지만 어떤 경우에는 쉽게 이
해할 수 없는 형태로 되어 있다. 그런 경우 해당 파일을 읽어들여서 새로 포맷
하는 명령을 이용하면 쉽게 이해할 수 있다.
예를 들면 명령어 free는 /proc/meminfo를 읽어서 바이트로 주어진 용량을 킬
로바이트로 변환한다(게다가 약간의 정보를 추가하기도 한다).
10) /sbin
관리자의 권한에서만 실행할 수 있는 명령들로 파일시스템 처리 명령,네트웍
인터페이스 설정 명령,시스템 초기화 명령,커널 모듈 관리 등 주로 시스템 관
리에 필요한 명령들로 놓여 있다.
11) /tmp
수많은 프로그램들이 작업을 위해 임시 파일을 저장하기 위해 존재하는 디렉토
리이다. 시스템에서 관리하면 일반 사용자들도 파일 생성이 가능하다.
12) /usr
일반적으로 사용하는 명령어와 메뉴얼, 사용자들을 위한 각종 환경 설정과 X11
R6를 비롯한 여러가지 프로그램들이 위치하는 곳으로 루트디렉토리 만큼 많은
디렉토리를 가지고 있다.
# ls /usr/
X11R6/ dict/ etc/ i386-accel-linux/ include/ kde/ libexec/
lost+found/ sbin/ src/ bin/ doc/ games/ i486-linux-libc5/
info/ lib/ local/ man/ share/ tmp@
/usr/X11R6
X 윈도우 시스템의 모든 파일들. X의 개발과 설치를 단순화하기 위해 X의 파일
들은 시스템의 나머지 부분들과는 분리되어 있다. /usr아래에 있는 디렉토리와
유사한 구조가 /usr/X11R6 아래에도 있다.
/usr/X386
/usr/X11R6과 비슷하나 X11R5에 해당한다.
/usr/bin
대부분의 사용자 명령어. 몇몇 명령어들은 /bin이나 /usr/local/bin에 있다.
/usr/sbin
시스템이 부팅되고 작동하기 위해 필요한 필수 관리 명령을 제외한 데몬들이
위치하고 있다.
/usr/include
C 라이브러리 및 각종 추가 라이브러리의 헤더 파일이 놓여 있다.
/usr/lib
/lib에 들어 있는 라이브러리를 제외한 라이브러리들이 들어있다.
/usr/bin의 실행 라이브러리에 동적 링크된 라이브러리가 들어있다.
/usr/src
커널 소스가 들어있는 디렉토리이다.
/usr/doc, /usr/info,/usr/man
how-to 및 man page 등의 문서파일이 들어있다.
/usr/local
시스템에 관련된 프로그램들이 아닌 사용자가 소스를 가져다 컴파일한 프로그램들이
설치되는 공간이다.
13) /var
시스템이 정상적으로 작동할 때 수시로 변경되는 데이터가 저장된다. 이것은 각 시스템마다
달라서 다른 컴퓨터와 네트웍을 통해 공유되거나 하는 일은 없다.
/var/catman
포맷된 매뉴얼 페이지가 저장되는 곳. 매뉴얼 페이지의 소스는 보통 /usr/man/
man*에 있다; 일부의 매뉴얼 페이지는 /usr/man/cat*에 미리 포맷된 형태로 제
공되기도 한다. 그외의 매뉴얼 페이지들은 처음 사용자가 불러서 볼 때 포맷이
되며 이렇게 포맷된 것들은 /var/man에 저장되어서 다음에 볼 때에는 포맷되기
를 기다릴 필요가 없다.(/var/catman의 파일들은 흔히 임시 디렉토리들의 내용
이 삭제되는 것과 마찬가지 방법으로 삭제된다.)
/var/lib
시스템이 정상적으로 동작할 때 변경되는 파일들.
/var/local
/usr/local에 설치되어 있는 프로그램이 필요로 하는 변동하는 데이터.
/var/lock과 같은 적당한 곳이라면 /var아래의 다른 디렉토리도 사용될수 있다
/var/log
시스템의 로그가 쌓이는 곳이다. 이곳은 상당히 중용한 곳으로 유심히 보아야 할
디렉토리이다.
# ls /var/log/
/var/log/boot.log
부팅시 시작된 데몬들에 관한 정보가 들어 있습니다.
# cat boot.log | tail -10
/var/log/cron
크론의 메시지를 기록한다.
# cat /var/log/cron | tail -10
/var/log/dmesg
부팅시 컴퓨터 초기화부분의 메세지가 기록며, 마지막 부팅함 메시지를 담고 있다.
LiLo: 부분 나온 다음 부터 서비스 데몬 시작하기 전까지의 메세지가 기록된다.
bootup 메세지가 기록되므로 시스템이 부팅시 에러 유무를 확인 할수 있다.
# cat /var/log/dmesg | head -10
# cat /var/log/dmesg | tail -10
/var/log/secure
서비스를 받기 위하여 서버에 접속하는 모든 기록이 저장되는 화일이다.
# cat /var/log/secure | tail -10
/var/log/spooler
메일이나 뉴스 로그 화일이다.
/var/log/statistics
센드메일에서 사용하는 로그 화일이다.
/var/log/xferlog
ftp 엑세스 로그 화일이다.
# cat /var/log/xferlog | tail -5
/var/log/htmlaccess.log
아피치의 웹 엑세스 로그 화일로 rpm으로 설치시 여기에 엑세스 로고가 쌓인다.
/var/log/httpd/와 더불어 아파치와 관련된 로그 화일이다.
/var/log/maillog
센드메일의 로그 화일로 사용자가 메일관련해서 접속할 경우 이 화일에 기록된다.
# cat /var/log/maillog | tail -3
/var/log/wtmp
로기한 사람의 정보를 가지고 있는 데이터 화일 이다. 현재의 시스템을 사용하고 있는
사람의 정보를 담고 있다.
last와 lastlog 라는 명령어로 화일의 내용을 확인 할 수 있다.
화일 타입은 data 이므로 이것을 cat 해보면 아마도 후회 할것이다.
# file /var/log/wtmp
/var/log/wtmp: data
/var/log/lastlog
마지막에 로긴한 사람에 관한 정보가 기록되어 있다.
** cat /var/log/lastlog 하지 말것 **
화일 타입은 아스키 화일인데 깨짐.ㅡ.ㅡ)
/var/log/messages
시스템의 이상 유무에 관련있는 로그 화일로 시스템의 이상유무를 파악 할 수 있다.
# cat /var/log/messages | tail -5
/var/log/netconf.log
netconf 명령어를 수행 후에 나타나는 로그 화일이다.
# cat netconf.log
/var/log/maillog
센드 메일 엑세스 로그 화일이다.
# cat /var/log/maillog | tail -5
/var/run
다음번 부팅때까지 유효한 시스템에 관련된 정보를 담은 파일들.
/var/run/utmp
현재 로그인되어 있는 사용자에 관한 정보가 들어있다.
** cat /var/run/utmp 하지 말것 **
화일 타입은 data 이므로 이것을 cat 해보면 아마도 후회 할 것이다.
# file /var/run/utmp
/var/log/wtmp: data
그외에 서버의 프로세스 id가 기록되어 있다.
# ls /var/run/
/var/spool
메일, 뉴스, 프린터 큐, 그밖의 대기 작업(queued work)을 위한 디렉토리들.
각각의 스풀은 /var/spool 아래에 서브디렉토리를 가지고 있어서 일례로 사용
/var/spool/mail
사용자에게 온 메일을 보관하는 디렉토리이다.
3. 파일 시스템 마운트 테이블(/etc/fstab)
fstab에는 시스템 부팅시 자동으로 마운트되어야 할 항목과 옵션이 들어 있다.
자동 마운트 기능 외에도 마운트를 편리하게 하기 위한 옵션들이 존재한다.
/dev/hda1 / ext2 defaults 1 1
/dev/hdb1 /home ext2 defaults 1 2
/dev/hda6 /users ext2 defaults 1 2
/dev/hda5 /usr ext2 defaults 1 2
[출처] [펌] 리눅스 디렉토리 구조와 파티션 관리의 기본 | linux |작성자 스페샬닉
Ubuntu에서 samba를 이용해서 파일공유 사용하기
$ sudo apt-get install samba smbfs
공유디렉토리 시나리오를 짜보자.
------------------------------------------------------------------------------
삼바 공유 폴더에 접근 가능한 그룹을 생성하고
그룹에 속하는 계정도 생성해준다.
공유 디렉토리 접근시 계정과 패스워드를 입력받도록 한다.
각 계정의 자신의 홈 디렉토리가 공유되도록 하고,
별도로 모든 계정이 접근 가능한 공유 폴더를 하나 만든다.
자신의 홈 디렉토리는 자신만 wrrite 가 가능하도록 하고
그룹멤버에게는 read 권한만 부여한다.
모든 계정이 접근 가능한 공유 폴더는
누구나 새로운 파일을 만들수 있지만
다른 사람의 파일은 읽기만 가능하게 한다.
------------------------------------------------------------------------------
우선 삼바 공유 폴더에 접근 가능한 그룹과 계정을 생성하자.
그룹명은 smbusers, 계정은 spnick으로 하기로 한다.
각 계정의 홈디렉토리는 /home 디렉토리 밑에 계정명과 동일한 디렉토리로 지정한다. (ex> /home/spnick)
(윈도우에서 공유폴더에 접근이 편하게 하려면 윈도우 계정과 동일한 이름으로 설정하는게 좋다.)
(동일한 이름으로 설정하지 않을 경우 참고: http://spnick.homelinux.net/1059 )
그룹 추가
$ sudo groupadd smbusers
그룹 확인
$ sudo cat etc/group
계정생성
$ sudo useradd -d /home/spnick -g smbusers -s /bin/bash -m -k /etc/skel spnick
생성한 계정에 패스워드 부여
$ sudo passwd spnick
삼바는 별도로 패스워드를 관리한다.
삼바용 패스워드를 설정해준다.
(윈도우에서 공유폴더에 접근이 편하게 하려면 윈도우 계정과 동일한 패스워드로 설정하는게 좋다)
$ sudo smbpasswd -a spnick
모든 계정이 접근 가능한 폴더를 생성해주자.
$ sudo mkdir /home/share
생성한 폴더의 그룹을 smbuser로 변경해준다.
$ sudo chgrp smbusers /home/share
권한은 1775로 준다. (sticky bit를 적용한다)
$ sudo chmod 1775 /home/share
sticky bit 를 사용하면 파일 또는 디렉토리를 지우는것은 그 파일 또는 디렉토리를 생성한 사람만 가능하게 된다.
적용후 확인해보면 다음과 같이 권한 끝이 t 로 되어 있다.
------------------------------------------------------------------------------
4 drwxrwxr-t 2 root smbusers 4096 2008-12-31 21:34 share
------------------------------------------------------------------------------
samba 설정 파일을 편집 한다.
$ sudo vi /etc/samba/smb.conf
공유 디렉토리 접근시 계정과 패스워드를 입력받도록 하기 위해
security = user 부분을 찾아서 주석을 해제해준다.
각 계정의 자신의 홈 디렉토리가 공유되도록 해준다.
;[homes] 부분을 찾아서 주석을 해제해준다.
다음과 같이 세팅
------------------------------------------------------------------------------
[homes] # 리눅스 홈 디렉토리 접근 설정
comment = Home Directory # 설명
browseable = no # 공유 목록(homes)이 보이지 않게 한다. 홈디렉토리만 보인다.
valid users = @smbusers # 접근 가능 유저 설정
path = /home/%S # 홈 디렉토리 경로 지정
read only= yes # 읽기 전용으로 설정
write list = %S # 자신만 write 가능하도록 한다.
create mask = 0644 # 생성 파일 디폴트 퍼미션
directory mask = 0755 # 생성 디렉토리 디폴트 퍼미션
hide dot files = yes # .으로 시작하는 파일이 안보이게 한다.
veto files = /.?*/ # .으로 시작하는 파일 생성을 차단한다.
------------------------------------------------------------------------------
그룹내 모든 계정이 접근 가능한 디렉토리 설정
------------------------------------------------------------------------------
[share] # 접속시 보여지는 공유 폴더 이름
comment = Share Directory # 설명
browseable = yes # 공유 목록(share)이 보이게 한다.
valid users = @smbusers # 접근 가능 유저 설정
path = /home/share # 디렉토리 경로 지정
read only = no # 쓰기 가능
create mask = 0644 # 생성 파일 디폴트 퍼미션
directory mask = 0755 # 생성 디렉토리 디폴트 퍼미션
------------------------------------------------------------------------------
프린터 공유는 기본적으로 세팅되어 있기 때문에
프린터 드라이버 설치만 끝나면 더이상 손대지 않아도 된다.
만약 윈도우즈에서 프린터 공유 완료후에
프린터 상태가 액세스 거부로 표시되거나
프린터 큐 확인이 안되는경우에는
[printers] 항목을 찾아서 다음 내용을 추가한다.
------------------------------------------------------------------------------
use client driver = yes
------------------------------------------------------------------------------
설정 저장후 설정이 제대로 되었는지 체크해본다.
$ sudo testparm
설정이 정상적으로 완료되었다면 samba 재시작.
$ sudo /etc/init.d/samba restart
우분투에서 samba를 이용해서 파일공유 사용하기
파일을 공유하려는 서버에서 아래와 같이 삼바 패키지를 설치한다.
sudo apt-get install samba smbfs
이 공유에 접근할 아이디와 비밀번호를 설정한다.
sudo smbpasswd -a 아이디
접근 아이디를 지울 때는 다음과 같이 한다.
sudo smbpasswd -x system_username
삼바 서버를 설정하기 위해 문서 편집기로 설정파일을 연다.
sudo vim /etc/samba/smb.conf
그 안에 다음과 같은 내용을 입력한다.
# 기본적인 설정
[global]
# 워크그룹이름은 맘대로 정한다.
workgroup = WORKGROUP
encrypt passwords = yes
# 접근을 허락할 아이피 범위
hosts allow = 192.168.
# 문자 인코딩 설정, 우분투는 utf-8을 기본적으로 사용하고
# 이것이 윈도우즈에서도 한글이 잘 깨지지 않는다.
unix charset=utf-8
dos charset=utf-8
#공유할 디렉토리 이름, 이것은 여러개를 만들 수도 있다.
[MyDoc]
comment = My Documents
path = /공유할/디렉토리
#읽기 전용으로 접근할지 여부
read only = no
browsable = yes
삼바의 설정은 매우 다양하게 할 수 있다.
아래에 다양한 삼바 설정을 설명했다.
삼바 설정이 끝났으면, 설정이 제대로 되었는지 검사한다.
sudo testparm
문제가 없으면 삼바를 실행한다.
sudo /etc/init.d/samba restart
우분투에서 패키지로 설치된 삼바는 컴퓨터가 켜질 때마다 실행될 것이다.
우분트 클라이언트에서 공유에 접근하는 법은 두가지이다.
첫째)
위치 메뉴 > 서버에 연결 을 선택한 후,
서비스 종류는 Windows공유를 지정하고,
사용자 이름과 연결에 사용할 이름 부분만 위에서 지정한 네트워크사용자아이디를 지정하면 된다.
둘째)
mount -t cifs //삼바서버아이피/삼바공유폴더이름 /공유가/지정될/로컬폴더 -o username=네트워크사용자아이디,password=비밀번호,iocharset=utf8,file_mode=0777,dir_mode=0777
-o 이후로는 띄어쓰기를 해서는 안된다.
윈도우즈에서 삼바 서버에 접근하려면,
네트워크 환경에서 새 연결을 설정하거나,
net use o: \\삼바서버아이피\삼바공유폴더이름 비밀번호 /user:네트워크사용자아이디
로 연결하면 되고,
삭제는 net use o: /delete
로 하면 된다.
====================================================================================
그외의 다양한 삼바 설정법은 다음과 같다.
▶ 네트워크 사용자 추가/편집/삭제 하는 법
☞ 네트워크 사용자 추가하기
sudo smbpasswd -a 네트워크사용자아이디
sudo vim /etc/samba/smbusers 를 한 후에, 아래의 내용을 추가한다.
네트워크사용자아이디 = "network username"
☞ 네트워크 사용자 편집
sudo smbpasswd -a 네트워크사용자아이디
☞ 네트워크 사용자 삭제
sudo smbpasswd -x 네트워크사용자아이디
----------------------------------------------------------------------------------
▶ 읽기 전용으로 폴더 공유하기 (인증=Yes)
sudo vim /etc/samba/smb.conf 로 설정파일을 열고
아래의 내용을 찾아서
security = user
아래처럼 바꾼다
security = user
username map = /etc/samba/smbusers
아래 내용의 앞에 있는 주석 표시를 제거한다.
;[homes]
;comment = Home Directories
;browseable = no
;valid users = %S
;writable = yes
삼바설정을 확인한다.
sudo testparm
삼바를 다시 시작한다.
sudo /etc/init.d/samba restart
----------------------------------------------------------------------------------
▶ 읽기/쓰기 권한으로 폴더 공유하기 (인증=Yes)
설정파일 안의 지정된 폴더에 아래의 옵션을 넣어준다.
(보기)
[MyFolder]
path = /home/my_id/my_shared_folder
writable = yes
----------------------------------------------------------------------------------
▶ 그룹 폴더들을 읽기 전용으로 공유하기 (인증=Yes)
sudo mkdir /home/group
sudo chmod 777 /home/group/
sudo vim /etc/samba/smb.conf
설정파일에서 아래의 내용을
security = user
아래처럼 바꾸고
security = user
username map = /etc/samba/smbusers
설정파일의 끝에 아래의 내용을 추가한다.
[Group]
comment = Group Folder
path = /home/group
public = yes
writable = no
valid users = system_username1 system_username2
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup
----------------------------------------------------------------------------------
▶ 그룹 폴더를 읽기/쓰기 권한으로 공유하기 (인증=Yes)
설정파일의 끝에 추가된 그룹 설정을 아래처럼 바꾼다.
[Group]
comment = Group Folder
path = /home/group
public = yes
writable = yes
valid users = system_username1 system_username2
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup
----------------------------------------------------------------------------------
▶ 공개 폴더를 읽기 전용으로 공유하기 (인증=Yes)
[global]
security = share
[public]
comment = Public Folder
path = /home/public
public = yes
writable = no
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup
아래처럼 nobody 계정을 만든다.
sudo smbpasswd nobody
----------------------------------------------------------------------------------
▶ 공개 폴더를 읽기/쓰기 권한으로 공유하기 (인증=Yes)
[global]
security = share
[public]
comment = Public Folder
path = /home/public
public = yes
writable = yes
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup
----------------------------------------------------------------------------------
▶▶▶ 네트워크 프린터에서 인쇄하기
삼바 설정파일에 다음의 내용을 추가하고
printing = cups
printcap name = cups
프린터 관리 서비스를 다시 시작한다.
sudo /etc/init.d/cupsys restart
----------------------------------------------------------------------------------
▶▶▶ 웹을 통해 삼바 설정 관리하기 : SWAT : Samba Web Administration Tool
▶ INETD과 SWAT 를 설치한다.
sudo apt-get install netkit-inetd
sudo apt-get install swat
☞ inetd daemon 설정을 편집한다.
sudo vim /etc/inetd.conf
☞ 아래의 내용을 찾아서
<#off#> swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat
☞ 아래처럼 바꾸어 준다.
swat stream tcp nowait.400 root /usr/sbin/swat swat
☞ 대몬을 재시작한다.
sudo /etc/init.d/inetd restart
☞ 만일, root비밀번호를 설정하지 않았다면, 아래처럼 설정한다.
sudo passwd root
☞ http://localhost:901 주소로 접속한다.