Kirjoittaja Aihe: UID loitsu  (Luettu 1794 kertaa)

manttila

  • Käyttäjä
  • Viestejä: 58
    • Profiili
UID loitsu
« : 22.01.09 - klo:22.00 »
Olen pystyttänyt levypalvelimen, jossa on samba-jako, sillä käytän sitä ensisijaisesti Windows-koneen kautta.
Tässä palvelimessa on läjä käyttäjätunnuksia, joista ensimmäisen (UID 1000) perustin ylläpitoa varten asennusvaiheessa. Varsinaiset käyttäjätunnukset alkavat sitten UID 1001...

Nyt lisäsin verkkoon Ubuntu-työaseman, johon perustin käyttäjät, jotka saivat UID alkaen 1000. Tästä seurasi, että samalla käyttänimellä on nyt eri UID näissä koneissa. Jos siis tallennan tiedoston omalla käyttäjätunnuksellani Windows-koneessa, en olekaan sen omistaja enää Ubuntu-työasemasta katsottuna. Näin olena ainakin asian tulkinnut. Palvelimen sisältöön en halua tässä vaiheessa koskea. Se toimii.

Luulen osaavani vaihtaa UID:t /etc/passwd -tiedostoon, mutta tällöin jää jo luomiini tiedostoihin väärät omistajat. Esim. jos muutan UID 1000 -> 1001, niin minun pitäisi myös muuttaa kaikkien niiden tiedostojen omistajaksi UID 1001, joissa se nyt on 1000.

Menikö oikein ?

Kaipailisin sellaista scriptiä, jolla tämä muutos tehtäisiin mahdollisimman tehokkasti.

t. Mika

mikko_h

  • Käyttäjä
  • Viestejä: 202
    • Profiili
Vs: UID loitsu
« Vastaus #1 : 22.01.09 - klo:22.54 »
find -uid 1000 | xargs chown 1001

Chownille pitäisi varmaan antaa myös GID, joka on sama kuin UID ('chown 1001.1001 tiedosto'), jos et ole tehnyt jotain poikkeuksellista. Sh-looppi voisi olla jotain tämmöistä:

Koodia: [Valitse]
#!/bin/bash

# huomaa, että operaatiota +1 varten UID:t täytyy käydä läpi
# suurimmasta pienimpään, muuten kaikkien tiedostojen omistajaksi tulee
# suurin UID

for olduid in `seq 1010 -1 1000`
do
    newuid=`expr $olduid + 1`
    find -uid $olduid | xargs chown ${newuid}.${newuid}
done

Edit: Poistin ensin koodinpätkän, koska se etsi UID:t pienimmästä suurimpaan kunkin vuorollaan ja korotti kaikkia yhdellä sillä seurauksella, että lopulta kaikkien tiedostojen UID:ksi tuli suurin arvo. Tämä versio laskee takaperin suurimmasta pienimpään. Tällä täytyy käsitellä *kaikki* tiedostot (UID:t) kerralla, muuten lopputulos on tietysti sekameteli uutta ja vanhaa.
« Viimeksi muokattu: 22.01.09 - klo:23.14 kirjoittanut mikko_h »

Ville Pöntinen

  • Käyttäjä
  • Viestejä: 2078
    • Profiili
Vs: UID loitsu
« Vastaus #2 : 22.01.09 - klo:23.01 »
Muista myös tiedostot /etc/group ja /etc/shadow. (Ainakin ryhmä-tiedostossa kerrotaan kunkin käyttäjän GID, jonka on tietenkin myös paras olla sama kuin palvelimella.)