abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 3
    dnes 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 0
    dnes 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    dnes 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    dnes 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    včera 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 12
    včera 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (72%)
     (9%)
     (2%)
     (17%)
    Celkem 759 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Apache: WebDAV pro uzivatele /home/$user

    10.12.2014 00:58 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Apache: WebDAV pro uzivatele /home/$user
    Přečteno: 956×

    Ahoj,
    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 WeDAVu nechci. Rad byh pouzil "cisty Apache", nebo jiny webserver.

    Muj aktualni konfigurak virtualhostu:

    # cat /etc/apache2/sites-available/data-example-net 
    <VirtualHost *:80>
    	ServerName data.example.net
    	Redirect permanent / https://data.example.net/
    	ErrorLog /var/log/apache2/error_data-example-net.log
    	LogLevel error
    	CustomLog /var/log/apache2/access_data-example-net.log combined
    </VirtualHost>
    <VirtualHost *:443>
    	ServerName data.example.net
    	DocumentRoot /home
    	ErrorLog /var/log/apache2/error_data-example-net.log
    	LogLevel error
    	CustomLog /var/log/apache2/access_data-example-net.log combined
    	Options Indexes FollowSymLinks
    	ServerSignature off
    
    	#disable PHP in all sub-directories
    	RemoveHandler .php .phtml .php3
    	RemoveType .php .phtml .php3
    	php_flag engine off
    
    	Options +Indexes
    	IndexOptions -IconsAreLinks NameWidth=* FancyIndexing FoldersFirst 
    	IndexOrderDefault Ascending Name
    
    	SSLEngine on
    	SSLCertificateFile /etc/ssl/certs/data.example.net.crt
    	SSLCertificateKeyFile /etc/ssl/private/data.example.net.key
    	SSLProtocol all -SSLv2 -SSLv3
    	SSLHonorCipherOrder On
    	SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5
    
    	<IfModule mod_authnz_external.c>
    		AddExternalAuth pwauth /usr/sbin/pwauth
    		SetExternalAuthMethod pwauth pipe
    	</IfModule>
    
    	<Location "/">		
    		SSLRequireSSL #allow only HTTPS, not HTTP		
    		SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128 #allows export browsers to upgrade to stronger encryption
    		Dav On
    		Order allow,deny
    		allow from all
    		AuthType Basic
    		AuthName "WebDAV data.example.net"
    		AuthBasicProvider external
    		AuthExternal pwauth
    		Require valid-user
    	</Location>
    </VirtualHost>

    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 me presmeruje na https verzi a zepta se 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/neco nechci. Idealne mit na http://data.example.net/ rovnou svuj /home/$user. Jde to nejak? Mne to proad nejde nastavit :-(

    Odpovědi

    10.12.2014 01:16 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Nastavení apache v pohodě. Problém je klient ve windows.
    10.12.2014 01:30 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user

    Win klient neni problem. Pripojeni z nej se chova uplne stejne jako z Google Chrome a Firefoxu v Linuxu.

    Vzdy vidim na https://data.example.net/ seznam vsech uzivatelskych jmen a mohu pod libovolnym uzivatelelm prochazet home adresare vsech ostatnich uziatelu.

    Ja potrebuju neco jako:

    <Location "/">
    	OBSAH_ADRESARE (DocumentRoot) = /home/jmenoAktualnePrihlasenehoUzivatele/		
    	SSLRequireSSL #allow only HTTPS, not HTTP		
    	SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128 #allows export browsers to upgrade to stronger encryption
    	Dav On
    	Order allow,deny
    	allow from all
    	AuthType Basic
    	AuthName "WebDAV data.example.net"
    	AuthBasicProvider external
    	AuthExternal pwauth
    	Require valid-user
    </Location>
    jenom nevim, jak to techniky udelat. Zkousel jsem mod_userdir, ale nefungovalo to podle mich predstav (asi jsem ho spatne nastavil).

    10.12.2014 01:58 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Trochu jsem si pohral s mod_userdir a uz to skoro funguje! Aktualni konfigurak:
    # cat /etc/apache2/sites-available/data-example-net 
    <VirtualHost *:80>
    	ServerName data.example.net
    	Redirect permanent / https://data.example.net/
    	ErrorLog /var/log/apache2/error_data-example-net.log
    	LogLevel error
    	CustomLog /var/log/apache2/access_data-example-net.log combined
    </VirtualHost>
    <VirtualHost *:443>
    	ServerName data.example.net
    	DocumentRoot /home
    	ErrorLog /var/log/apache2/error_data-example-net.log
    	LogLevel error
    	CustomLog /var/log/apache2/access_data-example-net.log combined
    	Options Indexes FollowSymLinks
    	ServerSignature off
    
    	#disable PHP in all sub-directories
    	RemoveHandler .php .phtml .php3
    	RemoveType .php .phtml .php3
    	php_flag engine off
    
    	Options +Indexes
    	IndexOptions -IconsAreLinks NameWidth=* FancyIndexing FoldersFirst 
    	IndexOrderDefault Ascending Name
    
    	SSLEngine on
    	SSLCertificateFile /etc/ssl/certs/data.example.net.crt
    	SSLCertificateKeyFile /etc/ssl/private/data.example.net.key
    	SSLProtocol all -SSLv2 -SSLv3
    	SSLHonorCipherOrder On
    	SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5
    
    	<IfModule mod_authnz_external.c>
    		AddExternalAuth pwauth /usr/sbin/pwauth
    		SetExternalAuthMethod pwauth pipe
    	</IfModule>
    
    	<IfModule mod_userdir.c>
    		UserDir /home/*/
    		UserDir disabled
    		UserDir enabled user1 user2
    
    		<Directory /home/*>
    			SSLRequireSSL
    			SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128
    			Dav On
    
    			AuthType Basic
    			AuthName "WebDAV data.example.net"
    			AuthBasicProvider external
    			AuthExternal pwauth		             
    			Require valid-user
    
    			Order allow,deny
    			allow from all
    			AllowOverride FileInfo AuthConfig Limit Indexes
    			Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    		</Directory>
    	</IfModule>
    </VirtualHost>
    Aktualne to ma jedinou vadu, uzivatel musi pristupovat pres https://data.example.net/uzivatelskeJmeno/. Da se to nejak namapovat primo na https://data.example.net/? mod_rewrite asi pouzit nepujde.
    Jedine udelat AliasMatch z / na /home/*/, ale nevim jak to zapsat.
    10.12.2014 09:55 Karlos
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    A musí být uživatelé ve skupině www-data ? Kdyby nebyli, tak apache bude mít přístup podle skupiny a useři jen ke svému.
    10.12.2014 13:01 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user

    Jak presne to myslis?

    Aktualne ma kazdy uzivatel svoji skupinu stejneho jmena:
    Uzivatel Skupina
    www-data www-data
    user1    user1
    user2    user2

    Takze myslis pridat uzivatele www-data do skupiny user1 a user2 a home adresare pak mit pod vlastni uzivatelskou skupinou?

    # adduser www-data user1
    # adduser www-data user2
    $ ls -lh /home/
    celkem 36K
    drwxrwx--- 77 user1   user1  12K pro  6 02:00 user1
    drwxrwx--- 29 user2   user2 4,0K lis 26 20:54 user2
    ...
    $

    10.12.2014 13:57 Karlos
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Já myslel dát těm home adresářům skupinu www-data. Ve skupině www-data by nebyli uživatelé, ale jen user www-data. Ten (Apache) pak bude mít přístup ke vše home adr., ale uživatelé jen do svého. Jestli to teda nevadí ničemu dalšímu. Tvoje řešení asi taky bude fungovat, ale musíš myslet na to, když vytvoříš nového usera, aby si www-data přidal do jeho skupiny.
    10.12.2014 15:59 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user

    Ja mam umask 022. Adresar /home/userX ma vlastnika userX:www-data. Rekurzivne v nem nastavim vsem souborum a adresarum taky skupinu www-data.
    Problem je, pokud uzivatel (a to se deje porad) nakpiruje data pres sftp/sambu. Pak maji nove vytvorene soubory sice prava podle umask 022, ale vlastnika i skupinu sveho userX.

    Jak presne to myslis nastavit?

    10.12.2014 16:34 Sten
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Nastavte adresářům setgid (chmod g+s)
    10.12.2014 17:01 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Jenom pro /home/user, nebo rekurzivně? To by pak neřešilo nově vytvořené soubory.

    Já jsem naivně doufal, že když mám uživatele user1 který má práva na /home/user1 user1:user1 a přidal jsem uživatele www-data, pod kterým běží Apache do skupiny user1 (#adduser www-data user1), tak by měl mít apache práva k uživatelským souborům.

    Je setgid nutné? A na co přesně ho aplikovat?
    10.12.2014 17:25 Sten
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    setgid dělá to, že všechny nové soubory v daném adresáři budou vytvořeny se skupinou podle toho adresáře, ne podle aktivní skupiny uživatele, a u adresářů to navíc nastaví setgid. Tedy musel by se nastavit rekurzivně na všechny adresáře:
    find /home/$user -type d | xargs chmod g+s
    Já jsem naivně doufal, že když mám uživatele user1 který má práva na /home/user1 user1:user1 a přidal jsem uživatele www-data, pod kterým běží Apache do skupiny user1 (#adduser www-data user1), tak by měl mít apache práva k uživatelským souborům.
    Tohle je druhá možnost, jak to řešit, Apache pak bude mít stejná práva, jako příslušná skupina. Skupiny se přidělují ale jen při startu sezení (pomocí su, sudo, přihlášením ap.), takže po změně skupin je potřeba Apache restartovat, aby použil nové nastavení.

    Ještě existuje třetí možnost, a to je ACL:
    setfacl -R -m u:www-data rwx /home/$user # Nastaví ACL pro všechny existující soubory
    setfacl -R -d -m u:www-data rwx /home/$user # Nastaví výchozí ACL pro nové soubory
    
    10.12.2014 18:07 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user

    Tak jsem pridal apache uzivatele (www-data) do skupin vsech uzivatelu a po restartu apachce uz to jede :-)

    Ale zasadni problem trva porad:
    kdyz ve firefoxu vlezu na http://data.example.com a prihlasim se pod nejakym uzivatelem, tak vidim ve vypisu obsah slozky /home a muzu pod libovolnym uzivatelum lezt k datum vsech ostatnich.

    Jak se to da resit?

    root@eu:/# ls -lh /home/
    celkem 36K
    drwxrwx--- 77 user1   user1   12K pro  6 02:00  user1
    drwxrwx--- 29 user2   user2    4,0K lis 26 20:54 user2
    
    A apache je ve skupine user1 a user2.

    10.12.2014 18:57 Sten
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Přes ten mod_rewrite níže
    11.12.2014 00:31 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Příloha:

    V /home/.htaccess mam:

    RewriteEngine On
    RewriteRule ^/(.*)$ /%{LA-U:REMOTE_USER}/$1 [END]

    Pokud vlezu z Chromu na http://data.example.net presmeruje me to na https://data.example.net (to je ok), ale misto prihlasovani to hned hodi:

    Forbidden
    You don't have permission to access / on this server.
    to uz neni ok :-(

    Pokud lezu primo na http://data.example.net/user1 dostavam taky forbidden (You don't have permission to access /user1 on this server.)

    Pokud mam i prazdny soubor /home/.htaccess tak mi prohlizec vzdy ukazuje forbidden. Pokud je soubor prazdny porad chyba. Jakmile htaccess smazu, zas to zacne fungovat. Neni to divne?

    Rad udelam kompromis - uzivatel si bude pripojovat svuj disk pres adresu https://data.example.net/LOGIN ale nesmi mit moznost vlezt do homu jineho uzivatele. Takhle si pripojim https://data.example.net/user1, dam o uroven vys a mohu se hrabat vsem uzivatelum v home diru.
    Prece musi existovat nejake jednoduche reseni...

    A jeste jedna vec ohledne presmerovani na https verzi. V konfigu virtualhostu mam:

    # cat /etc/apache2/sites-available/data-example-net 
    <VirtualHost *:80>
    	ServerName data.example.net
    	Redirect permanent / https://data.example.net/
    </VirtualHost>
    <VirtualHost *:443>
    	ServerName data.example.net
    ...
    ale kdyz ve Windows i v linuxu chci pres webdav klienta pripojit disk, nejde to. Widle nerikaji nic, Mint 16 si stezuje na presunutou adresu (viz obrazek). Webovy prohlizec (Firefox, Chrome) se sam presmeruje.
    Jde to nejak resit?

    11.12.2014 01:15 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user

    Tak mam asi funkcni reseni opravneni:

    Primo do definice virtualhostu se prida:

    RewriteEngine On
    RewriteCond %{LA-U:REMOTE_USER} !^$
    RewriteRule /[^/]*/(.*) /~%{LA-U:REMOTE_USER}/$1 [NS]

    Uzivatel na https://data.example.net/ stale vidi vypis vsech uzivatelskych jmen. Ale kdyz vleze do homu libovolneho uzivatele, vzdy se mu zobrazuji jeho vlastni soubory (jeho vlastni home).
    "Vylepsit" by se to dalo odebranim prava cteni pro ostatni na / home (chmod o-r /home). Ale na bezne ssh pouzivani je to pak na h..... (nemuzu udelat ls /home)

    Sice to funguje, ale je to imho dost prasarna. Navic resit zabezpeceni rewritem se mi take moc nelibi.

    11.12.2014 01:28 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    A nebo by si musel kazdy uzivatel spustit svuj vlastni Nginx na nejakem >1024 portu.

    Ale to je imho neefektivni kompikovana blbost. A pro tisice uzivatelu je to uz uplna blbost. Mit 1000 bezicich webserveru neni zrovna idealni...
    10.12.2014 15:25 Sten
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    RewriteRule ^/(.*)$ /%{LA-U:REMOTE_USER}/$1 [END]
    10.12.2014 18:00 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user

    Muzes mi to prosim vysvetlit?

    Kdyz dam do /home/.htaccess:

    RewriteRule ^/(.*)$ /%{LA-U:REMOTE_USER}/$1 [END]

    Tak dostavam v prohlizci vzdy Forbidden.

    Povolene to snad je:

    <Directory /home/*>
         AllowOverride all
         ...
    </Directory>

    10.12.2014 18:06 Sten
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Možná tam chybí RewriteEngine On?
    10.12.2014 20:01 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Omlouvám se za poměrně zavádějící příspěvek. Psal jsem ho z mobilu, těsně před spaním, tak mi poněkud unikla podstata dotazu. Chtěl jsem tím jen říct, že WebDAV je pěkná věc pro Android, Linux, nebo BlackBerry, ale u MS Windows je s tím paradoxně jen kříž, protože každá verze používá trochu jiného klienta viz zdejší blogpost WebDAV a Windows Vista. I když nevylučuji, že u MS Windows 8.1 už to problém být nemusí.
    pavlix avatar 10.12.2014 20:37 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Nechtěl by někdo z vás dvou na tohle vyrobit nějaký článek nebo víc? Já osobně bych si v nějaké přehledné formě docela počet.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    11.12.2014 00:15 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Jake dva myslis? Me?

    Ja kazdpopadne az mi bude vse fungovat, tak to sepisu na blog.
    pavlix avatar 11.12.2014 08:45 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Jenom návrh. Koukal jsem, že ábíčko je trochu v nedostatku, ale jsem si až moc dobře vědom, kolik je s tím práce.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    11.12.2014 13:40 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Ja nemam problem napsat clanek. Na blogu to bude 100%, clanek by v pripade zajmu mohl take byt.

    Nejdriv by to ale muselo fungovat. Porad nejde opravneni. Jeden uzivatel se prihlasi a pak se muze hrabat vsem ostatnim uzivatelum v datech. At hledam sebevic, porad se mi nedari problem vyresit. Ale nejak to prece musi jit, webdav je prece realtivne dost stary a pouzivany protokol...
    11.12.2014 14:27 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Starý.. ale hloupý. Takže to musíš udělat tak, aby se každý uživatel dostal pouze ke svému chlívku.
    11.12.2014 14:34 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Presne o to mi od zacatku jde :-D

    Jen se mi to nedari zrealizovat.

    Nejake how-to by nebylo?
    11.12.2014 22:03 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Na tohle jsi narazil? Je to tedy rovněž založeno na tom mod_rewrite. Chtěl jsem to nejprve otestovat u sebe, abych k tomu mohl něco říct, ale zasekl jsem se na problému, že mi server odmítal uživatele autorizovat, ale už jsem neměl čas to dál řešit.
    11.12.2014 22:40 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Tak jsem to odzkoušel - můžeš si to prubnout sám. Nechám to chvilku běžet.
    root@147.32.97.216:~# cat /etc/apache2/conf-available/dav.conf 
    RewriteEngine On
    
    <Directory /srv/dav>
            AuthType Basic
            AuthName "WebDAV"
            AuthBasicProvider file
            AuthUserFile /etc/dav/htpasswd.setup
            Require valid-user
    </Directory>
    
    <Location /webdav>
            AuthType Basic
            AuthName "WebDAV"
            AuthBasicProvider file
            AuthUserFile /etc/dav/htpasswd.setup
            Require valid-user
    </Location>
    
    RewriteRule ^/webdav/(.*) /srv/dav/%{LA-U:REMOTE_USER}/$1
    
    Testovací uživatelé jsou dva - heslo mají oba stejné "ocas" http://147.32.87.216. Zkus si vlézt do adresáře webdav.
    12.12.2014 00:10 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    A jaka jsou uzivatelska jmena tech uzivatelu? Jsou to realni systemovi uzivatele, nebo pouze virtualni jen v htpasswd?

    Zkousel jsi to aplikovat i na /home?

    Kazdopadne diky, vyzkousim.
    12.12.2014 00:43 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Nastavení pouze v htpasswd. Není žádný důvod aby byli v systému. Ty jejich adresáře si totiž můžeš namountovat přes nfs, ncp nebo cifs z úplně jiného systému. A pak autorizovat vůči němu.
    12.12.2014 00:46 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Ale jaka jsou uzivatelska jmena? Psal jsi pouze jejich hesla.
    12.12.2014 07:24 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Sákryš. Máš pravdu. Nějak mi vypadli z textu. Jmenují se jan a dan.
    12.12.2014 07:34 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Jo a ještě drobnost když jdeš na http://147.32.87.216 tak adresář webdav vůbec nevidíš. Zkus ale http://147.32.87.216/webdav.
    12.12.2014 02:11 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user

    Tak jsem to zkousel a porad ten samy problem - jakmile se uzivatel prihlasi muze lezt ostatnim uzivatelum do home adresare :-(

    Pokud bys mel chvili, mohl bys na to prosim kouknout?
    Tady je testovaci minimalni isntalace 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".

    12.12.2014 09:54 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    No tak především nechápu, proč nastavuješ DocumentRoot na home, když stejně budeš provádět rewrite pro webdav podle uživatelů. To pravidlo pro rewrite bych umístil až nakonec. Sice možná na pořadí zpracování instrukcí nezáleží, ale přeci jen.. Taky bych asi vyhodil ty věci kolem userdir. Pozor na použití hvězdičky v direktivě Directory a jinde. Vyvaroval bych se toho. Taky nezapomeň, že aby ti to fungovalo, musí mít uživatel www-data, pod kterým běží apache k těm adresářům přístup. Uživatelé pro webdav vůbec nemusí být totožní s těmi co mají přístup do systému. Ba řekl bych, že je to spíš nežádoucí, takže bych to spíše udělal tak, aby každý uživatel měl pro webdav v rámci svého chlíva vyhrazený podadresář webdav, do kterého bude mít přístup apache.

    Pro začátek raději použij a modifikuj tu konfiguraci co jsem tady uvedl o kousek výš.
    12.12.2014 11:24 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Tak jsem to odzkoušel ještě s nastavením "Dav On" a z logu jsem zjistil, že to při přístupu přes webdav nefuguje jak má. Několikrát se apache pokusí sáhnout do cílové lokace, aniž by vzal v potaz proměnnou REMOTE_USER a když ji konečně vezme na vědomí, tak zase uživatele neověří. A tak si to háže jako horký brambor. U browseru to nakonec dobublá kam má, ale při přístupu přes DAV ne. Něco bude zřejmě ještě špatně.
    14.12.2014 01:03 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user

    Protoze jsem se na Apachi zasekl, zkusil jsem 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

    Pripojeni na WebDAV funguje vyborne, ale mam ten samy problem - uzivatel vidi v / jmena home adresaru vsech uzivatelu a muzu pristupovat k datum vsech uzivatelu.

    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?

    14.12.2014 01:11 Sten
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    nginx neumí OPTIONS a PROPFIND. Nevím, jestli to stále platí, ale ve Windows a KDE bez toho nešlo WebDAV používat.
    14.12.2014 01:31 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Prave jsem se zkousel pripojit z Windows 7 k nginx s vyse uvedenym nastavenim a behalo to bez problemu.
    15.12.2014 11:53 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user

    Takže řekl bych, že mám řešení, jaké by ti mohlo vyhovovat. Má ovšem několik háčků, na které je nutné dát pozor. Takže nejprve - jak vypadá konfigurace pro apache:

    root@stroj:~# cat /etc/apache2/conf-available/dav.conf 
    RewriteEngine On
    
    <Directory /srv/dav/*>
             DAV On
    </Directory>
    
    <Location /webdav>
            AuthType Basic
            AuthName "WebDAV"
            AuthBasicProvider file
            AuthUserFile /etc/dav/htpasswd.setup
            Require valid-user
    </Location>
    
    RewriteRule ^/webdav/(.*)$ /srv/dav/%{LA-U:REMOTE_USER}/$1
    

    Na rozdíl od původního konfiguračního souboru, který je uveden o kousek výše, je k těmto adresářům možný přístup pouze přes WebDAV. Pravidla, která je nutné dodržet aby to fungovalo:

    • Skupina www-data musí mít právo do každého uživatelského adresáře v /srv/dav právo zapisovat - bez toho by nebylo možné vůbec přes WebDAV něco zapsat.
    • Každý uživatelský adresář v /srv/dav musí obsahovat adresář .DAV do kterého má skupina www-data právo zapisovat. Bez toho nebude možné adresář uživatele namountovat.
    • Je-li ve /srv/dav uživatelský adresář který již obsahuje nějaké soubory a adresáře pak musí mít nastavenou alespoň skupinu www-data aby mohli její členové soubor přečíst, jinak do namountovaného adresáře nebude mít apache právo zapisovat!

    Jak to funguje, si můžete aktuálně vyzkoušet na mém testovacím serveru - chvíli to tam nechám.. Uživatelé jan, dan a man mají stejné heslo - ocas.

    mount -t davfs http://147.32.87.216/webdav temp -o username=jan
    
    15.12.2014 12:52 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Jinak vypublikování obsahu adresářů lze realizovat poměrně jednoduše symlinkem na adresář /srv/dav umístěným do kořene apache - viz http://147.32.87.216/pub
    Josef Kufner avatar 12.12.2014 17:14 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Chtěl jsem tím jen říct, že WebDAV je pěkná věc pro Android, ...
    Máš nějakého oblíbeného WebDAV klienta pro Android?
    Hello world ! Segmentation fault (core dumped)
    12.12.2014 21:56 petr_fm
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Ja pouzivam na vsechno EsFile explorer, je bezva.
    12.12.2014 22:41 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Já taky.
    Josef Kufner avatar 13.12.2014 00:49 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Hm, to nevypadá moc opensourcovatě :-(
    Hello world ! Segmentation fault (core dumped)
    15.12.2014 04:08 ByCzech
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Není náhodou problém v tom, že když přistupuje webdav klient na data uživatele, tak nepřistupuje jako daný uživatel, ale jako uživatel www-data, tudíž má přístup všude, kde má přístup uživatel www-data.

    Řešení je podle mě suexec nebo mpm-itk.
    15.12.2014 07:30 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
    Rozbalit Rozbalit vše Re: Apache: WebDAV pro uzivatele /home/$user
    Ano, přesně tak to je.

    Tvoje řešení večer zkusím.

    Ještě mě napadlo mít pro každého uživatele v configu vlastní sekci Location a definovat jeho jméno přes require. Generovat by se to dalo skriptem.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.