'운영체제'에 해당되는 글 604건

  1. 2008.10.27 SSH 접속 시 공개키를 사용하여 접속하기
  2. 2008.10.22 네트워크 파일 시스템 관련 옵션 (NFS with fstab option)
  3. 2008.10.22 각종 파일시스템 MOUNT 명령어 정리
2008. 10. 27. 09:23

SSH 접속 시 공개키를 사용하여 접속하기

이미지도 함께 보려면 : http://blog.naver.com/choibit/140054432679


리눅스의 OpenSSH는 신뢰성있는 원격 접속을 지원해 준다. SFTP를 사용할 수 있도록 해주며, 암호화 통신을 할 수 있다. 이런 SSH는 더욱 강력한 접속 기능을 가지고 있는데 바로 공개키를 이용한 접속이다.

 

즉 서버에는 공개키가, 클라이언트는 개인키를 가지고 있어야지만 SSH접속을 할 수 있도록 할 수 있다.

 

이 접속을 하기 위해서는 리눅스 서버에 OpenSSH가 설치되어 있어야 한다.

그리고 키생성 및 SFTP접속을 위해서 비트바이즈의 터널레이어를 이용하도록 하겠다.

 

터널레이어는 http://www.bitvise.com에서 최신버전을 다운로드 받을 수 있다.

무료이며, 프리소프트웨어이다.

 

1. SSH설정하기

 

서버의 SSH를 설정해보자. yum을 이용하여 openSSH를 설치한 경우나, 리눅스 설치시 설치된 경우,

/etc/ssh 폴더로 ssh설정 파일이 들어가 있다.

컴파일을 통한 설치시 별도 설정파일 저장을 설정한다면, 설정파일이 있는 곳을 확인하면 될 것이다.

 

다른 파일을 건들일 필요는 없다. 설정파일에 sshd_config 파일을 불러 온다.

 

     20 # HostKey for protocol version 1
     21 #HostKey /etc/ssh/ssh_host_key
     22 # HostKeys for protocol version 2
     23 HostKey /etc/ssh/ssh_host_rsa_key
     24 HostKey /etc/ssh/ssh_host_dsa_key

 

23번 24번줄에 # 되어 있는 부분을 삭제해 준다. 공개키로 접속을 허용한다는 이야기다.

 

     43 RSAAuthentication yes
     44 PubkeyAuthentication yes
     45 AuthorizedKeysFile      .ssh/authorized_keys

 

43번, 44번, 45번 줄의 #을 없에준다.

 

RSAAuthentication를 사용하며, PubkeyAuthentication를 사용한다는 뜻이다.

AuthorizedKeysFile는 공개키의 위치를 알려주는 것이다. 각 유저의 .ssh폴더 아래에 authorized_keys라는 파일 이름으로 공개키를 저장한다는 이야기이다.

 

     60 PasswordAuthentication yes

 

60번 줄에는 다음과 같은 설정이 있다. 이 설정은 비밀번호를 이용하여 SSH를 로그인 한다는 이야기이다. 일단 yes로 해놓자. 사실 no로 하여 공개키를 이용한 접속만 허용해야 하나, 설정이 완료된 후 접속이 되는지 안되는지 확인한 후에 설정을 바꾸어 주는것이 좋다. 왜냐하면 잘못 설정한 후 접속이 끊겨 버리면 서버에 직접 가서 설정을 해줘야 하기 때문이다. 꼭 기억하자. 비밀번호를 이용한 접근은 완벽한 보안을 가져올 수 없다. 나중에 꼭 no로 변경하도록 하자.  

 

저장을 하고 빠져나오자.

 

[root@Belief ssh]# service sshd restart

 

sshd를 재시작 해준다.

 

2. 공개키, 개인키 만들기

 

이번에는 공개키와 개인키를 만들어 보자. 키 매니저로 서버에서 만들 수 있지만,편리하게 Tunnelier 를 이용하여 설정해 보자.

이것을 이용하여 SFTP를 연결해 사용할 수도 있다.

 

http://www.bitvise.com/download-area에 가서 Tunnelier installer를 다운받은 후 설치한다.

 

설치가 완료되면 Tunnelier를 실행해 보자. 그 다음 User Keypair manager를 클릭한다.

 

 

클릭 후 Generate New를 클릭해 보자.

 

 

 그럼 왼쪽과 같은 창이 뜬다.

창에서 Passphrase에 인증서 비밀번호를 설정할 수 있다. 비밀번호를 설정하고 싶으면 입력하면 되고, 설정을 하고 싶지 않으면  그 상태에서 아래의 Generate 버튼을 눌러 설정할 수 있다.

 

 당연한 이야기이지만 인증서 비밀번호 설정시 확인 비밀번호도 넣고, 일치해야 키가 생성된다.

 

 

 

 

 

 

 

 

 

 

 

 

그럼 아래와 같이 키가 생성된것을 확인할 수 있다. .

 

 

 그럼 생성된 키를 가지고 공개키와 개인키를 생성해 낼 수 있다. Exprot 버튼을 눌러보자.  

 

 Exprot public key로 공개키를 저장할 수 있다. 확장자는 .pub로 저장할 수 있으며, 확장자 자체는 큰 문제가 되지 않는다. 리눅스의 경우 OpenSSH 포멧으로 설정을 하면 된다. 또한 SSH2를  직접 설치한 경우라면 SSH2포멧으로 저장을 하면 된다.

 

 Exprot private key로 개인키를 저장할 수 있다. 어떠한 포멧이든 상관 없다. Secure CRT를 이용하여 리눅스의 OpenSSH에 접근하고자 한다면 OpenSSH format로 설정하여 저장하면 된다. 이때 확장자는 다르되, 파일 이름은 동일하게 해줘야 한다.

 

 

 

 

 

 

그럼 공개키 및 개인키를 생성하였다. 그 다음에는 서버에 공개키를 설정해 보도록 하자.

 

3. 서버에 공개키 설정

 

 위 sshd_conf 설정에서도 보았듯이,(45 AuthorizedKeysFile      .ssh/authorized_keys 를 이야기 한다.) 각 유저의 홈디랙토리에 .ssh라는 디랙토리를 생성한다.

 

[charmhcs@Belief ~]$ mkdir .ssh

 

그 후 퍼미션을 설정해 줘야 한다. 중요하다. 퍼미션이 맞지 않으면 로그인을 할 수 없게 되어 있다.

 

[charmhcs@Belief ~]$ chmod 755 .ssh

 

그 후 .ssh폴더에 *.pub키를 업로드 한다. 그리고 빈 파일의 authorized_keys 라는 파일을 생성한다.

 

[charmhcs@Belief ~]$touch authorized_keys

[charmhcs@Belief ~]$cat charmhcs.pub >>authorized_keys

 

그 후 퍼미션을 조정해 준다.

[charmhcs@Belief ~]$ chmod 644 authorized_keys

 

여기서도 퍼미션이 맞지 않으면 접속을 할 수 없다.

 

여기서 하나의 계정을 여러명의 키로접근할 수도 있다. 계정 홈디랙토리아래  .ssh에 공개키를 업로드한 후

 

[charmhcs@Belief ~]$cat bestvip.pub >>authorized_keys

를 한다면 authorized_keys에는 charmhcs.pub 와 bestvip.pub 정보를 모두 가지게 되며, 두개의 키로 하나의 계정에 접근할 수 있게 된다. 예를들어 한 계정에 여러명의 개발자가 접근하길 원한다면 위에 처럼 설정을 해주면 여러명의 개발자가 접근할 수 있게 된다.

 

4. 원격 접속 프로그램 연결

 

 그럼 설정이 모두 끝났다. SSH접속 프로그램 SecureCRT같은 프로그램.. 을 이용하여 접속을 해보자.

접속을 하기 위해서 공개키 접속설정을 해줘야 한다. 개인키와 공개키 모두를 등록한 후 접속을 해보자. 그럼 별도의 로그인 작업 없이 키를 통해서 서버에 접속할 수 있다. (이때 공개키에 비밀번호를 걸어 놓았으면, 비밀번호를 입력해 줘야 동작을 한다.)

 

 또한 Tunnelier를 이용하여 접속도 가능하다. 키를 생성했기 때문에 별도의 설정과정은 필요하지 않고 키 슬롯에 맞추어 서버 주소(IP)와 계정을 넣어 주면 서버로 접속할 수 있으며, 심플하면서도 강력한 SFTP프로그램을 이용할 수 있다 .(터미널 프로그램도 있지만 솔직히 별로다.)그리고 별도의 설정을 해주면 SFTP to FTP브릿지 모드로도 사용이 가능한 강력한 프로그램이다. (사실 이 기능이 주된 기능 중 하나이다.)

 

각 터미널별의 별도 설정은 아주 쉬우니, 직접 해보도록 하자.

 

 

 

SSH 공개 키를 이용한 접속하기

 

SSH는 기본적으로 아이디와 패스워드를 입력하여 접속을 한다. 그렇지만 여러가지 이유로 키를 이용해야 할 때가 있다. 대표적인 예로는 cron을 이용하여 rsync로 백업을 할 때ssh로 터널링을 하는 경우가 많다. 이때 공개키를 사용하지 않는다면 일일이 아이디와 패스워드를 입력해야 한다면 자동백업 자체가 불가능하게 된다.

 

SSH 서버 환경설정(sshd_config 설정)

공개 키를 이용하여 접속하기 위해서 먼저 SSH 서버에서 공개 키 인증에 관련된 옵션을 설정해야 한다. /etc/ssh/sshd_config 파일에서 “PubkeyAuthentication yes” 옵션이 활성화되어 있어야 원격지 시스템의 패스워드를 입력하지 않고 ssh에서 생성한 개인 키의 프레이즈를 사용할 수 있다.

그렇지만 처음에서는 시스템에 공개 키가 존재하지 않기 때문에 접속이 되지 않는다. 접속이 되 

지 않기 때문에 필요한 파일을 업로드 시킬 수 없게 된다. 그러므로 먼저 “PasswordAuthentication yes” 또는 “UsePAM yes”로 설정하여 키를 생성 후 ssh 서버로 공개 키를 복사하여야 한다. ssh 서버에 로그인할 때 공개 키 방식, PAM, 패스워드 방식순으로 설정되어 있어 공개 키 방식에 의한 인증이 실패하면 PAM, 패스워드 방식으로 인증을 처리하게 된다. 공개 키만으로 운영을 한다면 서버 관리자가 사용자루부터 공개 키를 메일이나 또는 파일로 전송받아 직접 등록해 주어야 하기 때문에 관리상 매운 힘들기 때문에 두 개를 동시에 지원하다.

 

[root@soo0e ~]# vi /etc/ssh/sshd_config

PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_keys

PasswordAuthentication yes

ChallengeResponseAuthentication yes

UsePam yes

 

 

로컬 시스템에서의 접소을 위한 키 생성 

SSH 통신에 사용할 한 쌍의 키를 생성해야 하는데 –t 옵션을 이용하여 ssh2 프로토콜을 위한 dsa 또는 rsa 개인키 및 공개 키를 생성한다. 만약 프로토콜 1 dsa 비밀키 및 공개키를 생성하기 위해서는 “-t dsa1”과 같이 생성할 수 있으나 프로토콜 1은 하위 호환성이 필요할 때 생성하도록 하며 프로토콜 2를 사용할 것을 권고한다. “ssh-keygen –t dsa”와 같이 실행을 하였을 때 생성한 한 쌍의 키를 저장할 디렉토리를 지정해야 하는데 그냥 엔터를 입력하면 사용자 홈 디렉토리의 하위 디렉토리 즉 $HOME/.ssh 디렉토리에 id_dsa, id_dsa.pub 파일을 생성한다. 개인키(id_dsa) 및 공개 키(id_dsa.pub)에서 사용할 암호를 입력하여 두 번의 확인 절차를 거치면 키가 생성된다. 테스트를 위해서 가상 터미널에 root 사용자로 로그인을 하여 키를 생성한다.

[root@soo0e ~]# ssh-keygen -t dsa

Generating public/private dsa key pair.

Enter file in which to save the key (/root/.ssh/id_dsa):

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_dsa.

Your public key has been saved in /root/.ssh/id_dsa.pub.

The key fingerprint is:

50:39:16:d4:7a:99:5e:4e:82:09:88:86:9d:fd:d0:c5 root@soo0e

 

파일을 생성한 후 정상적으로 파일이 생성되었는지 확인한다.

[root@soo0e .ssh]# pwd

/root/.ssh

[root@soo0e .ssh]# ls

id_dsa  id_dsa.pub

 

공기 키를 서버의 홈 디렉토리로 복사 

공개 키를 scp sftp 또는 ftp를 이용하여 원격지 서버로 id_dsa.pub 파일을 authorized_key로 변경하여 복사한다.

[root@soo0e .ssh]# mv id_dsa.pub authorized_keys

[root@soo0e .ssh]# ls

authorized_key  id_dsa

 

~./ssh 퍼미션 설정 

 

클라이언트 시스템 

   

퍼미션 

~/.ssh 디렉토리 

700

~/ssh/id_dsa 개인키 파일 

600

 

원격지 서버 시스템 

   

퍼미션 

~/.ssh 디렉토리 

700

~/.ssh/authorized_keys

644 (or 600)

 

공개키를 이용한 접속 

 

[root@soo0e ~]# ssh root@192.168.2.11

Last login: Sun Sep 16 22:17:50 2007 from 192.168.2.12

[root@soo0e ~]#

 

필자는 공개키를 생성할 때 프레이즈 값을 입력하지 않아서 프레이즈 값을 물어보지 않고 바로 접속이 되었다. 만일 프레이즈 값을 입력하였다면 프레이즈 값을 입력해야 접속을 할 수 있다.

 

클라이언트에 있는 개인키를 다른 클라이언트에 복사하여 사용 할 수도 있다. , 키를 하나 생성하면 키를 복사하여 여러 개의 클라이언트에서 함께 사용이 가능하다는 것이다.

 

현관에 자물쇠(서버의 공유키)가 하나 있다면 가족 여럿이 열쇠(클라이언트의 개인키)를 복사하여 공동으로 사용하는것과 같은 이치라고 할 수 있다.


Trackback 0 Comment 0
2008. 10. 22. 10:07

네트워크 파일 시스템 관련 옵션 (NFS with fstab option)

이름
       nfs - nfs fstab 형식과 옵션

개요
       /etc/fstab

설명
fstab  화일에는 어떤 화일 시스템을 어디에 그리고 어떤 옵션을 가지고 마운트할 것인
지에대한 정보가 들어있다. NFS 마운트의 경우 서버명 그리고 export하는 서버의디렉
토리, 로컬 마운트 포인트 그리고 NFS 관련 옵션이 필요하다.


NFS 마운트를 위한/etc/fstab 화일의 예를 보겠다.

server:/usr/local/pub    /pub   nfs    timeo=14,intr

옵션
rsize=n       
NFS 서버로부터 읽어들이는 바이트 수를 지정한다. 기본값은 커널에 따라다른데 현
재로서는 1024 바이트이다.

wsize=n       
NFS 서버에 쓰기를 할 때 사용하는 바이트 수를 정한다. 기본값은 커널에 따라다른
데 현재로서는 1024 바이트이다.

timeo=n       
RPC 타임아웃이 생기고 나서 첫번째 재전송 요구를 보낼 때 사용되는 시간으로서
1/10 초 단위이다. 기본값은 7 * 1/10 초이다. 첫번째 타임아웃이 생기고 나서는타
임 아웃 시간이 최대치인 60 초에 이르거나 너무 많은 재전송 요구가 벌어질때까지
타임아웃 시간이 2 배로 변화한다. 만약 화일 시스템이 하드 (hard, 옵션을참고 하
기 바란다) 마운트되어있다면 각각의 타임 아웃 시간은 2 배로 증가하고 재전송 시
도가 일어날 때도 2 배로 증가한다. 최대 타임아웃 시간은 60 초이다. 네트웍 속도
가   느리거나 서버자체가 느리다든지 여러 개의 라우터와 게이트웨이를 거칠 때는
마운트 당시 타임아웃 시간을 늘려주는 것이 좋다.

retrans=n     
주 타임아웃을 발생시키는 부 타임아웃과 재전송 횟수를 정한다. 기본값은 3 번 의
타 임아웃이다. 주 타임 아웃이 일어나면 화일 작업이 중지되거나 콘솔 상에 "서버
가 반응하지 않음 "server not responding""이라는 메시지가 출력된다.

acregmin=n    
서버에게 최신 정보를 요청하기에 앞서 일반 화일의 속성이 캐쉬되어야 할 시간 의
최소값을 정한다. 기본값은 3 초이다.

acregmax=n     
서버에게 최신 정보를 요청하기에 앞서 일반 화일의 속성이 캐쉬되어야 할 시간의
최대값을 정한다. 기본값은 60 초이다.

acdirmin=n    
서버에게 최신 정보를 요청하기에 앞서 디렉토리의 속성이 캐쉬되어야 할 시간의최
소값을 정한다. 기본값은 30 초이다.

acdirmax=n    
서버에게 최신 정보를 요청하기에 앞서 디렉토리의 속성이 캐쉬되어야 할 시간의최
대값을 정한다. 기본값은 60 초이다.

actimeo=n     
이 값을 다음 acregmin, acregmax, acdirmin, 와 acdirmax 에 똑같이 적 용 한 다.
기본값은 없다.

retry=n        
백그라운드에서 진행 중인 NFS 마운트 작업이 포기하기 전까지 실행할 횟수를정한
다. 기본값은 10000 번이다.

namlen=n      
NFS 서버가 RPC 마운트 프로토콜의 버전 2 를 지원하지 않을 때 원격 화일시스템에
서 지원되는 화일명의 길이를 명시한다. POSIX pathconf 함수를 지원하기위해서 사
용된다. 기본값은 255 개의 문자이다.

port=n        
NFS 서버와 연결할 수 있는 포트 번호를 정한다.  만약 0 이라면( 기본값 )  원 격
호 스 트의 포트매퍼(portmapper) 에게 질의하여알아내도록 한다. 만약 포트매퍼에
NFS 데몬이 등록되어 있지 않은 경우에는 2049 라는 표준 NFS 포트 번호가 사용 된
다.

mountport=n   
mountd 포트 번호 지정하기.

mounthost=name
mountd 를 실행 중인 호스트 명을 정한다.

mountprog=n    
원격 호스트의 마운트 데몬과 접속하기 위해 사용할 수 있는 별도의 RPC 프로그램
번호를 정한다. 만약 여러 개의 NFS 서버를 운영하고 있을 때 사용한다.  기본값은
표준 RPC 마운트 데몬 프로그램 번호인 100005 이다.

mountvers=n   
원격 호스트의 마운트 데몬와 접속하기 위해 사용하는 별도의 RPC 버전 번호를명시
한다. NFS 서버를 여러 개 운영하고 있을 때 사용한다.  기본값은 버전 1 이다.

nfsprog=n     
원격 호스트의 NFS 데몬과 접속하기 위해 사용하는 별도의 RPC 프로그램 번호를 정
한다. NFS 서버를 여러 개 운영하고 있을 때 사용한다. 표준 RPC NFS 데몬프로그램
번호인 100003 이 기본값이다.

nfsvers=n     
원격 호스트의 NFS 데몬과 접속하기 위해 사용하는 별도의 RPC 버전 번호를정한다.
NFS 서버를 여러 개 운영하고 있을 때 사용한다. 기본값은 버전 2 이다.

bg            
만약 첫번째 NFS 마운트 시도가 타임아웃 걸리면 백그라운드에서 실행을 계속한다.
기본값은 백그라운드로 실행하지 않고 그냥 포기한다.

fg            
첫번째 NFS 마운트 시도에서 타임아웃이 걸리면 그 즉시 포기해버린다.  기본값 이다.

soft          
NFS  화일 작업에서 주 타임아웃이 걸리면 프로그램에게 I/O 에러를 보고한다.  기
본값은 무한히 NFS 화일 작업을 재시도 하는 것이다.

hard          
NFS 화일 작업에서 주 타임아웃이 걸리면 콘솔 상에 "server not responding", "서
버가 반응하지 않음"이라고 출력하고 무한히 재시도한다.  이것이 기본값이다.

intr          
주 타임아웃이 생기고 하드 마운트된 상태라면 화일 작업을 중지하도록 시그널을보
내도록 허용하고 EINTR 시그널을 보내다. 기본값은 화일 작업을 인터럽트하지않 는
것이다.

posix         
POSIX  규칙을 사용하여 NFS 화일 시스템을 마운트한다. 화일명의 최대 길이에대하
여 POSIX pathconf 함수를 제대로 지원하기 위해서 사용된다. 원격 호스트 는  RPC
마 운 트 프로토콜 버전 2 를 지원해야 한다. 많은 NFS  서버들이 아직버전 1 만을
지원하고 있다.

nocto         
화일이 생성될 때 새로운 속성을 가져오지 않도록 한다.

noac          
모든 속성 캐쉬를 해제한다. 서버 효율을 떨어뜨리기는 하지만 두 개의 다 른  NFS
클라이언트로 하여금 서버 상의 공통 화일 시스템에 쓰기 작업을 할 때좋은 효율을
얻을 수 있게 해준다.

tcp           
NFS 화일 시스템을 기본값인 UDP 가 아니라 TCP 프로토콜을 사용하여 마운트하도록
한다.  많은 NFS 서버들이 오로지 UDP 만을 지원한다.

udp           
NFS 화일 시스템을 UDP 프로토콜로 마운트한다. 기본값.


수 치 값을 동반하지 않는 단독 옵션들은 no 를 앞에 붙이는 형태로서도 사용할 수있다. 예를 들어
nointr 이라는 옵션은 화일 작업을 가로챌 수 없도록 한다.

관련 화일

       /etc/fstab

참고
       fstab(5), mount(8), umount(8), exports(5)


NFS 서버 & 클라이언트 설정

[목차]
1. NFS 정의
2. NFS 서버 설치 및 설정
3. NFS 클라이언트 설정

1. NFS 정의
1-1. Network File System의 약자로, Sun Microsystem사가 만든 파일 시스템이다.
1-2. 네트웍크를 통하여 다른 서버의 하드를 자신의 서버처럼 사용 할 수 있다.
1-3. UDP protocal을 사용하며, LAN 환경에서 사용된다.

2. NFS 서버 설치확인 및 설정
2-1. NFS 서버 프로그램 설치 여부 검사
[root@ancigo root]# rpm -qa | grep nfs-utils
nfs-utils-1.0.6-1
[root@ancigo root]# rpm -qa | grep portmap
portmap-4.0-57
설치가 안되어 있으며 OS버전에 맞게 rpm을 다운 받아서 설치하기 바란다.

2-2. NFS server 구성 요소
- rpc.nfsd : NFS 데몬으로 실제 NFS로 연결된 파일시스템의 공유를 가능하게 해주는 데몬.
- rpc.mount : RPC(Remote Procedure Call)기반에서 NFS 사용을 위한 마운트를 가능하게 하는 데몬
- portmap : NFS가 원래 RPC 기반하에서 작동되는 것이기 때문에 rpcbind를 필요로하며, rpcbind의 매핑(RPC program number mapper)을 위해 필요한 데몬이다.
- /etc/export : NFS 클라이언트에서 NFS서버로 마운트를 허용할 디렉토리이고, 설정파일이다.

2-2. NFS 서버 설정하기
시스템 일부 파일 시스템을 공유하기 위해 /etc/exports 파일에 등록해야 한다.
등록 패턴은 아래와 같다.
<export할 디렉토리> <허가할 클라이언트> (Option…)

[사용옵션]
ro : read only. 읽기 전용으로 공유한다.
rw : read and write, 읽기/쓰기 모드로 공유하며 기본값이다.
root_squash : 클라이언트에서 루트를 서버 상에 nobody 사용자로 매핑한다.
no_root_squash : 클라이언트의 root와 서버의 root를 동일하게 매핑한다.
insecure : 인증되지 않은 접근도 가능하다.
noaccess : 지정된 디렉토리는 접근을 금지한다.
secure : 클라이언트 마운트 요청시 포트를 1024 이하로 한다.
sync : 파일 시스템이 변경되면 즉시 동기화한다.
all_squach : root를 제외하고 서버와 클라이언트의 사용자를 동일한 권한으로 설정한다.
no_all_squach : root를 제외하고 서버와 클라이언트의 사용자들을 하나의 권한을 가지도록 설정한다.

[사용예]
[root@ancigo root]# vi /etc/exports
- /home/ftp/pub *.linuxone.co.kr(ro)
-> /home/ftp/pub 디렉토리를 linuxone.co.kr 도메인을 사용하는 모든 사용자가 읽는 것을 허용한다.
- /pub(ro,insecure,root_squash)
-> /pub 디렉토리를 읽기 전용으로 마운트하고 인증 없이 사용 가능하며 모든 컴퓨터의 루트를 서버에서 nobody로 접근할 수 있게 한다.

2-3. nfs 서비스 시작
# 서비스 시작
- NFS는 RPC(Remote Procedure Call)라는 것을 사용하기 때문에 port mapper라는 특별한 데몬이 먼저 떠 있어야 한다.
[root@ancigo root]# rpcinfo -p

rpcinfo : 포트매퍼에 연결할 수 없습니다. RPC : 원격 시스템 오류 ?연결이 거부됨
데몬이 실행이 안되어 있어서 오류가 발생. 아래와 같이 데몬을 실행시켜 준다.
[root@ancigo root]# service portmap start
[root@ancigo root]# service nfs start
[root@ancigo root]# service nfslock start

# 서비스 확인
[root@ancigo root]# exportfs : 현재 공유되어 있는 설정을 확인할 수 있다.
[root@ancigo root]# exportfs -v : 공유된 설정을 자세하게 옵션까지 확인이 가능하다.
showmount -e [호스트명 | NFS server IP] 을 이용해서 서버가 export하는 마운트를 확인할 수 있다.
showmount [클라이언트 호스트명 | IP] 을 이용해 어느 클라이언트가 이용하고 있는 지 확인

[exportfs 명령어 사용법]
exportfs 명령어는 nfs서버를 다시 시작하지 않고도 공유목록을 수정할 수 있다.

- a : /etc/exports파일을 읽어 들인다.
- r : /etc/exports파일을 다시 읽어 들인다.
- u IP:/디렉토리 : 입력한 디렉토리를 공유목록에서 제외한다.
- v : 현재의 공유 목록을 확인한다.


4. NFS 클라이언트 설정
4-1. NFS client 관련된 파일과 명령어들

[자주쓰이는 옵션]
hard/soft
마운트시킬 때 hard옵션을 준 경우, 클라이언트는 서버가 응답할 때까지 계속 마운트를 시도하며, 응답이 없는 경우에는 umount 명령을 이용하여 마운트를 취소할 수도 없게 된다. 마운트의 성공여부가 시스템에 지대한 영향을 미칠 경우에 사용하는 것이 좋다.
하지만 soft 옵션을 준 경우에는 서버가 응답하지 않으면 어느 정도 융통성 있는 방법을 강구할 수 있도록 해준다. 즉 umount 명령을 이용하여 마운트를 취소할 수도 있다.
soft의 경우는 대부분 NFS를 이용하는 경우에는 이 옵션을 이용하는 것이 바람직하다.

bg
시스템이 부팅할 때 /etc/fstab의 내용을 보고 마운트를 실행하는데 만일 마운트하고자 하는 서버가 지금 NFS 서비스를 할 수 없는 상황일 때 백그라운드 잡(job)으로 마운트를 수행하라는 옵션이다. 타입이 nfs일 경우에는 반드시 이 옵션을 주는 것이 바람직하다. 왜냐 하면 NFS는 서버로부터 응답이 없으면 서버가 응답할 때까지 계속 마운트를 시도하려고 하기 때문에 부팅이 순조롭게 일어나지 못하게 되기 때문이다.

rw/ro
rw는 클라이언트로 하여금 서버에게서 마운트한 파일 시스템을 읽고 쓸 수 있도록 하겠다(read/write)는 옵션이고, ro는 읽기만 할 수 있도록 하겠다(read only)는 옵션이다.

nosuid
nosuid 옵션은 클라이언트 쪽에서 마운트한 파일 시스템에 있는 setuid 파일을 실행시킬 때 setuid 효과가 발생하지 못하도록 하는 역할을 한다. 이는 보안이 중요시되는 서버로부터 마운트해올 경우 반드시 고려하여야 할 옵션이다.
디폴트(default)옵션은 hard, rw, suid이다. 기타 다른 옵션들은 man page을 참조하기 바란다.

4-2. NFS 수동으로 마운트 할 경우
서버 : 10.10.10.1, 공유디렉토리 : /home/www, 클라이언트 마운트 지점 : /tmp/share
mount [ -t nfs ] server:/directory /mountpoint
[root@ancigo root]# mount -t nfs 10.10.10.1:/home/www /tmp/share

4-3. NFS 자동으로 마운트 할 경우
[root@ancigo root]# vi /etc/fstab에 내용 추가
10.10.10.1:/home/www /tmp/share nfs defaults 1 2
위와 같이 등록을 하게 되면 서버가 재부팅 될 때, 자동으로 공유된 부분을 mount 해서 사용한다.


출처 : 리눅스원 호스팅팀.

Trackback 0 Comment 0
2008. 10. 22. 09:21

각종 파일시스템 MOUNT 명령어 정리

(1) 파일시스템(하드디스크) 마운트

 먼저 파일시스템에 대한 마운트를 알아보자. 파일시스템이라하면 하드디스크 파티션의 사용환경, 즉 파티션 포맷의 종류라고 보면 되겠다. 어떤 포맷을 사용한 파티션이냐에 따라 마운트하는 옵션이 달라질 수 있으므로, 현재 마운트하고자 하는 파티션의 포맷 상태를 잘 확인해 두어야 한다. 최근에는 그냥 마운트 명령만을 사용해도 포맷에 관계없이 자동으로 마운트가 이루어지는 추세이지만, 포맷별 마운트 옵션을 알아두면 추후에 유용하게 활용이 가능하다.

 
아래 예제를 보면서 하나씩 확인해 보도록 하자.

 # mount /dev/hda1 /mnt/win
 ; 가장 일반적인 마운트 명령이다. 별다른 옵션을 사용하지 않았으며 대부분의 리눅스 시스템에서 자동으로 체크하여 마운트를 수행한다. 하드디스크의 가장 첫번째 파티션(hda1)에 Windows를 설치하였다면, /mnt 디렉터리 아래에 win이라는 디렉터리를 만들고 여기에 마운트를 걸어주면 된다.

 

# mount -t vfat /dev/hda1 /mnt/win98 ( 언마운트 => # umount /mnt/win98 )
 ; Windows가 설치된 파티션이 FAT 방식으로 포맷되어 있는 경우 사용한다. FAT, FAT16, FAT32 모두 사용이 가능하며 리눅스 시스템에서는 이들을 통칭해서 vfat이라는 명칭으로 사용한다.

 

# mount -t ntfs /dev/hda2 /mnt/winxp ( 언마운트 => # umount /mnt/winxp )
 ; Windows가 설치된 파티션이 NTFS 방식으로 포맷되어 있는 경우 사용한다. NTFS의 경우 아직 리눅스에서 완벽히 호환이 되지는 않는다. 그러므로 읽기(Read)로만 활용하는 것이 대부분이고 쓰기(Write)는 사용하지 않는 것이 좋다. 이 부분은 하단에서 다시 다루도록 하자.

 

# mount -t msdos /dev/hda1 /mnt/dos
; Windows가 아닌 DOS를 설치하였다면 이 옵션을 사용하자. 아직도 DOS를 사용하는 사람은 없으리라 생각되지만, 혹시나 하는 생각에 적어 보았다.

 

# mount -t ext3 /dev/hda3 /mnt/linux
 ; Linux가 설치된 파티션을 마운트할때 사용한다. 리눅스에서는 ext2, ext3, xfs, jfs, vfs, reiserfs 등 다양한 파일시스템을 사용할 수 있으며, 최근 가장 많이 사용되는 파일스스템(포맷)이 ext3이다. 이런 ext3 파일시스템을 마운트할때 위와 같은 옵션을 사용하면 된다.

 

# mount -t vfat /dev/sda1 /mnt/usb

 ; usb 장치인식, 우선 mnt 폴더안에 usb 폴더를 생성해줘야 한다.


(2) 주변장치 마운트

CD-ROM, Tape 장치, Floppy디스크 등 다양한 주변장치를 마운트할 수 있다.

 
# mount /dev/cdrom
 ; CD-ROM을 마운트할때 사용하는 명령이다. 위에서 보면 마운트할 위치는 따로 지정을 하지 않았는데, 이는 설치시 CD-ROM과 같은 장치는 이미 /etc/fstab과 같은 마운트 설정 파일에 자동으로 인식이 되어 있으므로, 마운트 명령을 길게 사용하지 않더라도(생략하더라도) 마운트가 가능하기 때문이다.

 

# mount /dev/cdrom /mnt/cdrom ( 언마운트 => # umount /mnt/cdrom )
; CD-ROM 마운트 명령을 생략하지 않고, 모두다 사용해 준다면 위와 같은 명령이 될 것이다.

 

# mount /dev/fd0 /mnt/floppy ( 언마운트 => # umount /mnt/floppy )
 ; 플로피디스크는 fd0라는 장치명을 가지고 있으므로, 이 장치명을 사용하여 마운트를 시킬 수 있다.

 

# mount /dev/st0 /mnt/tape ( 언마운트 => # umount /mnt/tape )
; 서버와 같은 시스템에서는 주기적인 백업을 수행하는데, 예전부터 많이 사용되어온 테이프 장치로 백업하기 위해서는 테이프 장치를 위와 같은 명령으로 마운트해 주어야 한다.

 

 
(3) ISO 이미지 마운트

최근 많이 사용되고 있는 ISO 이미지 파일을 사용하기 위해서는 아래와 같이 마운트를 해주면 된다.

=======================================================================
# mount -t iso9660 -o loop /root/OpenEdition30/HLOE30_disc1.iso /mnt/iso
=======================================================================

ISO 이미지 파일 생성 및 사용에 대한 자세한 설명은, 앞서 리눅스가산다에 올려진 내용이 있으므로 이를 참조하자.
( http://www.haansoftlinux.com/magazine/magazineView.php?no=996&page=0&catalog=1 )

 


(4) Samba 마운트

Samba 프로토콜을 사용하는 파일공유 서버를 Samba 마운트 기능으로 연결할 수 있다. Windows에서 보는 "네트워크 공유"에 해당하는 것으로 Samba 프로토콜을 사용하는 공유디렉터리는 모두 마운트할 수 있다.

================================================================================
# smbmount //192.168.0.1/linux /mnt/smb

# mount -t smbfs -o username=root //192.168.0.1/linux /mnt/smb

# mount -t smbfs -o username=root,password=gksrmfrhkzjavbxj,workgroup=haansoft

   //192.168.0.1/linux /mnt/smb
================================================================================

 Samba 마운트 방식은 기존 마운트와 동일하며, -t(Type) 옵션에 smbfs(samba-filesystem)을 명시하고, -o 옵션에 연결시 필요한 다양한 정보들(ID,Password, 공유그룹 등)을 입력하게 된다. 패스워드의 경우 보안상 바로 기록하지 않는 것이 좋으며, 명령에서 패스워드를 명시하지 않으면 다음 단계에서 자동으로 패스워드를 물어오므로 이때 입력하는 것이 좋다.

마운트 대상을 기록하는 부분에는 공유호스트명(또는 IP)과 공유디렉터리명을 순서대로 입력한다.

 


(5) NTFS 마운트 고급옵션

앞서 잠깐 말했듯이 NTFS 파일시스템의 경우, 마운트 및 사용에 많은 주의가 요구된다. 아래의 내용을 통해서 다시한번 확인해 보도록 하자.

============================================================================================
# mount /dev/hda1 /mnt/hda1 -t ntfs -r -o umask=0222,uid=xxx ( 언마운트 => # umount /mnt/hda1 )
============================================================================================

 [설명]

-t ntfs: 파일 시스템 종류가 ntfs 라는 것을 명시함
-r: 읽기 전용. ntfs는 Microsoft가 아직 스펙을 발표(공개) 하지않아 쓰기 기능은 사용하지 않는것이 좋음.
-o: 옵션
  umask=0222: 읽기 전용과 관련된 명령어.
  uid: xxx 에 실제 사용자 아이디 적는다. 이걸 적지 않으면 root 에서만 읽기 가능.

※ 부팅시 자동으로 마운트 하기 위해서는 /etc/fstab 파일을 편집기(vi 추천)로 열어서 마지막에 다음 한 줄을 기록한다.
  /dev/hda1 /mnt/hda1 ntfs ro,umask=0222,uid=xxx 0 0
;파티션 명칭과 uid 등은 적절히 수정해서 사용한다.



Trackback 0 Comment 0