Ik ben een Web Applicatie aan het ontwikkelen. Hier kunnen o.a. nieuwe projecten worden aangevraagd. Als een nieuw project wordt aangevraagd dan wordt er op de File Server (dus niet de Web Server waar de Web Applicatie op draait) een map aangemaakt met daaronder een aantal sub mappen.
De web applicatie is toegankelijk voor anonieme gebruikers in IIS. Deze gebruikers zijn dan normaal gesproken bekend onder het lokaal account IUSR_%HOSTNAME%. In plaats van deze lokale standaard gebruiker te nemen heb ik een Domein gebruiker aangemaakt genaamd Webservice. Deze gebruiker heeft rechten op de share waar de mappen op aangemaakt moet worden. Het aanmaken van de mappen inc submappen is geen probleem en werkt goed.
Map Structure
Projects
+ Projectname one
+ + Audio
+ + Video
+ + Other
+ Projectname two
+ + Audio
+ + Video
+ + Other
Maar nu:
Op de mappen die aangemaakt zijn moeten een aantal rechten worden verleend aan de Domein groep "Users". In de root van de "Projectname" mogen geen nieuwe mappen worden aangemaakt door de groep "Users" en in alle submappen mogen de "Users" alles, dus mappen aanmaken, bestanden verwijderen, enz.
Nu heb ik een aantal methodes geprobeerd.
En nog even een plaatje voor de duidelijkheid:
De web applicatie is toegankelijk voor anonieme gebruikers in IIS. Deze gebruikers zijn dan normaal gesproken bekend onder het lokaal account IUSR_%HOSTNAME%. In plaats van deze lokale standaard gebruiker te nemen heb ik een Domein gebruiker aangemaakt genaamd Webservice. Deze gebruiker heeft rechten op de share waar de mappen op aangemaakt moet worden. Het aanmaken van de mappen inc submappen is geen probleem en werkt goed.
Map Structure
Projects
+ Projectname one
+ + Audio
+ + Video
+ + Other
+ Projectname two
+ + Audio
+ + Video
+ + Other
Maar nu:
Op de mappen die aangemaakt zijn moeten een aantal rechten worden verleend aan de Domein groep "Users". In de root van de "Projectname" mogen geen nieuwe mappen worden aangemaakt door de groep "Users" en in alle submappen mogen de "Users" alles, dus mappen aanmaken, bestanden verwijderen, enz.
Nu heb ik een aantal methodes geprobeerd.
- chmod(), deze PHP functie werkt alleen onder linux. Op php.net kwam ik tegen je met 0777 en 0444 de read-only rights kon zetten. Dit werkt niet, waarschijnlijk ook dat het over een share gaat. Heb ik ook weinig aan omdat het over een domein groep gaat.
- Momenteel wordt er gebruik gemaakt van een VBA script dat de rechten goed zet. Dit script maakt een batch file aan en deze wordt uitgevoerd. Hier wordt gebruik gemaakt van xCmd.exe Dit is de inhoud de batch file die aangemaakt wordt:
code:1
C:\xcmd \\fileserver cscript.exe C:\xcacls.vbs D:\data\projects\%PROJECTNAME% /e /p \\fileserver\_localdomainusers:X
Nu heb ik geprobeerd met de exec() functie in PHP xCmd aan de praat te krijgen. Als dit zou werken kan ik PHP een batch bestandje laten generen en deze direct uit te voeren op de File Server. Dit is niet gelukt. Wat ik ook probeer, ik krijg altijd "Connecting to remote service ... Failed". De syntax die ik gebruik is foutloos. Als ik de zelfde regel uitvoer in me CMD op de Web Server werkt het wel.
- Het VBA script vanaf de Web Server uitvoeren en in plaats lokale map de rechten van de share goed zetten. Dit is dus ook niet mogelijk. Het VBA script moet lokaal worden uitgevoerd. En omdat de mappen fysiek op de File Server staan moet het script op deze server uitgevoerd worden.
- Lokaal op de Web Server de mappen aanmaken die ik nodig heb en daarvan direct de rechten goed zetten. Deze kopiëren met PHP naar de share van de File Server. Bij deze methode verliezen de mappen alle rechten en krijgt deze de rechten van de parent map waar de files naar toe wordt gekopieerd.
En nog even een plaatje voor de duidelijkheid:

[ Voor 3% gewijzigd door Tead op 28-03-2007 11:36 ]