[PHP/Samba] Uploaden + rechtenbeheer dmv php, downl. via smb

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • zeekoe
  • Registratie: Januari 2002
  • Laatst online: 04-09 12:16
Voor m'n werk ben ik bezig met een webapplicatie die bestanden moet opslaan op de server (LAMP), gekoppeld aan projecten e.d.. Er zijn vertrouwelijke documenten, en er zijn ook hele projecten met documenten die daaronder hangen die alleen door een bepaalde groep gezien mogen worden. De bestanden moeten na openen in de webbrowser direct vanuit Word weer op te slaan zijn op de server.

De meest voor de hand liggende oplossing leek me om de uploadmap via Samba beschikbaar te maken. Dat is gelukt, werkt prima. Maar, dan zijn de documenten nog niet afgeschermd. Een eerste optie als beveiliging was het chmodden van de directories naar -r+x, waardoor de bestanden wel te openen zijn, maar de directory listings niet op te halen zijn. Linux en smbget vinden dit prima, maar Windows denkt dat als de dirlisting niet op te halen is, dat een bestand dan vast ook niet te openen is. Bovendien is dit niet heel veilig; als mensen de bestandsnaam raden dan kunnen ze er alsnog bij.

Waar ik nu aan zit te denken voor de beveiliging, is het chownen direct na upload. Probleem is dat normaal gesproken alleen root dit mag. Hiervoor zijn weer twee oplossingen te bedenken: php een bestandje laten maken met wat er moet gebeuren, cronjob elke minuut laten draaien die dit bestandje doorloopt. Verder schijnt er een systeembrede rstchown optie te zijn, die het voor normale gebruikers mogelijk maakt om te chownen. Maar dit wordt afgeraden, en lijkt alleen in Solaris te werken.

Een andere optie is om (en dan hoeft het niet per se meer met samba) een clientside tooltje te downloaden of zelf te schrijven dat het automatisch down- en uploaden van de bestanden doet. Het gaat om een stuk of tien WinXP-clients, dus dat valt wel te onderhouden.

Momenteel staan de bestanden, inclusief ingestelde rechten, op een Novell-server. Het is de bedoeling dat tzt overgegaan wordt op de linux-server, dus alles daarop houden en daarnaartoe uploaden is ook geen optie.

Al met al zijn alle opties tot nu toe niet echt nette rechttoe-rechtaan oplossingen. Ik dacht, laat ik weer eens op GoT gaan kijken, daar zaten altijd wel slimme mensen. :) Heeft iemand suggesties?

Weheat Blackbird 8 kW + Itho Daalderop I-WPV 150 l | 2x Jaga Tempo 240x40T20 + kleintjes boven | Rocketstove Tiny III | 7x Solitek + Kostal PIKO 3.6-2


Acties:
  • 0 Henk 'm!

  • soczol
  • Registratie: Oktober 2002
  • Laatst online: 19:07

soczol

Doet iets met energie

Voor het chown rechtenprobleem; heb je al eens gekeken naar sudo? Daarmee zou 't mogelijk moeten zijn om de user waaronder de webserver draait, rechten te geven om chown uit te voeren als root.

Uiteraard is dit alleen verstandig als je volledige controle hebt over alle scripts op de server, anders zou iemand anders simpelweg hetzelfde sudo commando uit kunnen voeren.

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

een goed opgezet ftp servertje? Als het goed is mag word daar wel op opslaan mits je de user/pass meegeeft in de link bij het openen :)

[ Voor 128% gewijzigd door SchizoDuckie op 04-08-2008 16:03 ]

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • zeekoe
  • Registratie: Januari 2002
  • Laatst online: 04-09 12:16
Bedankt voor de tips! sudo lijkt me wat riskant, omdat voor zover ik weet niet in te stellen is welke commando's wel en niet als root uitgevoerd mogen worden. Een ftp-server klinkt idd wel goed als mogelijkheid om verder naar te kijken.

Weheat Blackbird 8 kW + Itho Daalderop I-WPV 150 l | 2x Jaga Tempo 240x40T20 + kleintjes boven | Rocketstove Tiny III | 7x Solitek + Kostal PIKO 3.6-2


Acties:
  • 0 Henk 'm!

  • soczol
  • Registratie: Oktober 2002
  • Laatst online: 19:07

soczol

Doet iets met energie

Het is wel degelijk in te stellen welke commando's als root uitgevoerd mogen worden.

Bijvoorbeeld:

code:
1
www-data  ALL=(ALL) NOPASSWD:/bin/chmod


Dit geeft aan dat de gebruiker www-data enkel het commando /bin/chmod uit mag voeren, en dat het hiervoor niet nodig is om een wachtwoord op te geven (iets dat nogal moeilijk gaat via een script).

Uiteraard kun je ook zelf een wrapperscriptje maken (dat via sudo uitgevoerd kan worden) welke vervolgens controleert of er geen 'foute' targets worden ge-chmod, die vervolgens het echte commando uitvoert.

Acties:
  • 0 Henk 'm!

  • zeekoe
  • Registratie: Januari 2002
  • Laatst online: 04-09 12:16
@soczol, bedankt voor de tip! Nooit geweten dat Linux zó flexibel was. Ik ben vanmiddag een tijd bezig geweest met uitzoeken van chmod over samba, vond wel iemand die hetzelfde wilde en op 3 verschillende fora/mailinglists die vraag had gesteld, maar nergens antwoord had gekregen. Ik had hier dus nog ff weer terug moeten kijken :)

Hoe ik het nu heb opgelost (mochten anderen iets soortgelijks willen doen)
* 3 users aangemaakt, 1 gast en 2 met verschillende rechten. Na een tijdje kwam ik erachter dat ik ze met smbpasswd ook als samba user moest aanmaken voordat ik ermee kon inloggen op een share (alleen linux user was niet genoeg)
* samba share driemaal gemount, op /mnt/user1 /mnt/user2 en /mnt/user3, dmv /etc/fstab, met fmask=700 en dmask=700, uid=www-data en gid=www-data (die laatste zal niet veel doen)
* drie mapjes in de uploadmap aangemaakt als die drie verschillende gebruikers met de verschillende permissies: als een map alleen leesbaar is voor user2, dan zijn de onderliggende bestanden dat ook (zo omzeil ik het chmodden van de losse bestanden)
* dmv php bestanden kopieren naar /mnt/user1/user1 ... /mnt/user3/user3 en ze worden automagisch als de goede gebruiker aangemaakt (met rwxrw-r-- rechten, meen ik)

Voor FTP kwam ik tegen dat ProFTPd een MySQL-backend heeft voor het beheer van virtuele servers, erg vet. Alleen liep ik daar geloof ik tegen andere problemen aan, en kwam ik al op het idee van smb shares mounten.
Wellicht dat ik het nog zo ga aanpassen dat www-data mag chmodden, zou wel zo netjes kunnen zijn. Nadeel is wel dat als je een bestand verplaatst van /mnt/user1/bestand naar /mnt/user2/ dat het bestand dan verdwijnt... (ws. omdat de fysieke locatie hetzelfde is). Het extra mapje een niveau lager vangt dat af. Natuurlijk kan voor php ook chownen aan worden gezet, maar dat lijkt net iets minder veilig...
Anyway, thx voor al het meedenkwerk!

Weheat Blackbird 8 kW + Itho Daalderop I-WPV 150 l | 2x Jaga Tempo 240x40T20 + kleintjes boven | Rocketstove Tiny III | 7x Solitek + Kostal PIKO 3.6-2

Pagina: 1