openSUSEa suomeksi
openSUSE => Asennus ja käyttö => Aiheen aloitti: jboman - 28.03.2007 - klo:09:46
-
Ongelmana olisi tehdä hakemiston ja sen alihakemistojen tiedostojen yhden käyttäjän ja yhden ryhmän toiselle käyttäjälle ja ryhmälle.
chown ei toimine koska tekee kaikille tiedostoille muunnoksen eikä vain halutulle käyttäjälle/ryhmälle?
Esimerkki:
Käyttäjä esko ja ryhmä peli halutaan muuttaa käyttäjäksi tero ja ryhmäksi testi.
Hakemistossa tiedostot:
tiedosto omistaja/ryhmä
eka esko/esko
toka esko/peli
kolmas tiira/ajat
neljas esko/peli
Muutos joka halutaan
tiedosto omistaja/ryhmä
eka esko/esko
toka tero/testi <--
kolmas tiira/ajat
neljas tero/testi <--
Tietenkin pitäisi toimia rekursiivisesti alihakemistoihin myös, jossa satoja tiedostoja.
-
Ongelmana olisi tehdä hakemiston ja sen alihakemistojen tiedostojen yhden käyttäjän ja yhden ryhmän toiselle käyttäjälle ja ryhmälle.
chown ei toimine koska tekee kaikille tiedostoille muunnoksen eikä vain halutulle käyttäjälle/ryhmälle?
Esimerkki:
Käyttäjä esko ja ryhmä peli halutaan muuttaa käyttäjäksi tero ja ryhmäksi testi.
Hakemistossa tiedostot:
tiedosto omistaja/ryhmä
eka esko/esko
toka esko/peli
kolmas tiira/ajat
neljas esko/peli
Muutos joka halutaan
tiedosto omistaja/ryhmä
eka esko/esko
toka tero/testi <--
kolmas tiira/ajat
neljas tero/testi <--
Tietenkin pitäisi toimia rekursiivisesti alihakemistoihin myös, jossa satoja tiedostoja.
Kyllä chown komennolla voi määritellä yksittäisiä tiedostoja
chown user:group tiedosto
-
Tarkennetaan:
Jos teen: chown tero:testi *
niin muuttaa kaikki tiedostot, enkä halua muuttaa kuin tietyn käyttäjän/ryhmän tiedostot.
Jos tiedostoja on satoja niin chown tero:testi tiedosto on aika hidas tapa.
Pitänee käyttää find tms. komentoa jolla kerätään käyttäjä/ryhmä tiedostot ja muutetaan shell scriptillä. Mutta mikä olisi komentorivillä toimiva yhdistelmä?
-
Tarkennetaan:
Jos teen: chown tero:testi *
niin muuttaa kaikki tiedostot, enkä halua muuttaa kuin tietyn käyttäjän/ryhmän tiedostot.
Jos tiedostoja on satoja niin chown tero:testi tiedosto on aika hidas tapa.
Pitänee käyttää find tms. komentoa jolla kerätään käyttäjä/ryhmä tiedostot ja muutetaan shell scriptillä. Mutta mikä olisi komentorivillä toimiva yhdistelmä?
Tässä scripti joka hoitaa asian. Aja se roottina siellä hakemistossa jossa muutokset pitää tehdä.
for FILE in `ls -l |awk '$3=="<vanhakäyttäjä>"&&$4=="<vanharyhmä>"{print $8}'`; do chown <uusikäyttäjä>:<uusiryhmä> $FILE; done
for FILE in `ls -l |awk '$3=="esko"&&$4=="peli"{print $8}'`; do chown tero:testi $FILE; done
-
Tapoja on monia.. itse suosittelen tutustumaan tarkemmin find-komennon manuaaliin..
Alla oleva esimerkki hakee kaikki fsu-käyttäjän tiedostot ja muuntaa käyttäjäksi uusikäyttäjä ja ryhmäksi uusiryhmä.
find -user fsu -exec chown uusikayttaja:uusiryhma {} \;
-
Tapoja on monia.. itse suosittelen tutustumaan tarkemmin find-komennon manuaaliin..
Alla oleva esimerkki hakee kaikki fsu-käyttäjän tiedostot ja muuntaa käyttäjäksi uusikäyttäjä ja ryhmäksi uusiryhmä.
find -user fsu -exec chown uusikayttaja:uusiryhma {} \;
No jos ymmärsin oikein ton tahtotilan niin siellä pitää säilyttää sama käyttäjä, mutta eri ryhmä. Eikös tämä komento muuta nyt käyttäjän esko kaikille tiedostoille ryhmän. Tällä komennolla tiedoston "eka" oikeudet muuttuu väärälle ryhmälle.
tiedosto omistaja/ryhmä
eka esko/esko
toka esko/peli
kolmas tiira/ajat
neljas esko/peli
Muutos joka halutaan
tiedosto omistaja/ryhmä
eka esko/esko
toka tero/testi <--
kolmas tiira/ajat
neljas tero/testi <--
-
niin.. kyseessähän oli esimerkki.. vaihtaa chown -komennon chgrp -komennoksi, niin pitäisi toimia myös noin. chgrp -komennolla annetaan parametrinä ryhmä ja tiedosto(t), jonka ryhmät halutaan vaihtaa.