Ik heb naar ACL's gekeken, maar ik denk helaas dat dat niet genoeg is. Er is niet (zoals op Windows) een change ownership permission, enkel kun je als het ware extra users of groups toevoegen. Het enige wat ik dan zou kunnen bedenken is om alle users van een groep aan elke file toe te voegen, maar handig is anders (het moet immers system-wide herhaalt worden als de samenstelling van de groep veranderd)
deadinspace schreef op woensdag 12 januari 2011 @ 23:03:
[...]
Dan raad ik aan om de webroot r-xrws--- van www-data:website te maken (waar website de group van de website in kwestie is).
Vervolgens is het wel wenselijk als alle nieuw aangemaakte files en directories g+w worden. Als dat standaard niet het geval is, dan moet je dat instellen daar waar de files aangemaakt worden. Op de Unix commandline gaat dat met umask, voor winscp oid zul je dat zelf moeten uitzoeken.
Dat is allebei dus al het geval. umask staat op 207. dus standaard zijn files r-xrwx---. user is www-data en groep is website groep. Dat laatste heb ik overigens al meerdere malen gemeld.
waar het nou juist om gaat is dat liever niet alle files user-writable (door www-data dus) worden.
Dat zou ik afraden. Het is tricky om dat soort dingen goed te krijgen. Als je het niet goed doet, dan is de kans groot dat iets op je systeem je gewrapte chmod niet zo tof vindt (even er van uitgaand dat je hem system-wide installeert), en de potentie voor security holes is groot.
Daar heb ik aan gedacht. De grap is dat ik het denk goed te krijgen door een extra map (/usr/local/bin/nisonly) aan het path van nis-users waardoor die "chmod" te voorkeur krijgt boven de echte chmod.
Dat werkt allen niet als de implementatie van SFTP direct de binary gebruikt i.p.v. het path doorzoekt, maar dan kunnen de users het i.i.g. nog via SSH.
"Algoritme" is als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| if
(argumenten die buiten script niet aankan)
OR
(user heeft root rechter)
then
voer chmod uit met oorspronkelijke argumenten
endif
for (elk bestand in de parameters)
if(isdir AND user zit in groep van bestand AND -R parameter)
chmod dir als root
ga recursief dit script weer in
else if (user zit in groep van bestand)
chmod file als root
else
chmod file als oorspronkelijke user (geef dus eigenlijk de chmod foutmelding weer)
endfor |
Ben benieuwd of het gaat werken als het af is.
[
Voor 3% gewijzigd door
dtech op 13-01-2011 01:07
]