포고플러그(E02) 에 데비안을 설치한 상태에서 각종 네트워크 서비스를 설정해 사용하는법에 대해 적습니다.
* SAMBA/FTP/WEBDAV/TRANSMISSION 을 같이 사용하기 위한 설정입니다.
* 서비스 사용을 위한 기본적인 사항만 적습니다.
* root# 행은 root 권한 쉘 작업, 작업시 주의하세요.
* SysAdminID$ 행은 SysAdminID 권한 쉘 작업
* SysAdminID / NetAdminID / UserID1, UserID2... 은 실제 사용할 계정명으로 수정해서 사용
* "// 어쩌구 저쩌구... " 는 참고용 주석
* Version
- Linux version 2.6.32-5-kirkwood (Debian 2.6.32-48squeeze1)
- OpenSSH 5.5p1
- vsftpd 2.3.2
- samba 3.5.6
- transmission-daemon 2.03(1103)
- Apache 2.2.16 (Debian)
=[ 계정설정 ]=============================================
- SSH 쉘 로그인 가능한 하나의 서버 관리용 계정 - SysAdminID
- 각 사용자들의 저장 공간에 접근 가능하며 따로 사적인 보관장소를 가지는 메인계정 - NetAdminID
- 서비스를 이용하는 하나 이상의 사용자 계정 - UserID1, UserID2 ...
- 관리용 계정을 제외한 모든 계정은 리눅스 쉘로 로그인이 불가
- 메인계정을 제외한 각 사용자들 간에는 서로의 자료에 접근 불가
-[ 기본 디렉토리 구조 ]----------------------------------
관리용 계정
/home/SysAdminID
메인계정이 사용할 디렉토리 구조
/home/SysAdminID/NetSharedDir
/home/SysAdminID/NetSharedDir/Public
/home/SysAdminID/NetSharedDir/Private
사용자 계정들이 사용할 디렉토리 구조
/home/SysAdminID/NetSharedDir/Public/UserID1
/home/SysAdminID/NetSharedDir/Public/UserID2
.....
-----------------------------------------------------
- SSH 접속용 계정 추가
root# adduser SysAdminID
- 디렉토리 설정
root# su SysAdminID
SysAdminID$ mkdir ~/NetSharedDir
SysAdminID$ mkdir ~/NetSharedDir/Public
SysAdminID$ mkdir ~/NetSharedDir/Private
SysAdminID$ chmod 757 ~/NetSharedDir/Private
SysAdminID$ exit
- 공유 서비스 이용할 메인계정 추가
root# adduser --shell /usr/sbin/nologin --home /home/SysAdminID/NetSharedDir --no-create-home NetAdminID
- 사용자 그룹 추가
root# addgroup netusers
- 공유 서비스 각 사용자 계정 추가 및 디렉토리 권한 설정
root# adduser --shell /usr/sbin/nologin --home /home/SysAdminID/NetSharedDir/Public/UserID1 --no-create-home --ingroup netusers UserID1
root# mkdir /home/SysAdminID/NetSharedDir/Public/UserID1
root# chown UserID1:netusers /home/SysAdminID/NetSharedDir/Public/UserID1
root# chmod 707 /home/SysAdminID/NetSharedDir/Public/UserID1
....
==============================================================
=[ 서비스 설정 ]==============================================
각 서비스 데몬을 설치하고 설정파일을 수정합니다.
기본 설정파일 내용중 수정해야 하는 부분만 적습니다.
기본 설정 파일에 존재하지 않는 항목은 추가로 입력해 줍니다.
--[ SSH ]-----------------------------------------------------
** /etc/ssh/sshd_config 수정 *********************************
Port 22 // 접속 포트 지정, 가능하면 다른 포트로 변경
PermitRootLogin no // root 로그인 불가, 보안을 위해 막음
**************************************************************
- 서비스 재시작
root# /etc/init.d/ssh restart
--[ FTP ]-----------------------------------------------------
- 서비스 설치
root# apt-get install vsftpd
** /etc/vsftpd.conf 수정 *************************************
....
anonymous_enable=NO // 익명 ftp 접속 제한
local_enable=YES // 로컬 계정 접속 허용
write_enable=YES // 쓰기 허용
chroot_local_user=YES // FTP에 접속한 사용자가 홈디렉토리를 벗어나지 못하도록 제한
local_umask=070 // 파일/디렉토리 생성시 권한 설정
file_open_mode=0606 // 업로드한 파일 권한지정
listen_port=21 // 접속포트 지정. 가능하면 변경
....
**************************************************************
- /etc/shells 에 /usr/sbin/nologin 추가
root# echo /usr/sbin/nologin >> /etc/shells
- 서비스 재시작
root# /etc/init.d/vsftpd restart
--[ SAMBA ]---------------------------------------------------
- 서비스 설치
root# apt-get install samba
** /etc/samba/smb.conf 수정 **********************************
....
security = user // Samba 서버에 접속하기 위해 리눅스 계정을 이용
// [homes] 섹션의 항목 수정
read only = no // 쓰기 허용
create mask = 0606 // 파일 권한 설정
directory mask = 0707 // 디렉토리 권한 설정
invalid users = root SysAdminID // 접속 제한 유저
....
**************************************************************
- SAMBA 사용자 계정 및 패스워드 지정
root# pdbedit -a NetAdminID
root# pdbedit -a UserID1
root# pdbedit -a UserID2
- 서비스 재시작
root# /etc/init.d/samba restart
--[ TRANSMISSION DAEMON ]-------------------------------------
- 서비스 설치
root# apt-get install transmission-daemon
- 서비스 중지, 설정파일 수정은 서비스를 중지한 상태에서 가능
root# /etc/init.d/transmission-daemon stop
** /etc/transmission-daemon/settings.json 수정 ***************
....
"download-dir" : "/home/SysAdminID/NetSharedDir/Private/TorrentDownload", // 다운 디렉토리 지정
"port-forwarding-enabled": true, // UPNP 사용 설정, 보통 공유기 사용할 경우 true
"rpc-username" : "UserID", // 원격 제어용 사용자ID 지정
"rpc-password" : "UserPW", // 원격 제어용 사용자암호 지정
"rpc-port" : 9091, // 원격 제어 접속 포트
"rpc-whitelist" : "192.168.123.*", // 원격 제어 접속제한 IP or IP 대역설정, 192.168.123.* 와 같이 설정할경우 로컬네트워크의 192.168.123.0~255 를 사용하는 IP 에서만 접속가능
"rpc-whitelist-enabled" : true, // rpc-whitelist 목록 사용여부 지정
"speed-limit-down" : 5000, // 다운로드 제한 속도 KB/s
"spped-limit-down-enabled": true, // 다운로드 속도 제한 사용
"speed-limit-up" : 5000, // 업로드 제한 속도 KB/s
"speed-limit-up-enabled": true, // 업로드 속도 제한 사용
"umask" : 0, // 다운 파일 권한 변경.
"watch-dir" : "/home/SysAdminID/NetSharedDir/Private/TorrentDownload/watch", // 토렌트 파일을 자동으로 읽어들일 디렉토리 지정
"watch-dir-enabled" : true // 토렌트 파일을 자동으로 읽어들이는 기능 사용여부 지정
....
**************************************************************
!!!! transmission 에서 사용할 download-dir, watch-dir 디렉토리는 ftp 나 samba 에 NetAdminID 로 접속해서 Private 디렉토리(폴더)안에 만들어 주면됩니다. 대소문자에 유의
- 서비스 재시작
root# /etc/init.d/transmission-daemon start
--[ APACHE & WEBDAV ]------------------------------------------
!!!! webdav 접속 주소 - http://도메인orIP/NetAdminID , http://도메인orIP/UserID1 ....
!!!! webdav 를 지원하는 클라이언트로 접속하세요.
- 서비스 설치
root# apt-get install apache2
- webdav 모듈 활성
root# a2enmod dav_fs
** /etc/apache2/sites-enabled/000-default 수정 *****************
<VirtualHost *:80>
....
// 아래 항목 추가
Alias /NetAdminID /home/SysAdminID/NetSharedDir
<Location /NetAdminID>
DAV On
AuthType Basic
AuthName "Login WEBDAV ADMIN"
AuthUserFile /home/SysAdminID/.htpasswd
Require user NetAdminID
</Location>
Alias /UserID1 /home/SysAdminID/NetSharedDir/Public/UserID1
<Location /UserID1>
DAV On
AuthType Basic
AuthName "Login WEBDAV USER"
AuthUserFile /home/SysAdminID/.htpasswd
Require user UserID1
</Location>
Alias /UserID2 /home/SysAdminID/NetSharedDir/Public/UserID2
<Location /UserID2>
DAV On
AuthType Basic
AuthName "Login WEBDAV USER"
AuthUserFile /home/SysAdminID/.htpasswd
Require user UserID2
</Location>
</VirtualHost>
**************************************************************
- webdav 접속 아이디 및 패스워드 파일 생성
root# touch /home/SysAdminID/.htpasswd
root# chown www-data:www-data /home/SysAdminID/.htpasswd
root# chmod 400 /home/SysAdminID/.htpasswd
root# htpasswd /home/SysAdminID/.htpasswd NetAdminID
root# htpasswd /home/SysAdminID/.htpasswd UserID1
root# htpasswd /home/SysAdminID/.htpasswd UserID2
- /etc/apache2/envvars 에 umask 지정
root# echo umask 020 >> /etc/apache2/envvars
- 서비스 재시작
root# /etc/init.d/apache2 restart
==============================================================
다시 한번 말씀드리지만 SAMBA/FTP/WEBDAV 사용을 위해 필요하다고 생각하는 최소한의 사항만 적었습니다.
수정해서 더 나은 서비스 환경을 구축하는데 참고가 될 수 있기를 바랍니다.
문제 있는 부분있으면 알려주세요.
번외로 현재 돌아가는 데몬들을 보고 킬 할수 있는 것도 알려주시면 안될런지요
Alias /aaa(제 계정) /bbb(실제 보여줄 디렉터리)
'Location /aaa'
DAV On
AuthType Basic
AuthName "Login WEBDAV ADMIN"
AuthUserFile /home/aaa/.htpasswd
Require user aaa
이렇게 바꾸어보았는데 아이피 입력해서 들어가면 it works는 나오는데
아이피/aaa로 암호넣고 들어가면 /aaa 폴더에 퍼미션이 없다고 나오네요
실제 보여줄 bbb는 755를 주었습니다
아래 리플에 재리플이 안되네요. 혹시몰라 몇자 더 이어 씁니다. 참고로 webdav 를 사용하기 위해서는 아파치 데몬이 접근할 수 있어야 하고 이는 아파치 데몬이 사용하는 user/group 에 접근 권한이 있어야 됨을 말합니다. 현재 위에서 아파치가 사용하는 user/group 이 www-data 인데요, /bbb 디렉토리 및 bbb 까지의 상위 모든 디렉토리의 권한이 www-data 에 개방되어야 합니다. 폴더의 user/group을 www-data 로 하고 권한을 주던가 others 에 권한을 주던지 하는식으로 접근권한부터 해결해 보시는게 좋을것 같습니다.
어제 밤에 webdav 설치한다고 2시간 가량 소모했는데요
이 팁을 먼저 봤으면 하는 아쉬움이 드네요
좋은 팁 고맙습니다
스크랩했습니다!