Kirjoittaja Aihe: Miten tehdään tiedoston käyttäjän ja ryhmän muuttaminen ?  (Luettu 4273 kertaa)

0 jäsentä ja 1 Vieras katselee tätä aihetta.

jboman

  • Vieras
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.

Poissa harmie

  • Valvoja
  • *
  • Viestejä: 2773
  • Sukupuoli: Mies
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

jboman

  • Vieras
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ä?

Poissa harmie

  • Valvoja
  • *
  • Viestejä: 2773
  • Sukupuoli: Mies
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

fsu

  • Vieras
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ä.
Koodia: [Valitse]
find -user fsu -exec chown uusikayttaja:uusiryhma {} \;

Poissa harmie

  • Valvoja
  • *
  • Viestejä: 2773
  • Sukupuoli: Mies
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ä.
Koodia: [Valitse]
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 <--

fsu

  • Vieras
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.