태그 : linux

사용자 별 권한 관리... vsftpd

 pogoplug를 구입하고 가장 먼저 한 작업이기도 한데, 어영부영 시간이 지나다보니 포스팅이 늦어졌다. 더 미루다가는 아예 포스팅을 하지 못할 것 같아서 간단하게라도 적어두려고 한다.

 vsftpd를 설치하고 지인에게 ftp 주소와 계정을 알려주려고 하다보니, 계정별 권한 관리가 필요하게 되었다. 여기서 얘기하는 권한은 두 가지이다.
  1. 해당 계정이 home 디렉토리보다 상위로 접근할 수 없을 것
  2. 해당 계정으로 파일 업로드(STOR), 파일 삭제(DELE), 디렉토리 생성(MKDIR, MKD, XMKD), 디렉토리 삭제(RMD, XRMD)를 할 수 없을 것
 검색을 하다 보니 Virtual User 설정에 관해서 복잡해 보이는 설정 법을 찾을 수 있었는데, 적용해 보려니 생각처럼 쉽지 않았다. 그렇게 이런 저런 키워드로 검색하다가 찾은 것이 바로 계정 별 chroot 설정과 계정 별 cmds_allowed 설정이었다.

첫 번째로 chroot 설정은 /etc/vsftpd.chroot_list 라는 파일을 만들고, home 디렉토리보다 상위로 접근할 수 있는(allow) 계정을 적어준다.
user1
user2
user3
 이렇게 적어주면 user1, user2, user3 계정이 home 디렉토리 보다 상위로 접근할 수 있게 된다.

 설정은 여기서 끝나는 것이 아니고 chroot에 관한 설정을 /etc/vsftpd.conf에 적용해 주어야 한다. 그 설정은 아래와 같다. #으로 시작하는 부분은 주석이고 굵게(bold) 표시된 부분만 설정 해 주면 된다. chroot_list_file=에 적어준 /etc/vsftpd.chroot_list는 앞서 만들어 준 파일 이름으로 달리 원하는 파일 이름이 있으면 원하는 파일 이름으로 변경해주어도 된다.
You may restrict local users to their home directories. See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=YES
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list

 두 번째로 cmds_allowed 설정은 chroot 설정과 유사한 방식으로 적용해 주면 되는데, 우선 vsftpd에서 권한을 관리할 디렉토리를 하나 만들어 준다. 나는 /etc/vsftpd_user_conf 라는 이름으로 디렉토리를 생성했다. 그리고 나서 별도로 관리 할 계정의 이름으로 파일을 하나 생성한다. 파일명은 이미 존재하는 계정의 이름으로 생성해야 한다. 이렇게 설정된 파일명과 동일한 이름의 계정에 관해서 별도의 설정이 적용되고, 나머지 계정에 대해서는 기본(default) 설정이 적용된다.

 /etc/vsftpd_user_conf 디렉토리 안에 ftp라는 파일을 아래와 같은 내용으로 생성해준다. 이는 ftp라는 이름의 계정에 관한 설정이 된다.
cmds_allowed=ABOR,ACCT,ALLO,APPE,CDUP,CWD,EPRT,EPSV,FEAT,HELP,LIST,MDTM,MODE,NLST,NOOP,
OPTS,PASS,PASV,PORT,PWD,QUIT,REIN,REST,RETR,RNFR,RNTO,SITE,SIZE,SMNT,STAT,STOU,STRU,SYST,
TYPE,USER,XCUP,XCWD,XPWD
cmds_allowed는 단어 그대로 실행 가능한(allow) 명령어(commends)를 지정해 주는 것이다. 위 내용은 FTP 명령어 중에서 파일 업로드/삭제, 디렉토리 생성/삭제에 관한 명령어만 제외한 것이다(STOR, DELE, MKDIR, MKD, XMKD, RMD, XRMD를 제외). 이렇게 파일은 만든 후에 /etc/vsftpd.conf에 아래의 내용을 추가해 준다.
user_config_dir=/etc/vsftpd_user_conf
 이는 사용자별로 설정을 따로 관리하겠다는 의미로 user_config_dir에 지정한 디렉토리 안에 있는 파일명과 동일한 계정에 별도의 권한 및 설정을 적용하겠다는 의미이다.

 이렇게 하고 지인에게 해당 서버의 ip 혹은 domain과 계정명(ftp)을 알려주면 된다. 그러면 해당 계정은 ftp에 파일을 업로드 하거나 디렉토리를 추가/삭제할 수 없게 된다.

 만약에 지인에게 외장 하드로만 접근 하게 하고 싶다면 해당 내용이 자세하게 설명된 comta.kr의 ftp 관련 강좌를 참고하길 바란다.

by sakuragi | 2013/04/29 00:17 | :: C space :: 컴퓨터 | 트랙백 | 덧글(4)

자그마한 개인 서버... pogoplug E02

 대세는 좀 지났지만, 흥미가 생겨 pogoplug E02를 구입했다. 직접 해외구매를 한 것은 아니고, Clien 중고장터에서 신품을 4만원에 구입했다.  개인적으로는 회색이나 검정이 더 끌렸지만, 남자라면 핫 핑크~!!는 아니고 그날 올라온 물건이 이것 뿐이라서 핑크로 구매를 했다. 원래 pogoplug는 개인이 클라우드를 구축할 수 있도록 도와주는 하드웨어이고, pogoplug.com에서 제공하는 클라우드 서비스와 연계해야 사용할 수 있다(전용 앱을 제공한다).

 하지만 pogoplug가, 그리고 특히 E02 모델이 인기가 있는 이유는 기본적으로 제공하는 pogoplug 서비스 대신에 Arch linux나 Debian linux같은 기존 리눅스 배포판을 설치할 수 있기 때문이다.

pogoplug E02의 사양은 아래와 같다.

Arch: ARMv5te (ARM9계열)
CPU: Marvell Kirkwood 1.2GHz Single
RAM: 256MB
USB 2.0 x 4 port

 하드웨어 내부에는 별도의 설치 공간은 없고(pogoplug 서비스가 설치된 공간이 있긴 하지만 사용할 수는 없다고 보는게 좋겠다), USB 포트에 입맛에 맞는 저장 매체를 꽂아서 사용하면 된다. 처음에는 HDD에 리눅스를 설치하려고 생각했었는데, USB 메모리에 OS를 설치하면 외장 HDD를 쓰지 않을 때는 절전모드로 들어갈 수 있기 때문에 USB 메모리를 쓰는 것이 가격 대비 효율적일 것 같다. 물론 속도를 생각한다면 SSD를 연결하면 BEST겠지만...
(전면 LED는 본래 정상일 경우 녹색 불이 들어오지만, Linux를 설치해서 사용하는 것이 비정상적인 사용이기에 주황색 불이 들어온다)

 x86과 비교하면 Pentium III 400~600Mhz 정도의 성능이라고 하는데(comta.kr 리뷰), 내가 처음 접한 리눅스 머신이 Pentium 100Mhz였다는 점. 그리고 그 당시(2000년) 집에서도 Pentium 100Mhz 머신에 ADSL 회선으로 FTP, Apache + PHP + MySQL로 개인 홈페이지를 운영했고, 심지어는 그 사양으로 커널 컴파일까지 했을 정도니. 그에 비해 무려 4배 이상의 성능을 지닌 pogoplug E02는 개인 서버로는 부족함은 없다고 생각한다.

 설치할 배포판 선택은 꽤 오랜 시간 Ubuntu와 Debian을 주력으로 써왔기에 comta.kr 제공하는 설치 스크립트를 사용해서 Debian Squeeze를 설치했다. 기존에 Debian이나 Ubuntu를 사용했던 사용자라면 설치가 끝나면 써왔던 대로 사용하면 된다. apt-get을 이용해 필요한 패키지 설치하고 설정하고, 삽질하고... 

 앞으로 pogoplug와 관련해서 몇가지  더 포스팅 할 거리가 생길 것 같은데(과연...), comta.kr의 강좌가 너무나 자세하게 쓰여져 있어서 겹치는 내용에 대한 포스팅은 하지 않을 계획이고, 개인적으로 발생한 TroubleShooting에 초첨을 맞춰서 포스팅을 하게 될 것 같다.

 현재는 16GB USB 메모리에 Debian을 설치해서 SSH, FTP, Samba 서비스를 운영하고, 기존에 쓰던 1TB ntfs 외장 HDD를 연결해서 저장 공간으로 사용 중이다. 앞으로 nginx + php로 소개 페이지 구축이나 transmission 사용 정도를 생각하고 있다.
 생각해보면 리눅스에 참 집착하는 것 같다. 포스팅은 안했지만, 안드로이드 개발 공부한답시고 Motorola ATRIX를 구매하고, 내부적으로 Ubuntu 리눅스를 올려서 사용할 수 있다는 말에 랩탑(모니터 + 키보드 내장 도킹 시스템)을 해외 구매했다. 물론 결과는 생각보다 쓸만하지 않았다. 아직 ATRIX의 사양은 Desktop을 돌릴 정도가 되지 못했으니까. 이미 ATRIX는 내 손을 떠난지 오래지만, 랩탑은 아직도 방 한구석에서 먼지만 쌓여가고 있다. 사실 pogoplug도 "이렇게 활용해봐야겠다"라는 생각보다 그냥 리눅스가 돌아가는 $15 머신이라는 데 끌렸다는 점을 부인할 수가 없다. 결과적으로는 4만원 이상의 가치는 충분히 할 것 같지만, 그러고 보면 이 집착은 Linux에 대한 향수병인가? DOS에 대한 향수로 Linux에 빠졌던 것처럼...

by sakuragi | 2013/04/17 03:49 | :: C space :: 컴퓨터 | 트랙백 | 덧글(6)

보기 편한 해상도를 추가하기... VAIO P xorg.conf 설정

 VAIO P는 8인치 액정에 1600x768 해상도라는 변태적이고도 작은 도트 피치(dot-pitch)를 구겨 놓았다. 이는 좀 더 넓은 화면을 쓰고자 하는 사람에게는 장점이 분명하지만, 동시에 그만큼 글자 크기가 작아서 보기 불편하다는 단점이 되기도 한다. 그래서 VAIO P 관련 게시물을 뒤져보다 보면 해상도를 약간 낮춰서 쓰는 팁들이 있다.
 보통 LCD는 그 특성상 최적의 해상도를 쓰지 않을 경우 화면이 선명하지 않은데, VAIO P는 워낙 좁은 도트 피치이다 보니, 왠만한 해상도에서는 큰 위화감을 느낄수 없다. 때문에 1368x676이나 1200x576정도의 해상도로 적절히 타협해서(?) 사용할 수 있다.

 윈도우에서 되는데 리눅스에서 안 될리 없다는 생각으로 삽질을 시작했다. 의외로 답은 가까운 곳에 있었는데, 예전에 포스팅 하면서 참고했던 사이트 중에 의미를 알 수 없던 명령어가 알고보니 xorg.conf에 커스텀 해상도를 설정하기 위한 명령어였다.

 순서는 cvt 명령으로 xorg.conf에 추가할 Modeline을 찾아서 추가해 주는 간단한 과정이다.

① 터미널에서 추가하고자 하는 Modeline의 해상도와 화면 주사율을 입력한다. 아래는 1368x676 해상도의 60Hz 화면 주사율이다.
$ cvt 1368 676 60
# 1368x676 59.74 Hz (CVT) hsync: 42.00 kHz; pclk: 74.25 MHz
Modeline "1368x676_60.00"   74.25  1368 1432 1568 1768  676 679 689 703 -hsync +vsync

② /etc/X11/xorg.conf 를 열어서 ①의 과정에서 찾은 Modeline 값을 Section "Monitor"에 추가하고, Section "Screen"을 적절히 수정한다.
Section "Monitor"
    Identifier  "Configured Monitor"
    Modeline "1200x576"   54.50  1200 1240 1360 1520  576 579 589 599 -hsync +vsync
    Modeline "1280x614"   62.25  1280 1328 1456 1632  614 617 627 639 -hsync +vsync
    Modeline "1368x676"   74.25  1368 1432 1568 1768  676 679 689 703 -hsync +vsync
    Modeline "1600x768"   65.0 1024 1048 1184 1344 768 771 777 806 +vsync +hsync
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
    DefaultDepth    24
    SubSection "Display"
        Modes   "1600x768" "1368x676" "1280x614" "1200x576"
    EndSubSection
EndSection
※ Modeline의 큰따옴표("") 안의 값(예:1368x676)과 Modes의 큰따옴표 안의 값은 정확하게 일치해야 한다.
    위의 설정파일은 ① 과정을 여러번 반복해서 총 4가지 해상도에 대한 Modeline을 구해서 추가했다.
    1600x768 해상도는 cvt 값과는 다른데, 이는 직접 cvt로 구한 값이 아닌 다른 사이트에 있는 값을 사용했다.

③ 이제 X 를 재시작하면 해상도가 추가된 것을 확인 할 수 있다.
 이제 필요에 따라서 적절히 해상도를 조절해서 쓰면 된다.

by sakuragi | 2009/09/12 01:21 | :: C space :: 컴퓨터 | 트랙백 | 덧글(4)

웹캠을 이용해서 스트리밍 서비스 하기... VAIO P MOTION EYE

 VAIO P에 우분투를 설치하고 제대로 테스트도 안 해보고 웹캠(MOTION EYE)이 동작하지 않는다고 생각했는데, 혹시나 하는 생각에 테스트를 해보니 아무런 설정 없이 video4linux2(/dev/video0)로 인식이 되었다. 그래서 이 웹캠을 가지고 테스트 겸 뭔가 할 수 없을까 하다가, 웹캠에 찍히는 화면을 실시간으로 인터넷으로 볼 수 있으면 좋겠다는 생각이 들었다.

 그래서 찾아보니 ffmpeg와 ffserver를 이용하면 비교적 간단하게 스트리밍 서비스가 가능해 보여서 시도해 보았다.

① 우선 ffmpeg를 설치한다.
$ sudo apt-get install ffmpeg

② ffserver.conf 파일을 만든다. /etc/ffserver.conf 파일 대신에 아래의 파일을 쓴다.
    첨부파일 : ffserver.conf
Port 8090
# bind to all IPs aliased or not
BindAddress 0.0.0.0
# max number of simultaneous clients
MaxClients 1000
# max bandwidth per-client (kb/s)
MaxBandwidth 10000
# Suppress that if you want to launch ffserver as a daemon.
NoDaemon

<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 100M
</Feed>


<Stream test.swf>
Feed feed1.ffm
Format swf
VideoCodec flv
VideoFrameRate 15
VideoBufferSize 80000
VideoBitRate 100
VideoQMin 1
VideoQMax 5
VideoSize 640x480
PreRoll 0
Noaudio
</Stream>
※ 위의 파일은 flv Codec의 swf 파일만을 서비스하는 설정파일이다.

③ ffserver를 실행한다. 설정파일은 현재 디렉토리에 있다고 가정한다.
$ ffserver -f ./ffserver.conf

④ ffmpeg를 실행하면, 웹캠이 동작한다.
$ ffmpeg -r 15 -s 640x480 -f video4linux2 -i /dev/video0 http://localhost:8090/feed1.ffm
※ -r 15 : 초당 15프레임, -s 640x480 : 640x480 해상도, -f video4linux2 : v4l2 포멧, -i /dev/video0 : 웹캠의 주소
   http://localhost:8090/feed1.ffm : 영상을 저장할 주소

⑤ 다른 컴퓨터의 웹브라우저에서 스트리밍 서버의 주소를 치면 플래시(swf)로 실시간 영상을 볼 수 있다.
http://스트리밍서버(VAIO P)주소:8090/test.swf

아래 스크린샷은 VAIO P에 접속한 다른 컴퓨터에서 찍은 스크린샷이다. 좌측 웹 브라우저에 보이는 화면이 실시간으로 VAIO P의 웹캠(MOTION EYE)이 찍고 있는 영상이다.


MOTION EYE로 찍은 의미없는 사진

by sakuragi | 2009/09/07 01:00 | :: C space :: 컴퓨터 | 트랙백(1) | 핑백(1) | 덧글(7)

◀ 이전 페이지          다음 페이지 ▶

:+: sakuragi's Steam :+: