Na abclinuxu se zatim muj problem vyresit nepodarilo, tak to zkusim tady.
Na serveru mam Ubuntu 12.04 a potrebuju udelat pro uzivatele WebDAV. Potrebuju mit moznost pouzivat vestaveneho klienta ve Windows, jinak pouzivam SFTP, ale ten Win neumi.
OwnCloud a jeho PHP implementaci WebDAVu nechci. Rad bych pouzil "cisty Apache", nebo jiny webserver.
Mam uzivatele
user1 a
user2 (v realnu jich je vic). Uzivatele jsou ve skupine
www-data (pod ni jede Apache):
$ ls -lh /home/
celkem 36K
drwxrwx--- 77 user1 www-data 12K pro 6 02:00 user1
drwxrwx--- 29 user2 www-data 4,0K lis 26 20:54 user2
...
$
Adresare uzivatelu (rekurzivne) maji prava 770 (drwxrwx---) a soubory 660 (-rw-rw----). V
/etc/login.defs mam nastavene
UMASK 007, coz odpovida prave d770 a f660.
Pokud vlezu na adresu
http://data.example.net/, prohlizec se zepta na heslo uzivatele. Funguje prihlasovani s overovanim pres PAM.
A ted nastava problem - po prihlaseni pod libovolnym povolenym uzivatelem na
http://data.example.net/ vidim jmena vsech uzivatelu (to mi nevadi),
ale muzu pristupovat k datum vsech uzivatelu - to mi vadi.Muze mi nekdo poradit, jak dovolit uzivateli lezt pouze do sveho /home/$user?
Zavirat je do /home/$USER/WEBDAV nechci. Idealne mit na
http://data.example.net/ rovnou svuj /home/$user. Jde to nejak? Mne to porad nejde nastavit :-(
Muj konfigurak pro Apache:
# cat /etc/apache2/sites-available/data-example-net
<VirtualHost *:80>
DocumentRoot /var/www
ErrorLog /var/log/apache2/error_data.log
LogLevel error
CustomLog /var/log/apache2/access_data.log combined
Options Indexes FollowSymLinks
ServerSignature off
Options +Indexes
IndexOptions -IconsAreLinks NameWidth=* FancyIndexing FoldersFirst
IndexOrderDefault Ascending Name
<IfModule mod_authnz_external.c>
AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe
</IfModule>
<IfModule mod_userdir.c>
UserDir /home/*/
UserDir disabled root
UserDir enabled user1 user2
DAVLockDB /var/lib/apache2_DAVLockDB
<Directory /home/*>
Dav On
AuthType Basic
AuthName "WebDAV"
AuthBasicProvider external
AuthExternal pwauth
Require valid-user
Order allow,deny
allow from all
AllowOverride FileInfo AuthConfig Limit Indexes
DirectoryIndex disabled
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
</Directory>
<Location />
AuthType Basic
AuthName "WebDAV"
AuthBasicProvider external
AuthExternal pwauth
Require valid-user
</Location>
</IfModule>
RewriteEngine On
RewriteRule ^/(.*) /home/%{LA-U:REMOTE_USER}/$1
</VirtualHost>
A pro nginx:
# cat /etc/nginx/sites-enabled/data
server {
listen *:80;
location / {
auth_pam "Restricted";
auth_pam_service_name "nginx";
}
location ~ ^/(.*)$ {
alias /home/$remote_user/$1;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_access user:rw;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
}
location ~ ^/home/(.*)$ {
alias /home/$1;
}
}
# cat /etc/pam.d/nginx
@include common-auth
@include common-account
Nasel jsem, ze by snad
melo jit u nginx porovnavat jmeno aktualne prihlaseneho uzivatele:
location ~ /(?<username>([^/]*))/ { # capture and store in the username variable
if ($remote_user = $username ) {
add_header 'matched' 'true $username';
break;
}
}
S nginx jsem nikdy nepracoval, proto nevim, jak to zapsat do configu. Slo by nejak poznat, kdyz je prihlaseny user1 a vleze do user2 aby ho to nepustilo? Umi to nekdo?
U Apache i nginx mam stejny problem. Jakmile se prihlasi jeden uzivatel, muze pristupovat do home adresaru vsech ostatnich uzivatelu. Urcite to bude kvuli tomu, ze uzivatel www-data (pod nim bezi webserver) je ve skupinach vsech uzivatelu.
Da se to nejak resit?
Pokud by mel nekdo cas a naladu to zkusit, tak tady je testovaci minimalni instalace debianu se dvema uzivateli "user1" a "user2", kde je ta chyba videt:
https://mega.co.nz/#!DMVlWSCT!n7Hw0cJQgjzTmYNub97fb9luX_6kavR3LGf1CSWPOiA 525MB (OVA - vytvorene ve VirtualBoxu)
root i oba uzivatele maji heslo "pokus". Je tam pouze Apache.
Neradte mi prosim jiny protokol, potrebuji webdav.
EOF