By James T. Dennis, answerguy@ssc.com |
질문 : From Romulus Gintautas on Sun, 14 May 2000
우선 시간 내준데 대해 감사드린다. 나는 ls 명령에 대해 man 을 실행해 보았지만 내가 찾는 것을 발견하지 못했다. 나는 도스의 dir /s 에 해당하는 리눅스 명령어를 찾고 있다. 나는 리눅스(Red Hat 6.0)의 특정 디렉토리에 얼마나 많은 데이터가 저장되어 있는지를 알고 싶다. 당신도 알다시피 도스에서는 해당 디렉토리에 들어가서 dir /s 명령을 주면 된다. 답: 리눅스에서는 다른 명령을 사용한다. 당신이 원하는 것은 ‘du’ (disk usage) 명령이다. 아래와 같다. du -sck foo bar 그러면 foo 와 bar 디렉토리의 모든 파일들이 사용하는 디스크 용량을 알려준다. 또한 합계도 알려준다. 수자는 kbyte 이다. “foo” and “bar”는 디렉토리일 필요는 없다. 파일과 디렉토리 다 쓸 수 있다. 몇 개든 가능하다. 또 이 명령 스위치를 섞을 수 있다. 디스크 가용 용량을 알기 위해서는 ‘df’ (disk free) 명령을 쓸 수 있다. 이 명령도 많은 옵션이 있다. df 명령만 주면 현재 마운트된 모든 정규 파일 시스템에 대한 가용 디스크 공간을 알려준다. (6가지 정도의 df 명령에 나타나지 않는 - /proc, devpts, devfs, shmfs 등 - 가상 파일시스템이 있다. 이들은 가용 디스크 공간이란 개념을 적용할 수 없다.) 보다 잘 알려면 man 페이지를 읽어라. 더 자세히 알려면 ‘info’ 를 읽어라. ls 보다 더 자세한 정보를 알려면 혹은 일정 서식의 정보를 알려면 find 명령을 사용해야 한다. 아래는 어떤 기준에 맞는 일련의 파일들을 찾아 특정한 정보를 보여주거나 그들에 대해 어떤 명령을 실행하는 작은 프로그램이다. find 는 유닉스에서 가장 강력한 명령 중 하나이다. 간단한 예를 보여 주겠다. 내가 두 개의 디렉토리의 평균 파일 크기를 알고자 하면 아래 명령을 준다. find foo bar -type f -printf\ ‘find’ 명령은 foo와 bar 디렉토리/파일에서 “f” (정규 파일) 형태의 것을 찾아 그들의 크기를 보여 준다. 여기서는 다른 것은 없이 오직 한 줄에 크기만을 바이트로 표시한다. ‘awk’ 명령은 평균을 계산한다. (awk는 PERL보다 단순한 프로그램 언어이다) 현재 디렉토리에서 일주일 이상된 파일들만을 찾으려면 아래 명령을 쓴다. find . -ctime +7 일주일이 지나지 않은 파일을 찾으려면 find . -ctime -7 ....(그런데 유닉스는 파일에 세가지의 시각표를 갖고 있다. ctime 은 “inode”에 대한 시각표이다. 파일의 메타데이타가 수정되면 mtime가 데이터 블록이나 메타데이타가 접근하였을 때의 시각이다. atime는 마지막 억세스(읽기)시각이다.) 현재의 GNU ‘find’ 는 60개의 옵션과 스위치를 갖는다. ( 복잡한 결합을 표현하는 -and, -or, -not 을 포함한다.) -printf 와 -fprintf 는 25개의 다른 대치 가능한 파라메터와 다양한 포맷 옵션을 갖는다) find로부터 쓰게 할 수 없는 유일한 stat 정보 비트는 파일이 위치한 장치번호이다. (유닉스에서 모든 파일은 장치번호와 inode의 조합으로 식별될 수 있다. Inode는 어느 지정 장치 내에서는 중복되지 않는다. find는 또한 아직은 어떤 특정 플랙(BSD UFS) 이나 “attributes” (Linux ext2)을 보여주거나 테스트하는 능력이 없다. 나는 그러한 기능을 주는 패치를 만들려고 한다. 너무 간단한 대답인 것 같지만 나는 이제 리눅스를 시작하고 있다. 앞으로 더 많이 배우려고 한다.
질문: From Cleary, James R. on Fri, 07 Apr 2000
나는 레드햇 6.0을 새로 설치했다. 그런데 나는 telnet로 들어갈 수 없다. 기본 설정에는 가능하도록 돼 있지 않은가? 어떤 조언도 감사하겠다. 답: telnet을 할 수 없다는 의미가 무엇인가? telnet 클라이언트가 오랫동안 기다리고만 있는가? “connection refused?” 같은 에러 메시지가 나오는가? 그 메시지가 바로 나오는가? 아니면 얼마 후에 인가? telnet을 할 때 도메인 네임을 사용하는가? 아니면 주소로 하는가? (만약 ping에서와 같은 형식을 사용한다면 문제가 없다) 디폴트 설정이 telnet을 가능하게 한다는 말에는 동의할 수 없다. 리눅스는 기존의 전문가가 관리하는 유닉스 보다 훨씬 광범위한 사용자 층을 갖고 있다. 모두가 telnet host 사용자라는 가정은 맞지 않다. 또한 telnet은 오래되고 낡은 원격 접속 기법이다. 당신은 클라이언트와 서버간의 전송이 암호화되고 스프핑이나 스니핑을 막도록 (encrypted, unspoofable, unsniffable) ssh, STEL, ssltelnet를 사용하거나 Kerberos FreeS/WAN IPSec 를 설치해야 한다. ‘그러나 나는 파이어월이 있다’ 또는 ‘단순한 가정내 시스템이다’라는 말은 모래성이다. (한 군데에 문제가 발생하면 전체가 무너진다.) 어쨌든 당신이 telnet이 필요하고 그것이 목적에 맞다면 일반적인 고장 치료법을 알려주겠다. 이들은 ssh와 STEL에 적용된다. ping은 문제 없다고 했다. 명령을 같은 호스트에서 사용하고 주소 또는 이름도 같은 형식으로 사용했다면 여기에 가장 그럴 듯한 원인이 있다. 1) 당신의 세션은 실패한게 아니고 단지 오랜
시간이 걸리고 있을 뿐이다. 언서가이의 Issue 45: More “Can’t Telnet Around
Issue 38: Telnetd and pausing Issue 30: tv cards and dual monitor 2) telnet 데몬 패키지를 설치 않았다. telnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd 3) inedt 데몬이 작동하지 않고 있다.(이는 /etc/inetd.conf를
읽어서 그 포트들의 연결 요청을 (별로 가능성은 없지만 네임서비스 처리에서 잘못될 경우이다. /etc/services 파일이 서비스/프로토콜 이름을 IP 포트 번호와 전송계층프로토콜(TCP, UDP 등)로 매치할 것이다. 그 파일이 잘못되면 또는 /etc/nsswitch.conf 가 NSS 라이브러리가 애매하고 잘못된 백엔드를 가르킨다면 inetd는 여러 서비스에 대해 잘못된 포트를 찾고 있을 것이다. 이런 경우는 보지는 못했지만 가능성은 있다. ) 4) 방화벽이나 패킷필터링 시스템이 서버와 클라이언트
사이에 있다. 이것이 ICMP는 5) telnet 클라이언트 프로그램이 깨졌거나 클라이언트
라이브러리에 문제가 있다. 이런 문제를 물을 때는 실패한 형태(증상)을 확실히 하는게 중요하다. 에러 메시지를 알려주는게 중요하다. 이 증상을 일어나게 한 명령을 정확하게 알려주어야 한다. 아쉽지만 질문을 잘 꾸미는 것은 때로는 대답을 잘 하기보다 어렵다. 이러한 장애를 찾는 방법으로써 Ping에서 시작하는 것은 좋은 생각이다. 이는 가장 하위 단계에서 나타나는 문제점들을 제거해 준다. 즉 랜카드는 구성되었나? 케이블은 꼽혀 있나? 등. 또한 대상으로 ‘traceroute’ 하는 것도 중요하다. 이는 패킷이 당신의 트래픽을 필터링하는 엉뚱한 장치로 가는 것을 보여 준다. 만약 당신이 대상 서버의 콘솔 접근이 가능하다면 (카본 프락시를 포함 즉 그 앞에 전화를 받을 수 있는 사람이) 당신은 ‘tcpdump’ 명령을 실행할 수 있다. 이는 지정된 네트워크 인터페이스로부터 오는 모든 패킷 헤더를 보여 준다. tcpdump는 당신이 보기를 원하는 종류의 정보를 보여 주고 다른 정보는 제거한다. 리눅스 가제트를 보면 tcpdump에 대한 많은 사용 예를 볼 수 있다. 아래와 같다. tcpdump -i eth0 -n host $YOURCLIENT and
port 23 이것으로 안되면 ‘in.telnetd’ 를 ‘strace’ 스크립트로 대치할 수 있다. in.telnetd 파일을 in.telnetd.real 로 대치하고 아래와 같이 스크립트를 사용할 수 있다. #!/bin/sh 나는 이 부분을 이미 설명했다. 아래 링크를 참고 하라. Issue 20 Issue 17 (브라우저에서 페이지에서 찾기 -- Netscape 에서는 [Alt][F] Lynx 에서는 / 키-- 를 사용해 ‘strace’를 찾아 보라. ) ‘strace’ 기법은 매우 쉽다. Linuxcare 에서 우리는 줄곧 사용한다. 이는 가끔 사라진 구성 파일, 파일이 있어야 할 디렉토리, 허가모드 착오 찾기 등의 모든 일을 해 준다. ‘ltrace’ 라는 비슷한 툴도 있으나 조금 더 높은 레벨의 정보를 제공한다. ‘tcpdump’ 와 ‘strace’ 는 리눅스에서 거의 모든 문제점을 찾아 준다. 리눅스 지원자들에게 “X-Ray” 기계나 CAT/PET 스캐너와 같다. 그러나 나는 그들을 함부로 쓰라고 말하지 않는다. 우선은 일반적인 문제점들을 먼저 치료하고 나서 다음에 외과적 진단(“surgical diagnostics.”) 을 필요로 하는지 판단하라.
By James T. Dennis, answerguy@ssc.com |