Portál AbcLinuxu, 16. července 2025 08:54


Dotaz: soubory -- skript na prava

20.4.2003 19:50 homer
soubory -- skript na prava
Přečteno: 152×
Odpovědět | Admin
dobry den,

mam takovy problem potreboval bych skript (bash), ktery vleze do daneho adresare a zmeni prava, jinak na adresare a jinak na soubory a to cele udela rekurzivne do hloubky.

jedna se mi o to nastavit prava pro nekolik stovek souboru a nevim jak na to :-( nemate nekdo neco podobneho?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.4.2003 22:01 finn
Rozbalit Rozbalit vše soubory -- skript na prava
Odpovědět | | Sbalit | Link | Blokovat | Admin
Treba takhle:
#!/bin/bash

change_owner() {
for FILE in *; do
if [ -d "${FILE}" ]; then
chown $DIR_OWN "${FILE}"
cd ./"${FILE}"
change_owner
else
chown $FILE_OWN "${FILE}"
fi
done

cd ..
}

DIR_OWN=franta
FILE_OWN=jarda
INITIAL_PATH=`pwd`

change_owner
cd "${INITIAL_PATH}"

exit 0
20.4.2003 22:05 oprava
Rozbalit Rozbalit vše soubory -- skript na prava
Poradne jsem si to neprecet, predchozi skript meni vlastnika a ne prava, spravna verze je tady:
#!/bin/bash

change_attribs() {
for FILE in *; do
if [ -d "${FILE}" ]; then
chmod $DIR_ATTR "${FILE}"
cd ./"${FILE}"
change_attribs
else
chmod $FILE_ATTR "${FILE}"
fi
done

cd ..
}

DIR_ATTR=755
FILE_ATTR=644
INITIAL_PATH=`pwd`

change_attribs
cd "${INITIAL_PATH}"

exit 0
20.4.2003 22:14 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše soubory -- skript na prava
To je teda naprosto obskurní. Lidi, naučte se sakra používat find.
find /cesta/kamsi -type d | xargs chmod 755
find /cesta/kamsi -type f | xargs chmod 644
(například).
21.4.2003 03:26 rajo AT platon.sk
Rozbalit Rozbalit vše soubory -- skript na prava
find je cool, ale na rekurzivnu zmenu prav niekedy staci pouzit aj chmod: chmod -R o+rX dir/ - subory budu mat o+r, adresare aj o+x
21.4.2003 10:28 homer
Rozbalit Rozbalit vše soubory -- skript na prava
ten skriptik pomoci find vyhodi chybu: xargs: unmatched single quote :-(
21.4.2003 11:19 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše soubory -- skript na prava
Ty máš v názvech souborů apostrofy?! (prase ;-) )
find /cesta/nekam -type f -print0 | xargs -0 chmod 7777
by to mělo řešit.
21.4.2003 11:14 beda
Rozbalit Rozbalit vše soubory -- skript na prava
find /cesta -type f -a -iname \*cgi -perm +111 -a -exec chmod a-x {} \;
  • od adresare '/cesta' dolu
  • souborum '-type f' a zaroven '-a'
  • koncicim "cgi" case insensitive '-iname \*cgi' a zaroven 'implicitni neuvedeny -a'
  • ktery maji nastaveny kdekoliv "x" 'perm +111'(cili pro: u OR g OR o OR ug OR uo OR go OR ugo s x bitem)
  • spusti externi program, ktery odstrani vsem pravo x '-exec chmod a-x {} \;'

jinak da se seskupovat do logickych vyrazu '\(' '\)' a "nebo" se pise jako '-o'
samozrejme predpokladam bash, a nikde nepiste zadnou "'" ty jsou navic pro tento text, cily v promptu bashe napisete
find / \( -type f -a -perm +111 -a excec echo prvni match {} \; \) -o \( -type -d -a -exec echo druhy match {} \; \)
a to uz je korektne escapnuty vyraz

21.4.2003 11:27 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše soubory -- skript na prava
Dobrý, ale co to má sploečnýho s otázkou? Nechápu proč do toho motáš koncovku .cgi matchovanou case-insensitive, matchování práv a proč jednou -a mezi výrazy píšeš a jindy ne, když už to má být srozumitelný příklad. Ale hlavně nechápu, proč pouštíš -exec-em chmod na každý soubor zvlášť. Takhle budeš na 600 soborů pouštět 600 chmodů, kdežto řešení s xargs pustí chmod jen jednou, takže je to o nesrovnatelně rychlejší.
21.4.2003 12:24 homer
Rozbalit Rozbalit vše soubory -- skript na prava
> Ty máš v názvech souborů apostrofy?! (prase ) mp3 ne mnou grabovane ;-) vysledny skript je tedy ROOTPLACE=$HOME/mp3/ find $ROOTPLACE -type d -print0 | xargs -0 chmod 755 find $ROOTPLACE -type f -print0 | xargs -0 chmod 644 # linkovany scsi disk -------------------------------------------------- find $ROOTPLACE/_scsi_disk/* -type d -print0 | xargs -0 chmod 755 find $ROOTPLACE/_scsi_disk/* -type f -print0 | xargs -0 chmod 644
21.4.2003 17:46 Beda
Rozbalit Rozbalit vše *OT:soubory -- skript na prava

OT (jen pro Yetiho) cus. to byl jen vytah nejuzitecnejsich(nejobvyklejsich (jeste s -user UID)) veci z manovsky stranky, protoze otazka nebyla nejspis do detailu rozepsana a vetsina dulezitych informaci uz tu padla.
exec? hodit do nej bash -c "dalsi zpracovani treba na zaklade obsahu"
logicky operatory, aby se dal napsat prikaz na jeden pruchod
parametry matchuti podle jmena, typu, a prav nejcastejsi porovnani... (datum a usera uz si kazdej najde...)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.