Kicsit meghaxoltam a chmod forrasat. Kapott ket uj kapcsolod: dironly es fileonly. ha be van kapcsolva valamelyik, akkor a tenyleges chmod csak akkor hajtodik vegre ha fajl/konyvtar az adott nev. Persze a konyvtarbejarastol (-R) ez fuggetlen.
Igy a fenti ket parancs:
chmod -F -R 644 /itten/ni
chmod -D -R 755 /itten/no
Es gyorsabb is lett ;)
Patch: itten
- Elbandi blogja
- A hozzászóláshoz be kell jelentkezni
- 2221 megtekintés
Hozzászólások
lulz!
chmod -R u=rwX,g=rwX,o=rX
ha mar ott jartal el is olvashattad volna mit csinal, te linugz hekker
--
Segmentation violation -- Core dumped blues
- A hozzászóláshoz be kell jelentkezni
Amit irsz az konkretan mit csinal? A kevesbe linugz hagzorok is okulnanak.
- A hozzászóláshoz be kell jelentkezni
csak a könyvtárakra, és a már futtatható fájlokra van hatással
---------
"Ha igazat mondasz azt végig unják, ha feldíszíted azt jól meg dugják"
szerény blogom -- új címen!
- A hozzászóláshoz be kell jelentkezni
???
--
Segmentation violation -- Core dumped blues
- A hozzászóláshoz be kell jelentkezni
pontatlanul fogalmaztam, itt a szó szerinti idézet:
"execute/search only if the file is a directory or already has execute permission for some user"
---------
"Ha igazat mondasz azt végig unják, ha feldíszíted azt jól meg dugják"
szerény blogom -- új címen!
- A hozzászóláshoz be kell jelentkezni
man chmod, 5. bekezdés :)
- A hozzászóláshoz be kell jelentkezni
Nem ugyan az.
- A hozzászóláshoz be kell jelentkezni
-
- A hozzászóláshoz be kell jelentkezni
Tehat:
$ ls -lR
.:
total 4
drwxrwxrwx 2 bandi bandi 4096 2008-04-03 13:19 test
-rwxrwxrwx 1 bandi bandi 0 2008-04-03 13:17 test2
./test:
total 0
-rwxrwxrwx 1 bandi bandi 0 2008-04-03 13:19 test3
Ebbol szeretnem, hogy a fajlok 644, konyvtarak 755 legyenek. (vagy barmit, csak konyvtarnak != fajloknak)
a te parancsod mindenkitol leveszi az uccso w-t. akkor hogy is lenne helyes?
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
pedig tényleg csak guglizni kellett volna egyet. "chmod file only" keresésre első találat rögtön jó is neked
http://www.google.hu/search?q=chmod+file+only&btnG=Google+keres%C3%A9s
- A hozzászóláshoz be kell jelentkezni
Egy find -al.
find . \( -type f -a -exec chmod 644 {} \; \) -o \( -type d -a -exec chmod 755 {} \; \)
- A hozzászóláshoz be kell jelentkezni
de túl sokszor fut le a chmod
- A hozzászóláshoz be kell jelentkezni
Nekem erre van egy kb 50 soros szkriptem. Még anno tanulás céljából csináltam. Színes, szagos, informatív és leszarja hányszor fut le a chmod, eddig még nem futott fél percnél tovább.
- A hozzászóláshoz be kell jelentkezni
Igy is ket chown kell , es ketszer kell keresni. :(. Ha mar modositasz akkor valami egy chown -os megoldast kene megprobalni, MODE reszbe kene bepiteni szvsz.
- A hozzászóláshoz be kell jelentkezni
ráadásul két chmod-dal patch nélkül is megy, ha nem tévedek:
chmod -R a-x *
chmod -R u=rwX,g=rX,o=rX
bár tényleg elegánsabb lenne, ha tudna szelektálni a chmod
- A hozzászóláshoz be kell jelentkezni
chmod -R a-x,u=rwX,g=rX,o=rX *
De nem minden esetben lehet egy chown-al megoldani.
- A hozzászóláshoz be kell jelentkezni
én ezt nem merném használni, mert a doksi úgy tűnik nem beszél a sorrendiségről
- A hozzászóláshoz be kell jelentkezni
Más példák is feltételezik, hogy igy van.
A doksit kéne patchelni :)
- A hozzászóláshoz be kell jelentkezni
de az nem megoldas, hogy ad hoc belepecccselunk
--
Segmentation violation -- Core dumped blues
- A hozzászóláshoz be kell jelentkezni
Hmm jonak tunik... fenti kiindulo allapot (mindenkinek 777 van):
$ chmod -R a-x,u=rwX,g=rX,o=rX *
$ ls -lR
.:
total 4
drwxr-xr-x 2 bandi bandi 4096 2008-04-03 13:19 test
-rw-r--r-- 1 bandi bandi 0 2008-04-03 13:17 test2
./test:
total 0
-rw-r--r-- 1 bandi bandi 0 2008-04-03 13:19 test3
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
nemjo. leveszed az x jogot, utana mar nemtudsz belepelni a konyvtarba:
$ chmod -R a-x *
chmod: `test': Permission denied
$ ls -lR
.:
total 4
drw-rw-rw- 2 bandi bandi 4096 2008-04-03 13:19 test
-rw-rw-rw- 1 bandi bandi 0 2008-04-03 13:17 test2
./test:
total 0
?--------- ? ? ? ? ? ./test/test3
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
ez látod igaz...
- A hozzászóláshoz be kell jelentkezni
Pre-order a bejarása, a doksi ezt sem irja.
Kéne egy post order kapcsoló is ?
Vagy olyan kapcsolo, hogy az order olyan legyen, hogy a legmelyebbre jusson el ?
- A hozzászóláshoz be kell jelentkezni
> Kéne egy post order kapcsoló is ?
na _az_ nagyon jó lenne ilyen könyvtármanipulációkhoz
- A hozzászóláshoz be kell jelentkezni
nemkell postorder. a fenti a-x,u=rwX,g=rX,o=rX beirasod jonak tunik (bar ezzel meg mindig nemlehet kulonbozo rw jogokat adni fajloknak es konyvtaraknak). viszont erdekelne, milyen esetben nemlehet 1 chmoddal megoldani?
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
"(bar ezzel meg mindig nemlehet kulonbozo rw jogokat adni fajloknak es konyvtaraknak)"
Azt hiszem meg is valszoltad :)
- A hozzászóláshoz be kell jelentkezni
szal lényeg a lényeg, küldd be a patch-et. általános esetben jól jöhetne az a plusz szűrés.
- A hozzászóláshoz be kell jelentkezni
Én még mindig azt mondom MODE stringekben lene a helye.
Ha késobb valki oda is beteszi akkor, ez a feleslegessé válna, és tul sok opcija lenne szerencsétlen chmodnak szvsz.
- A hozzászóláshoz be kell jelentkezni
tehat akkor lenne egy ilyen, u=rwxD,u=rwF megadasi lehetoseg?
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Minden mode sztring , ha D vel kezdodik akkor csak konyvtarakra vonatkozik, ha F -el akkor csak filokra, ha nincs megadva (massal kezdodik) akkor mindketore.
D777,F000 megadas is lehetseges legyen szerintem.
Erdemes lenne megondolni, mas tipusok felismereset is.
-R preorder.
-r postorder bejarast jelenthetne.
-Rr pedig , azt jelentene, hogy konyvtarak jogait, ha ugy bovitjuk, hogy abba be lehesen lepni akkor pre, ha csokentjuk, hogy ne lehessen akkor post.
- A hozzászóláshoz be kell jelentkezni
hat ehhez mar keves vagyok :(
majd Replaced megcsinalja, ugyis olyan pro hacker ;]
a pre/post orderrel az a gond, hogy a chmod igy csinalja:
fts_open(fajl)
while fts_read() {
chmod()
if (!recurse)
fts_set(SKIP)
}
fts_close()
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
find /valahol -type d -print0 | xargs -0 chmod 755
find /valahol -type f -print0 | xargs -0 chmod 644
Ez mondjuk asszem nem teljesen cross-platform, es kicsit tobb chmod fut, mint a patchelt verzio, de rendszeresen hasznalom 50k filera, es gyakorlatilag 0 ido alatt le is fut.
- A hozzászóláshoz be kell jelentkezni
Tedd hozzá, hogy GNU-find only a megoldásod.
- A hozzászóláshoz be kell jelentkezni
Irtam, hogy nem igazan cross-platform... De az atlag linuxon mukodik.
- A hozzászóláshoz be kell jelentkezni
Vedd figyelembe, hogy egy nagyobb könyvtárszerkezeten már le sem fut. Ugyanis ekkor túl sok fájl/könyvtárnév lesz, és mindegyiket egyszerre dolgozza fel az xargs. Végeredményben egy "Argument list too long" hibaüzenetet fogsz látni.
- A hozzászóláshoz be kell jelentkezni
ööö, ugy tudtam, hogy xargs figyel erre, es ha eleri a limitet, akkor "szetszedi" az inputot megfelelo meretre.
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Én is így tudtam, általában így is van, de valamelyik rendszeren megszívtam, alig pár hónapja...
- A hozzászóláshoz be kell jelentkezni
Nem, az xargs tobbszor futtatja a parameterben adott parancsot, ha tul hosszu volna az argumentlista, erre valo. Ha nem tenne, ugyanaz lenne a
foo | xargs bar
, mint a
bar `foo`
. Nyilvan emiatt is futna tobb chmod, mint a patchelt esetben, de itt a lenyeg arrol szol, hogy 50000 fork/exec vagy 50. Az xargs (jo, ez is GNU) manual elso mondata:
xargs reads items from the standard input, delimited by blanks (which can be protected with double or single quotes or a backslash) or newlines, and executes the command (default is /bin/echo) one or more times with any initial-arguments followed by items read from standard input.
Gyors teszt nalam: 41545 file-ra 24 chmod-ot futtatott.
$ time find . -type f -print0 | strace -o /tmp/strace.out -e process xargs -0 chmod 664
real 0m1.289s
user 0m0.493s
sys 0m1.560s
$ grep clone /tmp/strace.out | wc -l
24
$ find . -type f -print | wc -l
41545
- A hozzászóláshoz be kell jelentkezni
chmod -R u-x=rwX,g-x=rX,o-x=rX * nem gyorsabb?
- A hozzászóláshoz be kell jelentkezni