2011-03-30 09:02:50 +0000 2011-03-30 09:02:50 +0000
37
37

Hoe stel ik bestandspermissies in zodat nieuwe bestanden dezelfde permissies erven?

Ik heb een map waarin nieuwe submappen en bestanden automatisch worden aangemaakt, door een script.

Ik wil de gebruikers- en groepspermissies recursief handhaven voor alle nieuwe mappen en bestanden die in de bovenliggende map worden geplaatst. Ik weet dat hiervoor een sticky bit ingesteld moet worden, maar ik kan geen commando vinden dat precies laat zien wat ik nodig heb.

Dit is wat ik tot nu toe heb gedaan:

sudo mkdir -p /path/to/parent
sudo chmod -R 660 myself:somegroup /path/to/parent

Daarna wil ik dat de 660 rechten recursief worden ingesteld op alle mappen en bestanden die in /path/to/parent staan.

Echter, alles wat ik tot nu toe heb geprobeerd is mislukt. Kan iemand mij helpen, alsjeblieft?

Eigenlijk is de octale vlag 660 waarschijnlijk niet eens correct. De permissies die ik wil zijn:

  1. Directories onder /path/to/parent zijn eXecutable door gebruikers met permissies
  2. bestanden zijn read/writeable door gebruiker myself en leden van somegroup
  3. Bestanden en mappen in /path/to/parent is NIET wereld-leesbaar

Ik draai op Ubuntu 10.0.4 LTS.

Kan iemand mij helpen, alsjeblieft?

Antwoorden (3)

64
64
64
2011-03-30 10:28:30 +0000

De permissiebits die u zoekt zijn 0770 en 0660.

  • rw- permissies → 110 binair → 6 octaal

Het groepseigendom kan geërfd worden door nieuwe bestanden en mappen die in je map /path/to/parent aangemaakt worden door de setgid bit in te stellen met chmod g+s zoals dit:

chmod g+s /path/to/parent

Nu zullen alle nieuwe bestanden en mappen die onder /path/to/parent gemaakt worden dezelfde groep toegewezen krijgen als is ingesteld op /path/to/parent.

  • *

POSIX bestandspermissies worden niet overgeërfd; ze worden gegeven door het creërende proces en gecombineerd met zijn huidige umask waarde.

Je kunt echter POSIX ACLs gebruiken om dit te bereiken. Stel de default ACL in op een directory:

setfacl -d -m u::rwX,g::rwX,o::- /path/to/parent

Dit past setfacl toe op de /path/to/parent directory, -m wijzigt de -default ACL’s - de ACL’s die toegepast worden op nieuw aangemaakte items. (Hoofdletters X betekent dat alleen directories de +x bit krijgen.)

(Indien nodig, kunt u een u:someuser:rwX of g:someuser:rwX - bij voorkeur een groep - toevoegen aan de ACL’s.)

  • *

Opmerking: Op oudere systemen die ext3/ext4 gebruiken, moest u vroeger het bestandssysteem mounten met de acl optie, anders zou het alle ACL’s negeren en het instellen van nieuwe ACL’s niet toestaan.

mount -o remount,acl /

Om dit permanent in te stellen, gebruik je tune2fs -o acl <device> of bewerk je /etc/fstab.

10
10
10
2011-03-30 12:09:01 +0000

Grawity geeft een uitstekend antwoord, maar ik vermoed dat de bewerkte vraag de zaken enigszins heeft veranderd.

Ik zou voorstellen om de directory eigendom te laten van de apache gebruiker/groep. Dit zal waarschijnlijk apache of httpd zijn, afhankelijk van je distributie.

b.v.

chown -R apache:apache /path/to/parent

Je kunt dan iets doen als https://serverfault.com/questions/164078/is-adding-users-to-the-group-www-data-safe-on-debian of zelfs jezelf toevoegen aan de apache groep om er zeker van te zijn dat je groepstoegang hebt tot de directory. (Zoiets als usermod -aG apache username)

Ik zou niet de hele directory chmod -R omdat je niet wilt dat html scripts of jpg’s of willekeurige andere dingen uitvoerbaar zijn. Je zou de permissies moeten veranderen zoals vereist. (hoewel het terugzetten naar 660 misschien geen slecht idee is.)

Iets wat je misschien zou willen proberen is:

chmod o+w file

De ‘o’ betekent ‘other’ & ‘w’ betekent ‘write’. Je kunt ook ‘u’ hebben voor ‘user’ & ‘g’ voor ‘group’, en ook ‘r’ & ‘x’ die hopelijk voor zichzelf spreken. Je kunt rechten verwijderen met ‘-’ in plaats van ‘+’.

2
2
2
2011-03-30 14:22:39 +0000

Ik denk dat je de zaak te ingewikkeld maakt. Als de hoofdmap niet toegankelijk is voor anderen, dan kunnen anderen ook geen bestanden aanmaken in de boomstructuur. Groepsschrijftoegang is niet nodig als alleen apache schrijft.

Deze stappen zouden moeten doen wat je wilt (vervang directory in de commando’s door de directory die je wilt gebruiken):

  • voeg umask 027 toe aan het apache defaults script /etc/default/apache. Dit voorkomt dat anderen toegang krijgen tot bestanden of mappen die apache aanmaakt.
  • voer chown www-data:www-data directory uit in de directory waar je apache naar toe wilt laten schrijven.
  • voer chmod 750 directory uit in de directory waar je wilt dat apache naar toe kan schrijven.

Als je apache toestaat om naar een directory te schrijven, kun je allerlei soorten malware injecteren in de inhoud die je serveert. Bewaak de inhoud van deze directory op de juiste manier.