
여러 scponly 계정이 있는 서버가 있고 기본 인증에서 http 액세스를 제공하고 싶습니다.
문제의 첫 번째 부분은 mod_rewrite를 사용하여 각 사용자에게 적합한 디렉토리를 자르고 선택함으로써 해결됩니다. 하지만 각 사용자에 대해 서로 다른 인증 사용자 파일을 설정하려고 하면 문제가 발생합니다. 간단히 말해서 나는 그것을 수행하는 방법을 찾을 수 없습니다.
다음은 샘플 구성입니다.
<VirtualHost an-ip-number-and:a-port>
ServerName *.example.com
RewriteEngine On
UseCanonicalName Off
RewriteCond %{HTTP_HOST} ^(.*).example.com
RewriteCond /server/scponly/%1/incoming -d
RewriteRule ^(.+) %{SERVER_NAME}$1 [C]
RewriteRule ^([^.]+)\.example\.com/(.*) /server/scponly/$1/incoming/$2 [L]
RewriteRule ^(.+) http://FAIL.example.com
<Directory /server/scponly/*/incoming>
AuthType Basic
AuthName "SFTP-HTTP Area"
AuthUserFile ??????? # <-- this!
require valid-user
</Directory>
</VirtualHost>
노트:
- 실제 구성이 다른 서버 이름/디렉토리 확인/다른 목적으로 다시 쓰기와 혼합되어 있기 때문에 mod_rewrite를 삭제할 수 없습니다.
- 사용자가 인증 세부 정보를 지울 수 있으므로 인증 세부 정보를 .htaccess 파일로 이동할 수 없습니다. 하지만 이 접근 방식이 부분적인 해결책이 될 수 있을지 궁금합니다.
- 다른 접근 방식에도 관심이 있습니다.
- 각 디렉터리에 대해 서로 다른 인증 파일이 필요합니다. 파일이 하나만 있으면 각 사용자에게 모든 디렉터리에 대한 액세스 권한이 부여됩니다.
답변1
Peelman의 답변을 확장하려면 각 사용자마다 별도의 섹션이 있어야 합니다.
<Directory /server/scponly/*/incoming>
AuthType Basic
AuthName "SFTP-HTTP Area"
AuthUserFile /path/to/user/htpasswd
</Directory>
<Directory /server/scponly/bob/incoming>
require user bob
</Directory>
<Directory /server/scponly/smith/incoming>
require user smith
</Directory>
근본적인 접근 방식은 Perl로 Apache를 구성할 수 있는 mod_perl을 사용하는 것입니다. 이것은 Apache 구성 파일에 들어갑니다.
<Perl>
for $dir (glob "/server/scponly/*/incoming") {
($user) = $dir =~ m%/server/scponly/([^/]+)/incoming%;
exists $Directory{$dir} or $Location{$dir} = { };
$Directory{$dir}{AuthType} = 'Basic';
$Directory{$dir}{AuthName} = 'SFTP-HTTP Area';
$Directory{$dir}{AuthUserFile} = '/path/to/htpasswd';
$Directory{$dir}{require} = "user $user";
}
</Perl>
(내 머리 꼭대기에 쓰여졌습니다.)
답변2
뭐? 파일은 하나만 가질 수 있습니다. Require 매개변수를 유효한 사용자 대신 사용자 ID로 변경하기만 하면 됩니다. 여기를 보아라: 아파치 문서.