Bulk chmodden van enkel directories werkt niet goed

Pagina: 1
Acties:

  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 27-01 15:56
Ik probeer op mijn ftp server een flink aantal directories automatisch te chmodden maar krijg het niet voor elkaar.

Ik gebruik het volgende commando om met find alle directories te vinden die ge-chmod dienen te worden:
code:
1
chmod 755 $(find -type d)


Wat er nu fout gaat is dat directories met een spatie erin niet als een enkele directory worden gezien (normaal zou je de spatie escapen).
Zodra ik de volgende opdracht gebruik is dat probleem opgelost maar dan maakt hij 1 query van alle directories en klaagt dan dat de filename te lang is.
code:
1
chmod 755 "$(find -type d)"


Hulp is welkom, ik kom er helaas niet uit. De server draait op een NAS met beperkte resources, dus ik ben bang dat ik er met te zware berekeningen ook niet kom.

Alvast bedankt

Verwijderd

Met while read
find -type d | while read path; do chmod 755 "$path"; done

Met xargs
find -type d -print0 | xargs -0 chmod 755

Met chmod
chmod -R +X .

De derde doet niet precies wat je wilt, maar kan je wel helpen, afhankelijk van je echte doel.

  • phobosdeimos
  • Registratie: Augustus 2007
  • Laatst online: 23:18
code:
1
find -type d -exec chmod 755 {} \;

  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 27-01 15:56
Cheatah: Bedankt voor de les, dit werkt uitstekend en snel.
phobosdeimos: dat leverd bij mij de volgende response op:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[/share/HDA_DATA/Data/Applications/System and security] # find -type d -exec chmod 755 {} \;
BusyBox v1.01 (2008.04.08-17:55+0000) multi-call binary

Usage: find [PATH...] [EXPRESSION]

Search for files in a directory hierarchy.  The default PATH is
the current directory; default EXPRESSION is '-print'

EXPRESSION may consist of:
        -follow         Dereference symbolic links.
        -name PATTERN   File name (leading directories removed) matches PATTERN.
        -print          Print (default and assumed).

        -type X         Filetype matches X (where X is one of: f,d,l,b,c,...)
        -perm PERMS     Permissions match any of (+NNN); all of (-NNN);
                        or exactly (NNN)
        -mtime TIME     Modified time is greater than (+N); less than (-N);
                        or exactly (N) days


Nogmaals bedankt voor de snelle hulp.

  • phobosdeimos
  • Registratie: Augustus 2007
  • Laatst online: 23:18
Oké wist niet dat je met busybox werkte, ik ging uit van een normale GNU find ;)

Verwijderd

Simkin schreef op woensdag 11 juni 2008 @ 21:39:
phobosdeimos: dat leverd bij mij de volgende response op:
code:
1
bladiebla
path vergeten:

find /blaat/mekker/schaap -type d -exec chmod 755 {} \;

(als het gaat om de directory /blaat/mekker/schaap)

Waarom wil je dit trouwens?

[ Voor 4% gewijzigd door Verwijderd op 11-06-2008 23:13 ]


  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 27-01 15:56
De ftp server draaide zonder problemen maar met Twonkeymedia uPNP en windows kreeg ik wel een directory listing maar de bestanden zelf niet te zien. Met 755 voor de directories en 555 voor de bestanden werkte alles zoals het hoorde. (lees rechten voor FTP gebruikers en lees/schrijf voor samba)

Verwijderd

Dan is de beste oplossing volgens mij toch de volgende:
chmod -R 644 /home/ftp
chmod -R +X /home/ftp

Ik zou niet weten waar die 555 op slaat als het gewoon bestanden zijn die geserveerd moeten worden via FTP. Dei hoeven toch niet executable te zijn?

  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 27-01 15:56
Ik snap je opmerking Cheatah, ik verbaasde mij er ook om maar zodra ik de execute weghaal zijn ze niet meer benaderbaar via pure-ftpd. Ik zal een sgooglen of ik hier iets over kan vinden.
Pagina: 1