[리눅스 일반] 파일시스템 자동마운트 정보파일 /etc/fstab

1. 리눅스 파일시스템 마운트 설정정보파일 /etc/fstab 의 파워활용

– 해당파일시스템의 장치명(device name)

– 파일시스템이 마운트될 마운트포인트(디렉토리명)

– 파일시스템 타입(ext2, ext3, iso9660, swap등)

– 파일시스템을 Read Only로 마운트할 것인가?

– 파일시스템을 Read, Write로 마운트할 것인가?

– Quota정책을 적용할 것인가?

– 일반 사용자도 마운트할 수 있도록 허용할 것인가?

– 부팅시 자동으로 마운트를 할 것인가?

– SerUIS, SetGID 설정을 허용할 것인가?

– fsck로 파일시스템검사시 검사하는 순서설정

– /etc/fstab 파일의 표시 예 #1 (파일시스템장치명을 ‘레이블명’ 으로 표시)
LABEL=/        /        ext3        defaults        1   1

– /etc/fstab 파일의 표시예 #2 (파일시스템장치명을 ‘장치명’ 으로 표시)
/dev/hda5     /         ext3        defaults        1   1

– /etc/fstab 파일이 ‘레이블명’ 으로 되어있는 것 보다는 명확한 ‘파일시스템장치명’ 으로 표시하는 것이 서버관리에 효과적임

2. /etc/fstab 파일의 구조

– /etc/fstab 파일의 각행은 모두 6개의 항목으로 구분되어 있음
[파일시스템장치명] [마운트포인트] [파일시스템종류] [옵션] [dump관련설정] [파일점검옵션]

3. [파일시스템장치명] : /etc/fstab 파일의 첫번째 항목

– 파일시스템의 장치명을 설정함( /dev/sda1, /dev/hda2 등과 같은 파일시스템 장치명의 자리)

– 만약 파일시스템에 레이블(LABEL)이 설정되어 있다면 장치명 대신 레이블명으로 지정할 수도 있음.

4. [마운트포인트] : /etc/fstab 파일의 두번째 항목

– 파일시스템이 마운트될 마운트포인트임( /, /home 과 같은 이름을 의미)

– /home 과 /home1 과 같은 부분을 마운트포인트라고 함

5. [파일시스템종류] : /etc/fstab 파일의 세번째 항목

– 파일시스템의 종류를 설정하는 항목

– ext : 초기 리눅스에서 사용되었던 파일시스템으로서 현재는 사용하지 않음

– ext2 : 현재 많이 사용하고 있는 파일시스템으로서 긴파일명을 지원하는 것이 특징

– ext3 : 저널링파일시스템으로서 etx2에 비해 파일시스템 복구기능과 보안부분을 크게 향상시킨 것으로 현재는 ext2보다 ext3을 기본 파일시스템 타입으로 사용하고 있음.

– iso9660 : CD-ROM의 표준파일시스템으로서 Read Only로 사용됨.

– nfs : Network File System으로서 원격서버를 마운트할 때 사용함.

– swap : 스왑파일시스템으로서 스왑공간으로 사용되는 파일시스템에 사용됨.

– ufs : UNIX FileSystem으로서 UNIX SYSTEM 5계열에서는 표준파일시스템임.

– vfat : 윈도우 95나 98, 그리고 NT를 지원하기 위한 파일시스템.

– msdos : MS-DOS파티션을 사용하기 위한 파일시스템.

– hpfs : HPFS에 대한 파일시스템.

– ntfs : 윈도우NT나 2000의 NTFS파일시스템을 사용하기위한 파일시스템

– sysv : 유닉스시스템 V를 지원하기 위한 파일시스템.

– hfs : Mac컴퓨터의 hfs 파일시스템을 지원하기 위한 파일시스템.

– ramdisk : RAM디스크를 지원하는 파일시스템

– …그외 다수.

– 현재 사용하고 있는 리눅스시스템에서 지원가능한 파일시스템을 확인해 보려면 /proc/filesystems 를 확인하면 됨.

6. [옵션] : /etc/fsta 파일의 네번째 항목

– 파일시스템을 용도에 맞게 사용하기 위한 파일시스템 속성을 설정하는 옵션

– defaults : rw, nouser, auto, exec, suid 속성을 모두 가지는 속성. 가장 일반적인 파일시스템에서 사용되는 속성.

– auto : 부팅시 자동마운트됨.

– exec : 실행파일이 실행되는 것을 허용하는 파일시스템.

– suid : SetUID와 SetGID의 사용을 허용하는 파일시스템.

– ro : 읽기전용 파일시스템으로만 사용됨 (Read Only)

– rw : 읽고 쓰기 파일시스템으로 사용됨 (Read, Write)

– user : 일반 계정사용자들도 마운트를 할 수 있는 파일시스템.

– nouser : 일반 계정사용자들은 마운트 할 수 없는 파일시스템. root 만 mount 할 수 있음.

– noauto : 부팅시 자동마운트되지 않게 함.

– noexec : 실행파일을 실행되지 못하게 하는 파일시스템.

– nosuid : SetUID와 SetGID의 사용을 허용하지 않는 파일시스템.

– usrquota : 개별 계정사용자의 쿼타(Quota)설정이 가능한 파일시스템.

– grpquota : 그룹별 쿼타(Quota)설정이 가능한 파일시스템.

7. [dump 관련설정] : /etc/fstab 파일의 다섯번째 항목

– /etc/fstab 파일의 다섯번째 설정항목으로서 0 또는 1 을 가질 수 있음. 1 은 데이터백업등을 위해 dump 가 가능한 파일시스템이며, 0 은 dump 명령으로 덤프되지 않는 파일시스템임.

8. [파일점검옵션] : /etc/fstab 파일의 여섯번째 항목

– /etc/fstab 파일의 여섯번째 설정항목으로서 0 또는 1, 그리고 2 가 올 수 있음. 0 은 부팅시 실행되는 fsck 가 실행되지 않는 설정이며, 1 은 루트파일시스템을 의미하며, 2는 루트파일시스템이외의 파일시스템을 의미함. 여기서 설정된 파일시스템의 순서를 기준으로 부팅시 실행되는 fsck 의 순서가 결정됨.

[리눅스 일반] 파일시스템 마운트

1. 마운트의 의미

– 특정 디바이스(device)를 사용하기 위해 하드웨어장치와 디렉토리를 연결하는 작업을 의미

2. 사용형식

– mount -a [-fnrvw] [-t 파일시스템타입]

– mount [-fnrvw] [-o 옵션[,…]] 장치| 디렉토리

– mount [-fnrvw] [-t 파일시스템타입] [-o 옵션] 장치디렉토리

– 현재 마운트되어 있는 정보 확인
Shell# mount

3. 리눅스에 장착된 CD-ROM 데이터 사용하기

– CD-ROM 마운트 형식 : mount -t iso9660 /dev/cdrom /mnt/cdrom

4. 실제로 마운트하지 않고 마운트 가능여부만을 확인하기

– mount -f /dev/hdb /bakup

– mount 명령어에 -f 옵션을 사용

5. 특정 시스템을 읽기만 가능하도록 마운트하기(쓰기금지 마운트)

– mount -r /dev/hda /backup

– mount 명령어에 -r 옵션을 사용

– Read-Only 명령어임. 파일시스템내의 데이터를 보호하는 목적에는 최고의 방법

6. 읽기, 쓰기 가능하도록 마운트하기

– mount -w /dev/hda /backup

– mount 명령어에 -w 옵션을 사용. Default로 사용됨

7. 현재 마운트된 정보 자세히 살펴보기

– mount -v

– mount 명령어에 -v 옵션을 사용

– -v 옵션을 사용하지 않고 그냥 mount 명령어만 입력해도 동일한 결과를 보여줌.

– mount -v 의 결과는 /etc/mtab 파일에 저장되어 있음. /etc/mtab 파일을 확인해도 동일한 결과를 확인할 수 있음.

8. 다양한 파일시스템 유형에 맞는 여러가지 마운트 방법

– 사용형식  : mount -t 파일시스템타입 장치명 마운트포인트

– -t 다음에 파일시스템의 종류를 지정하면 됨.

– mount 명령어에서 지정가능한 파일시스템의 종류
adfs, affs, autofs, coda, coherent, cramfs, devpts, efs, ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, ntfs, proc, qnx4, ramfs, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix, xfs, xiafs

9. ext3 타입의 파일시스템 마운트하기

– mount -t ext3 /dev/hda /backup

– 현재 리눅스에서 대표적으로 사용하는 파일시스템이 ext3이므로 mkfs나 mkfs.ext3등으로 파일시스템을 생성 및 포맥작업을 옵션없이 생성하였을 경우에는 기본적으로 ext3타입으로 포맷됨. 따라서 ext3로 생성된 파일시스템을 마운트하려면 -t ext3 라는 옵션이 없어도 ext3 로 마운트가 됨.

– mount /dev/hda /backup

10. ext2 타입의 파일시스템 마운트하기

– mount -t ext2 /dev/hda /backup

11. iso9660 파일시스템 타입으로 마운트하기

– mount -t iso9660 /dev/cdrom /mnt/cdrom

– CD-ROM의 공식적인 파일시스템타입이 iso9660이므로 CD-ROM마운트시에는 반드시 iso9660 타입을 사용해야함.

– /etc/fstab 에 정의되어있는 정보를 그대로 이용하는 방법도 있음.
/dev/cdrom           /mnt/cdrom          /udf,iso9660 noauto,owner,kudzu,ro 0 0

– mount /mnt/cdrom

– 즉, mount /mnt/cdrom 과 같이 마운트포인트만 지정하여 mount 명령을 사용하면 /etc/fstab 파일의 /mnt/cdrom 에 대한 마운트정보가 정의되어있는 그대로 마운트를 하게 됨.

12. vfat 윈도우 파일시스템 마운트하여 윈도우디스크 사용하기

– 윈도우파일시스템(vfat로 가정)이 있는 디바이스(device) /dev/hdc 장치를 /win 디렉토리로 마운트 시키는 예

– mount -t vfat /dev/hdc /win

13. MSDOS 파일시스템으로 포맷된 디스켓을 마운트하여 사용하는 방법

– msdos파일시스템으로 /dev/fd0 를 /mnt/floppy 에 마운트 시키는 예
mount -t msdos /dev/fd0 /mnt/floppy

– 윈도우 PC에서 사용하던 플로피디스크를 리눅스에서 바로 사용하려면 반드시 msdos파일시스템으로 마운트를 해야 함

– CD-ROM마운트 할 때와 마찬가지로 플로피를 마운트 할 때에도 파일시스템 타입과 장치명을 생략하고 간단히 마운트 할 수 있음
mount /mnt/floppy

14. 원격서버의 파일시스템 마운트하여 사용하기(NFS 마운트하는 방법)

– mount -t nfs NFS서버IP주소또는호스트명:/NFS서버마운트포인트 /NFS클라이언트마운트포인트

– -t nfs : 파일시스템타입이며 반드시 nfs로 지정해야함. 네트워크파일스시템(NFS : Network FileSystem)를 사용할 것이기 때문.

– NFS서버IP또는호스트명 : NFS서버의 IP주소나 호스트명을 적어주면 됨

– /NFS서버마운트포인트 : NFS서버에서 NFS클라이언트의 마운트가 허용되어 있는(NFS서버의 /etc/exports 에 설정되어 있어야함) 위치를 지정하면 됨.

– /NFS클라이언트마운트포인트 : 마운트명령어를 사용하고 있는 NFS클라이언트의 마운트포인트를 적어주면 됨.

– ex) mount -t nfs 192.168.0.1:/tmpdata /backup

Proftp virtualhost configuration 설정 예제(proftpd.conf)

############################################
#

#                       ProFTPD Korea User Groups
#                           http://proftpd.oops.org

#
############################################

# 번역 : 김정균 < admin@oops.org >
# 이 예제 설정 file은 두개의 가상 server와  anonymous login를 결합하는
# 것을 설명하고 있다.

ServerName                      “ProFTPD”
ServerType                      inetd

# Port 21 은 FTP 의 기본 port이다.
Port                            21

# Global은 main server와 모든 virtualhosts에 의해 공유되는 “global” 설정
# 을 생성한다.

<Global>
# Umask 022는 group과 world writable로 부터 새로운 dir과 file들을 막기
# 위한 훌륭한 기본 umask이다.
Umask                         022
</Global>

# Server가 실행하는데 일반적인 user와 group을 설정한다.
User                            nobody
Group                           nobody

# DoS 공격을 막기 위해, 자식 process의 maximun number를 30으로 설정한다.
# 만약 30이상의 접속을 허락할 필요가 있다면 간단하게 이 치수를 증가시키도록
# 한다. 이것은 오직 standalone mode에서만 가능하다. inetd mode에서는
# service 당 maximun number를 제한 하는 것을 허락하는 inetd server에서
# 설정을 해야 한다.(xintd 역시 마찬가지 이다)
MaxInstances                    30

# 접속에 stall이 될때 끊어 지지 않는 최대 시간을 지정한다.
TimeoutIdle                     300

<VirtualHost ftp.virtual.com>

ServerName                    “Virtual.com’s FTP Server”

MaxClients                    10
MaxLoginAttempts              1

# DeferWelcome 는 client가 인증을 하기 전에 servername을 display하는
# 것을 방지한다.
DeferWelcome                  on

# guest login만 허락하기를 위하여
# nomal user login을 제한한다.
<Limit LOGIN>
DenyAll
</Limit>

# 다음, 자신들의 web site 등에 개인적으로 접근하기 위한 customer에
# 의해 사용되어 지는 “guest” 계정을 만든다.
<Anonymous ~cust1>
User                        cust1
Group                       cust1
AnonRequirePassword         on

<Limit LOGIN>
AllowAll
</Limit>

HideUser                    root
HideGroup                   root

# 사용자가 접근하기를 원하지 않는 private directory
<Directory logs>
<Limit READ WRITE DIRS>
DenyAll
</Limit>
</Directory>

</Anonymous>

</VirtualHost>

# primary address에서 작동을 하지만 port는 4000번을 사용하는 또 다른
# virtual host 이다. access는 하나의 anonymous login만 된다.
<VirtualHost our.ip.address>

ServerName                    “Our private FTP server”
Port                          4000
Umask                         027

<Limit LOGIN>
DenyAll
</Limit>

<Anonymous /usr/local/ftp/virtual/a_customer>

User                        ftp
Group                       ftp
UserAlias                   anonymous ftp

<Limit LOGIN>
AllowAll
</Limit>

<Limit WRITE>
DenyAll
</Limit>

<Directory incoming>
<Limit WRITE>
AllowAll
</Limit>
</Directory>

</Anonymous>

</VirtualHost>

출처 : http://proftpd.oops.org/document.php?t=doc&m=virtual

리눅스 압축풀기 명령어

1 tar아카이브(여러 파일을 한 파일로 묶은 것)을 생성하고 푼다.
아카이브의 확장자는 .tar 이다.

tar 는 실행시 반드시 옵션이 있어야 하기 때문에 옵션에 – 를 붙이지 않아도 된다(ps도 마찬가지 이유로 – 가 필요없다). 즉, tar xvf archive.tar 도 작동한다.

2 명령어 활용예
2.1 아카이브 풀기 tar -xvf archive.tar
archive.tar 라는 이름으로 묶인 파일과 디렉토리를 현재 디렉토리에 풀어준다. v 옵션은 파일을 푸는 과정을 화면에 출력해주라는 의미이다.

2.2 아카이브 만들기 tar -cvf archive.tar 묶을파일과디렉토리들
archive.tar 라는 이름으로 파일과 디렉토리를 묶어준다.

2.3 퍼미션을 유지하며 아카이브 만들기 tar -cvfp archive.tar 묶을파일과디렉토리들
archive.tar 라는 이름으로 퍼미션을 유지하며 파일과 디렉토리를 묶어준다.

2.4 tar+gzip 압축하기tar -czvf archive.tar.gz 묶을파일과디렉토리들
archive.tar.gz 라는 이름으로 파일과 디렉토리를 묶어준다. tar -czvfp archive.tar.gz 묶을파일과디렉토리들
archive.tar.gz 라는 이름으로 퍼미션을 유지하며 파일과 디렉토리를 묶어준다.

2.5 tar+bzip2 압축하기tar -cjvf archive.tar.bz 묶을파일과디렉토리들
archive.tar.bz 라는 이름으로 파일과 디렉토리를 묶어준다.

tar -cvjfp archive.tar.gz 묶을파일과디렉토리들
archive.tar.gz 라는 이름으로 퍼미션을 유지하며 파일과 디렉토리를 묶어준다.

2.6 gzip으로 압축된 tar 풀기 tar -xvzf archive.tar.gz
archive.tar.gz 라는 tar 로 묶인뒤 gzip 으로 압축된 파일을 먼저 압축을 푼뒤에 묶인 파일까지 풀어준다.

2.7 bzip2로 압축된 tar 풀기 tar -xvjf arhive.tar.bz
archive.tar.bz 라는 tar 로 묶인뒤 bzip2로 압축된 파일을 먼저 압축을 푼뒤에 묶인 파일까지 풀어준다.

2.8 허가권(Permission) 유지하며 풀기 tar -xpf archive.tar
파일을 묶을 당시의 각 파일의 허가권을 유지하며 풀어준다.

[수퍼데몬 xinetd] /etc/xinetd.d/ 디렉토리내의 각 설정파일내에 설정가능한 지시자들

1. service

– 서비스 이름.

– 가능한 파일이름과 /etc/services 파일에 등록된 서비스이름과 동일해야 함.

2. disalbe

– 해당 서비스를 서비스할 것인가( no ) 아닌가( yes ) 를 결정함.

– 서비스를 하도록 설정하려면 no 로 설정하고 서비스를 하지 않으려면 yes 로 설정하면 됨.

– ” disable = no ” 를 설정한다는 것은 ” chkconfig 서비스 on ” 을 실행하는 것과 같으며 또한, ntsysv 유틸리티를 실행하여 해당 항목에 ” * ” 를 하는 것과 같음.

3. socket_type

– TCP 일 경우에는 stream 이며, UDP 일 경우에는 dgram 이라고 명시되 있음. 이 외에도 raw, rdm, seqpacket 등이 올 수 있음.

4. wait

– xinetd 가 서비스 요청은 받은 경우, 이후에 즉시 또 다른 요청을 처리할 것인지( no )아닌지 ( yes ) 의 여부를 결정하는 지시자임. stream 의 경우에는 반드시 no 이어야 함.

– no 는 현재 요청외에의 다른 접속요청을 새로운 것으로 시작하여 처리하게 함.

5. user

– 이 서비스를 어떤 사용자 권한으로 서비스할 것인가를 결정함.

6. server

– 이 서비스를 실행할 때에 어느 위치에 있는 프로그램( 데몬 ) 을 불러와 연결한 것인가를 명시한 것.

– 반드시 절대경로로 지정되어야 함.

7. log_on_failure

– 서버접속에 성공하지 못하였을 때 로그파일에 기록하는 내용들을 설정들을 할 수 있음.

– HOST, USERID, ATTEMPT, RECORD 등이 추가로 설정될 수 있음.

– HOST 란 접속을 시도한 클라이언트의 IP 주소를 의미하고, USERID 란 접속한 사용자의 ID 를 각각 의미

– += 는 /etc/xinetd.conf 파일의 기본설정항목에 추가할 항목을 지정할 때 사용함

– -= 는 /etc/xinetd.conf 파일의 기본설정항목에서 뺄 항목을 지정할 때 사용함.

8. log_on_success

– 서버접속에 성공하였을 경우에 기록할 내용을 설정

– PID, HOST, USERID, EXIT, DURATION 등을 기록할 수 있음.

– PID 란 프로세스의 ID 를 의미, HOSTID 란 클라이언트의 IP 주소를 의미하고, USERID 란 접속한 사용자의 ID 를 의미하며, EXIT 란 프로세스의 종료상태를 의미하고, DURATION 이란 연결지속시간을 각각 의미함.

9. only_from

– 현재 이 서버로 해당 서비스 접속이 가능한 특정 호스트를 설정.

10. no_access

– 접속 가능한 호스트중에서 특정 호스트를 제외시키는 지시어

11. instances

– 해당 서비스로 접속이 가능한 총 접속자 수를 설정

12. access_time

– 해당 서비스의 이용가능 시간을 설정

13. per_source

– persouce = 5 와 같은 설정이 가능함. 동일한 호스트에서 해당 서비스로의 접속시에 동시에 5번이상 접속할 수 없음.