Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: manttila - 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
-
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ä:
#!/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.
-
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.)