SabreDAV는 다양한 방법의 인증을 지원합니다.
웹서버 인증, htdigest 인증, 별도의 인증 함수 구현, DB 활용 인증, IMAP 인증이 있습니다.
1. apache2-utils 설치하기
이 글에서 사용할 인증 방법은 htdigest
입니다.
htdigest
는 아파치 서버의 비밀번호 생성/보관 방법 중 하나입니다.
하지만, 우리는 아파치 웹서버가 아닌 Nginx 웹서버를 이용하고 있기 때문에 이 htdigest
를 따로 설치해 주어야 합니다.
htdigest
는 apache2-utils
안에 포함 되어 있습니다. 그래서 아래 명령을 통해 apache2-utils
를 설치해 줍니다.
sudo apt-get install apache2-utils
2. htdigest 파일 만들기
위 명령어를 통해 htdigest를 설치했다면 htdigest 파일을 만들어 줍니다.
htdigest (-c) [파일이 저장 될 장소] [그룹명] [아이디]
htdigest는 4개의 파라미터를 받습니다.
-c
: 저장되는 장소에 htdiget가 있다면 파일을 지우소 새로 만드는 명령어입니다. 처음 만들 때는 이 옵션을 넣어서 만들어 주는 것이 좋고, 나중에 사용자를 추가할 때 이 옵션을 지우고 사용하면 됩니다.
파일이 저장 될 장소
: 생성할 htdigest 파일이 저장될 위치를 지정하는 옵션입니다.
그룹명
: 로그인 정보가 그룹별로 분류가 가능합니다. 이 그룹으로 아래 Sabre 설정에서 접근을 허용할지, 차단할지 구분할 수 있습니다.
아이디
: 로그인에 사용되는 아이디입니다.
파일을 저장할 때 자신이 원하는 곳 아무 곳에나 저장하면 됩니다. 하지만, WebDAV나 SMB 등을 통해 이 파일이 외부에 노출되지 않도록 주의해 주어야 합니다.
아래 명령어를 통해 htdigest를 만들 수 있습니다.
htdigest /var/www/htdigest SabreDAV user
위 명령어를 입력하면 비밀번호를 입력하게 되는데 이때 입력한 비밀번호가 로그인 비밀번호가 됩니다.
3. 적용하기
이제 생성한 htdigest 파일을 서버에 적용합니다.
sudo nano /var/www/webdav/server.php
위 파일을 열면 맨 아래에 $server->exec();
라고 적힌 부분이 있습니다.
이 줄 위에 다음 코드를 작성해 줍니다.
use Sabre\DAV\Auth;
$authBackend = new Auth\Backend\File('[htdigest 파일이 저장된 곳]');
$authBackend->setRealm('[그룹 이름]');
$authPlugin = new Auth\Plugin($authBackend);
$server->addPlugin($authPlugin);
위 코드를 작성 후 저장하고 나오면 다음 접속시부터 로그인 창이 뜹니다.
이 방식은 비밀번호를 MD5 HASH를 이용하여 저장하는 것이기 때문에 보안이 뛰어난 방법이 아닙니다.
진행 중 잘 되지 않는 부분 있다면 댓글 달아주세요. 제가 알고 있는 한 최대한 도와드리도록 하겠습니다.
'Develop > Server' 카테고리의 다른 글
[Server] SabreDAV 인증 구현하기 (1) | 2020.07.09 |
---|---|
[Raspberry Pi_OMV5] 6. OMV5 webdav 설정하기 (28) | 2020.03.19 |
[Raspberry Pi_OMV5] 5. OMV5 SMB 공유 설정하기 (4) | 2020.03.16 |
[Raspberry Pi_OMV5] 4. OMV5 사용자 추가하기 (3) | 2020.03.06 |
[Raspberry Pi_OMV5] 3. OMV5 공유 폴더 만들기 (1) | 2020.03.05 |
[Raspberry Pi_OMV5] 2. OMV5 HDD설정하기 (3) | 2020.03.04 |
안녕하세요. 우선 정말 많은 도움 주신 데 감사드립니다. 네트워킹도 서버 관리도 생초보였던 제가 어찌저찌 NAS를 구축했네요.
혹시라도 저 같은 초보분을 위해 제가 실수했던 부분들을 적어두고 싶습니다. 인증 구현하면서 여간 애를 먹은 게 아니라서...
1. (전 단계의 sabre/dav 세팅 과정에서)
sudo composer를 실행하면 sudo 박지 말라고 짜증냅니다. 무시하고 실행해주세요. 빼고 하면 저처럼 시간만 잡아먹어요.
2. server.php의 경로
전 단계에서부터 그대로 따라오신 분들은 server.php 파일의 경로가 다르다는 것에 유의해주세요. /var/www/webdav/는 없는 경로입니다. 블로그에 나온 대로 실행하니 그런 경로 없다고 nano(혹은 vi)가 짜증냅디다.
*예시 1
sudo nano /var/www/openmediavault/webdav/server.php
*예시 2
cd /var/www/openmediavault/webdav/
sudo nano server.php
3. NTFS 드라이브를 사용할 경우
NAS용으로 쓸 하드를 따로 사세요. 호환 안 돼서 짜증만 납니다. 저는 주문한 NAS용 하드가 아직 안 와서 이러고 있네요.
전 단계에서 접근 제어 목록, 혹은 ACL을 설정하도록 되어있는데, NTFS는 그런 거 없습니다. 대신 공유 폴더를 생성할 때 선택할 수 있는 Administrators/Users/Others 권한 설정으로 때울 수 있습니다.
단, Administrators, Users, 그리고 Others 그룹은 직접 만들어주셔야 합니다. 그리고 나중에 변경할 수가 없다는 단점도 있습니다.
*예시:
(...)
$authBackend = new Auth\Backend\File('/var/www/htdigest');
$authBackend->setRealm('Administrators');
(...)
(혹은 GParted로 EXT4 파티션을 만들어도 되겠네요. 물론 속도도 안정성도 보장 못해요. 그런데 그런 거 할 줄 아시는 분이 이 댓글은 왜...)
4. 리눅스 파일시스템
저는 일평생 윈도우즈 말고는 다뤄본 일이 적어서 한참 애먹었네요. 저처럼 /var/www/var/www/에 htdigest를 만드는 기적을 행하진 마세요.
- 경로 앞에 붙는 /는 루트를 뜻합니다.
- 경로 앞에 /가 없으면 현재 경로 + 지정된 경로의 위치를 나타냅니다.
*예시 1
/usr/local $ cd /lib
/lib $
*예시 2
/usr/local $ cd lib
/usr/local/lib $
5. htdigest 파일 생성
당연한 거지만 이 블로그에 나와있는 예시는 예시입니다.
sudo htdigest (-c) [파일 경로] [그룹명] [아이디] 순으로 실행해주시면 됩니다.
제가 ♬♪♫♬라서 여기서 잠깐 막혔습니다(...)