chmodden van gehele dir/file structuur

Pagina: 1
Acties:

  • StruvusMaximus
  • Registratie: Februari 2000
  • Laatst online: 03-01-2025
ik wil graag via een telnet sessie, de volgende situatie creeren:
webdirectory \html\
vanuit die dir alle onderliggende dirs permissie 777, en alle onderliggende files 666
Dit ivm met install phpnuke

Nu heb ik ooit een commando daarvoor van iemand gekregen echter ik weet hem niet meer helemaal kunnen jullie mij vertellen waarom:
find -type f -exec chmod 666 {} \;
het niet doet???
Ik kan me nog herinneren dar er het | ergens in moest maar ik weet het niet meer.

any suggestions?
by de weg de server draait op openbsd, ik weet niet of dat een verschil is ten opzichte van een willekeurige linux distro

  • deadinspace
  • Registratie: Juni 2001
  • Nu online

deadinspace

The what goes where now?

de meeste shells interpreteren '{}', dus die moet je ook escapen, net als die ';'. probeer eens: 'find -type f -exec chmod 666 \{\} \;'

  • Exirion
  • Registratie: Februari 2000
  • Laatst online: 21:10

Exirion

Gadgetfetisjist

Wat dacht je van gewoon:

chmod -R xxx *

-R does the trick :)

"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein


  • StruvusMaximus
  • Registratie: Februari 2000
  • Laatst online: 03-01-2025
omdat dan alle files en dirs xxx worden en zo als ik al aan gaf moet er verschil zitten tussen dirs en files

  • StruvusMaximus
  • Registratie: Februari 2000
  • Laatst online: 03-01-2025
als ik mijn mijn bovenstaande commando regel invoer krijg ik het volgende, mischien helpt het..
public_html/fh$ find -type f -exec chmod 666 \{\} \;
find: illegal option -- t
find: illegal option -- y
find: illegal option -- p
find: illegal option -- e
find: f: No such file or directory

Verwijderd

zoiets?
code:
1
find -type d -exec chmod 777 \{\} \; && find -type f -exec chmod 666 \{\} \;

[Flauw modus]
Maak er ff een backupje van ;)
[/Flauw modus]

  • StruvusMaximus
  • Registratie: Februari 2000
  • Laatst online: 03-01-2025
dat werkt ook niet, ik krijg steeds de foutmelding:
mark@blowfish:~$ find -type d -exec chmod 777 \{\} \; && find -type f -exec chmod 666 \{\} \;
find: illegal option -- t
find: illegal option -- y
find: illegal option -- p
find: illegal option -- e
find: d: No such file or directory
find: illegal option -- t
find: illegal option -- y
find: illegal option -- p
find: illegal option -- e
find: f: No such file or directory

help...

Verwijderd

Op zondag 03 juni 2001 17:36 schreef deadinspace het volgende:
de meeste shells interpreteren '{}', dus die moet je ook escapen, net als die ';'. probeer eens: 'find -type f -exec chmod 666 \{\} \;'
Ik ben nog nooit een shell tegen gekomen waar ik \{\} moest doen ipv {}

Volgens mij moet je een of meerdere start directories opgeven. Dus:
find . -type f -exec chmod 777 {} \;
of
find mijn_cgi_dir -type f -exec chmod 777 {} \;

Overigens is het niet zo'n goed idee om er 777 van te maken, dan kan iedereen je scripts/executables wijzigen. Doe gewoon 755 of 775.

Edit: jouw probleem (verschil tussen dirs en files) kan met 1 find commando; zoiets:
code:
1
find /dehtmldir -type d -exec chmod 777 {} \; -o -type f -exec chmod 666 {} \;

  • pjottum
  • Registratie: Mei 2000
  • Laatst online: 22:56

pjottum

¯\_(ツ)_/¯

Doe
cd /de/juiste/dir
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;

waarbij je de 644 en 755 naar welbehagen mag aanpassen, maar zo is alles in elk geval leesbaar voor je webservert ..
Je vergat overigens de . na de find. :)

Zou je trouwens alle commando's vertrouwen die je van iemand krijgt ? Zoals
find . -type f -exec rm -rf {} \;
(tik maar niet over .. >:) )

I have usernames older than you.


  • StruvusMaximus
  • Registratie: Februari 2000
  • Laatst online: 03-01-2025
duh natuurlijk neem ik niet alles klakkeloos over mijn beperkte kennis over dit onderwerp weet nog wel de -rm commando's e.a.

mmar ik was inderdaad de . vergeten tsja .....

Verwijderd

[niet zo nuttige info]
Er zijn ook find versies waarbij je geen dir op hoeft te geven.
Als je dan geen dir opgeeft pakt hij automatisch de huidige dir (.)
[/niet zo nuttige info]

Verder denk ik dat iemand die met een dergelijk commando aan de slag gaat wel iets meer weet van Linux dan de gemiddelde vraag die hier gesteld wordt en dus ook niet zomaar alle commando's klakkeloos over zou typen.

  • bickel
  • Registratie: Augustus 2000
  • Laatst online: 27-02-2025
Ok dan nog een keer goed, en nu wel opschrijven he!
Het commando met -exec werkt ook, totdat het aangeboden aantal files boven een bepaalde limiet komt.
Dit werkt altijd:
find /wherever -type f|xargs chmod 666

  • dextertje
  • Registratie: Februari 2000
  • Laatst online: 12-08 13:18
Op zondag 03 juni 2001 17:56 schreef markoh het volgende:
als ik mijn mijn bovenstaande commando regel invoer krijg ik het volgende, mischien helpt het..
public_html/fh$ find -type f -exec chmod 666 \{\} \;
find: illegal option -- t
find: illegal option -- y
find: illegal option -- p
find: illegal option -- e
find: f: No such file or directory
simpel, jouw find versie kent de flag -type niet, maar interpreteert die als -t -y -p -e
dus misschien is het `find --type'.
Doe anders `man find' of `find --help' en kijk wat de juiste flags moeten zijn. :)
Bij mij werkt `find -type' in elk geval wel...

edit: de BSD's zijn wel wat strenger qua syntaxis. Het kan heel goed komen doordat het .-tje mist. Oftewel: de punt, de dot, de huidige dir.
edit2: Hmm, daar was je al achter. Nou ja, onder Linux kan het dus wel, weglating van dat puntje.

Verwijderd

find /wherever -type f|xargs chmod -R 666;find /wherever -type d|xargs chmod -R 777

edit:
mmm, beetje laat |:(

Verwijderd

Op dinsdag 05 juni 2001 01:23 schreef Zemanova het volgende:
find /wherever -type f|xargs chmod -R 666;find /wherever -type d|xargs chmod -R 777

edit:
mmm, beetje laat |:(
En ook een beetje vreemd: "find /wherever -type f" vindt alleen files dus waarom de -R in de chmod erachter?

De tweede, voor directories is nog vreemder: "find /wherever -type d" geeft alle directories onder /wherever terug, als je vervolgens chmod -R (recursief dus) doet op al die directories doe je sommige directories dus meerdere keren. In een grote (diepe) directory structuur doe je zo het chmod commando misschien wel 10 keer op de "diepste" directories.

Dan nog over het gebruik van xargs:

Het -exec command van find geeft slechts 1 argument aan het opgegeven commando als je 1x {} gebruikt. Je hebt dus geen xargs nodig. Teveel file argumenten krijg je nogal eens als je bijvoorbeeld chmod 666 */*/* zou proberen, doordat niet het programma de * interpreteert, maar de shell ze vervangt door alle matchende files (en directories) voordat het programma gestart wordt.

  • pjottum
  • Registratie: Mei 2000
  • Laatst online: 22:56

pjottum

¯\_(ツ)_/¯

Juist, dat laatste wilde ik er ook aan toevoegen, als je gewoon find . -type f | chmod xxx zou doen dan knalt ie er wel uit, -exec {} \; zorgt ervoor dat het voor elk filetje apart gedaan wordt ..
en de . is net zo handig als je hem wel neerzet als wanneer je hem niet neerzet. Net zoals een vlaggetje met een -ervoor wordt gegeven hoewel dat ook niet overal nodig meer is.. :)

I have usernames older than you.

Pagina: 1