123tomek Napisano Styczeń 13, 2012 Zgłoszenie Share Napisano Styczeń 13, 2012 Witam! Przenosze konta userow z bardzo starej fedory na F16 i napotkalem na pewnien problem. W starym systemie numeracja UID uzytkownikow rozpoczyna sie od 500 natomiast w F16 od 1000. Pytanie czy moge wrzucic te nizsze UID do nowej F16 czy spowoduje to komplikacje. Na razie niskie numery od 500 do 1000 nie dubluja sie ale ogolnie zrobi sie niezly balagan jak system bedzie w dalszym ciagu uzywac numerow 500 do 1000 jako systemowe konta a wsrod nich bede mial dotychczasowych uzytkownikow (na przyszlosc migracja bedzie utrudniona). Czy jest jakis sposob na przenumerowanie UID i GID tak by takze pliki uzytkownikow otrzymaly nowe UID i GID? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Styczeń 13, 2012 Zgłoszenie Share Napisano Styczeń 13, 2012 Użytkowników zakładasz na nowo w F16 i chcesz przenieść ich zasoby (/home itp)? Jeśli tak, to w czym problem? Do starego UID, GID dodajesz 500, zapisujesz w zmiennej i lecisz po odpowiednich zasobach (czyli np. /home) chown -R $nowy_uid:$nowy_gid /home/$USER. Zasadniczo stare UID i GID >=500 i <1000 na razie nie przeszkadzają, ale jak słusznie zauważyłeś nie wiadomo jak to się potoczy dalej, więc lepiej zmienić numery teraz i mieć z głowy. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
123tomek Napisano Styczeń 13, 2012 Autor Zgłoszenie Share Napisano Styczeń 13, 2012 Użytkowników zakładasz na nowo w F16 i chcesz przenieść ich zasoby (/home itp)? Jeśli tak, to w czym problem? Do starego UID, GID dodajesz 500, zapisujesz w zmiennej i lecisz po odpowiednich zasobach (czyli np. /home) chown -R $nowy_uid:$nowy_gid /home/$USER. Zasadniczo stare UID i GID >=500 i <1000 na razie nie przeszkadzają, ale jak słusznie zauważyłeś nie wiadomo jak to się potoczy dalej, więc lepiej zmienić numery teraz i mieć z głowy. Chcę uniknąć zakładania nowych użytowników w F16. W plikach passwd, shadow i group moge pododawac po 500 do UID i GID jednak zalezaloby mi na przeniesieniu pozostałych danych z zachowaniem uprawnien. Daloby sie wykombinowac jakis madry skrypt ktoryby sprawdzal UID i GID katalogu wraz z wszystkimi plikami, nastepnie dodawalby do UID i GID po 500 i wykonywal chown z nowymi wartosciami? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
witekmo Napisano Styczeń 13, 2012 Zgłoszenie Share Napisano Styczeń 13, 2012 Daloby sie wykombinowac jakis madry skrypt ktoryby sprawdzal UID i GID katalogu wraz z wszystkimi plikami, nastepnie dodawalby do UID i GID po 500 i wykonywal chown z nowymi wartosciami? Opcja -R (recursive) w chown załatwia tę sprawę, jak podał WalDO Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
123tomek Napisano Styczeń 13, 2012 Autor Zgłoszenie Share Napisano Styczeń 13, 2012 Opcja -R (recursive) w chown załatwia tę sprawę, jak podał WalDO Chyba sie nie rozumiemy. Mam kilkaset kont userow z UID od 500 w gore. Potrzebuje automatycznie (skryptem) zamienic wszelkim plikiom i katalogom, ktorych wlasciciele mieszcza sie w przedziale UID od 500 do "n", wartosc UID na wyzsza o 500. Przykładowo: Jest katalog /var/spool/mail/ ktory zawiera setki plikow z poczta userow, kazdy z plikow ma inne UID. Potrzebuje wydac jedno polecenie ktore: 1.odczyta aktualna wartosc UID danego pliku z poczta, 2.zapamieta te wartosc, 3.wykona komende chown z "zapamietana wartoscia UID"+500, 4.powtorzy to dla wszystkich plikow w tym katalogu. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Styczeń 13, 2012 Zgłoszenie Share Napisano Styczeń 13, 2012 Czyli tak naprawde chcialbys wyszukac w calym systemie pliki z UID/GID 500 lub wiecej? Bo dalsza czesc, to juz tak jak napisales. Moze sa jakies gotowe narzedzia. W najprostszej (choc na pewno malo efektywnej wersji): for i in `seq 500 999` # albo mniej jesli znasz wszystkie id do find / -uid $i -gid $i -exec chmod $i:$i {} \; done Oczywiscie szukac mozna w okreslonych lokalizacjach, szukac tylko po UID jesli wszyscy userzy maja te sama grupe itd. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
witekmo Napisano Styczeń 13, 2012 Zgłoszenie Share Napisano Styczeń 13, 2012 Tylko chyba w tym skrypcie brakuje zwiekszenia o 500 ? Nie znam za dobrze basha, bo do skryptów uzywam Tcl, ale po drodze wystarczy przypisac j=$i+500 i zrobic -exec chmod $j:$j. No a na koncu chyba trzeba recznie zwiekszyc wpisy w passwd i group, zeby pasowaly do nowych wartosci. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Styczeń 13, 2012 Zgłoszenie Share Napisano Styczeń 13, 2012 Słusznie, tak na szybko i "spod dużego palca" rzuciłem raczej sposób odszukania plików danego użytkownika niż rozwiązanie do zaimplementowania sposobem copy-paste Poza tym dawno już nie administrowałem serwerem z jakąś poważniejszą liczba użytkowników, więc trochę nie na czasie jestem, ale myślę, że jak dobrze poszukać w Googlach, to znajdzie się bardziej efektywny, szybszy i słuszniejszy sposób rozwiązania problemu. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Styczeń 13, 2012 Zgłoszenie Share Napisano Styczeń 13, 2012 Nie, to nie będzie takie hop siup * jeśli w systemie jest user o uid = 1000..1500 to będzie pozamiatane zacznij od najwyższego numerku w /etc/password w dół * user wcale nie musi mieć tego samego UID i GID, wystarczy że dodałeś kiedyś z palca grupę, więc rozpatruj osobno * jeśli jakieś pliki mają usera powyżej 500, a celowo nadaną grupę poniżej 500, to nie powinny mieć zmienionej grupy * jak się pomylisz, to nie ma szans na odzyskanie uprawnień. Zrób to selektywnie po nazwach w wiadomych lokalizacjach: /home i /var/spool/mail itd. * nie wiem jak u Ciebie, ale $HOME nie zawsze jest w /home * a poza tym to by się trochę optymalizacji przydało, bo "500 * find /" nie lepiej raz 1 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Styczeń 14, 2012 Zgłoszenie Share Napisano Styczeń 14, 2012 To jest jakies nowe ograniczenie na sesje (GDM nie wpusci). Jakby sie uprzec i poszukac to mozna na pewno jakos przywrócic mozliwosc uzywania UID ponizej 1000. EDIT: Poza tym jak zmieniasz UID poleceniem usermod to on automatycznie dostosuje system plików, tzn. przynajmniej /home/user, ale poza tym folderem raczej nie trzymasz plików. Konta root to nie dotyczy, bo i tak ma uid=0. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Styczeń 15, 2012 Zgłoszenie Share Napisano Styczeń 15, 2012 potestuj taki pomysł, nie testowane w realu!!! #!/bin/bash TEST=echo # dla testu ustaw na 'echo', żeby wykonać zmiany zakomentuj # powiększ UID/GID z tego zakresu MIN=500 MAX=999 # sprawdż najpierw jakie są największe ustawione wartości # posłużymy się nimi jako licznikiem LAST_UID=$(awk -F':' '{print $3}' /etc/passwd | sort -n | tail -1) LAST_GID=$(awk -F':' '{print $4}' /etc/passwd | sort -n | tail -1) # musimy mieć pewność, że liczymy nowe przynajmniej od 1000 [ $LAST_UID -le $MAX ] && LAST_UID=$MAX [ $LAST_GID -le $MAX ] && LAST_GID=$MAX echo "Last used UID = $LAST_UID" echo "Last used GID = $LAST_GID" # przy okazji możemy wygenerować nową zawartość dla /etc/passwd NEW_ETC_PASSWD=/tmp/new_etc_passwd && echo > $NEW_ETC_PASSWD cat /etc/passwd | while IFS=: read user x uid gid info home shell do echo "checking user '$user' : uid=$uid, gid=$gid" #$x $uid $gui $info $home $shell if [ $uid -ge $MIN ] && [ $uid -le $MAX ] then # oblicz nowy UID new_uid=$(( $uid - $MIN + $LAST_UID +1 )) echo -e "\t--> new uid: $new_uid" # ustaw nowy UID $TEST find / -uid $uid -exec chmod $new_uid '{}' \; # <---- TEST fi if [ $gid -ge $MIN ] && [ $gid -le $MAX ] then # oblicz nowy GID new_gid=$(( $gid - $MIN + $LAST_GID +1 )) echo -e "\t--> new gid: $new_gid" # ustaw nowy GID $TEST find / -gid $gid -exec chgrp $new_gid '{}' \; # <---- TEST fi echo "${user}:${x}:${uid}:${gui}:${info}:${home}:${shell}" >> $NEW_ETC_PASSWD done echo "New /etc/passwd --> $NEW_ETC_PASSWD" Domyślnie tylko wyświetla, co chce zrobić. Aby rzeczywiście coś zmienić, zakomentuj zmienną TEST na początku skryptu. Wydaje się, że użycie wielokrotnie "find" jest nieuniknione. Zresztą, wydaje mi się, że find też jakoś sobie cachuje wyniki. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
123tomek Napisano Styczeń 16, 2012 Autor Zgłoszenie Share Napisano Styczeń 16, 2012 Ustawilem na sztywno LAST_UID i LAST_GID na 999 bo mam konto uid=65534, gid=65534 x 65534 Anonymous NFS User Jedna uwaga to lepiej puscic to od najwiekszej wartosci do najmniejszej bo gdy userow jest wiecej niz 500 (obecne UID>1000) to sie zrobi niezly balagan. Mam userow mniej ale i tak nie do konca wiem jakby to puscic. Linijka echo "${user}:${x}:${uid}:${gui}:${info}:${home}:${shell}" >> $NEW_ETC_PASSWD kopiuje ze starym UID i GID ale to pewnie przez to ze ma byc echo "${user}:${x}:${new_uid}:${new_gui}:${info}:${home}:${shell}" >> $NEW_ETC_PASSWD ale jeszcze nie zmienialem Jeszcze jedno lamerskie pytanko, co oznacza -le i -ge? Tzn. widac co to robi ale to sa jakies bashowe komendy czy cos? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Styczeń 16, 2012 Zgłoszenie Share Napisano Styczeń 16, 2012 Jeszcze jedno lamerskie pytanko, co oznacza -le i -ge? Tzn. widac co to robi ale to sa jakies bashowe komendy czy cos?Operatory porównania: less or equal, greater or equal. [EDIT] http://tldp.org/LDP/abs/html/comparison-ops.html Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
123tomek Napisano Styczeń 16, 2012 Autor Zgłoszenie Share Napisano Styczeń 16, 2012 Ustawilem na sztywno LAST_UID i LAST_GID na 999 bo mam konto uid=65534, gid=65534 x 65534 Anonymous NFS User Jedna uwaga to lepiej puscic to od najwiekszej wartosci do najmniejszej bo gdy userow jest wiecej niz 500 (obecne UID>1000) to sie zrobi niezly balagan. Mam userow mniej ale i tak nie do konca wiem jakby to puscic. Linijka echo "${user}:${x}:${uid}:${gui}:${info}:${home}:${shell}" >> $NEW_ETC_PASSWD kopiuje ze starym UID i GID ale to pewnie przez to ze ma byc echo "${user}:${x}:${new_uid}:${new_gui}:${info}:${home}:${shell}" >> $NEW_ETC_PASSWD ale jeszcze nie zmienialem Jeszcze jedno lamerskie pytanko, co oznacza -le i -ge? Tzn. widac co to robi ale to sa jakies bashowe komendy czy cos? EDIT2: Co do zapuszczenia od najwyzszego UID do najnizszego to wyszukalem cos takiego jak przepisanie pliku passwd Export /etc/passwd (ignorujemy konta systemowe): export UIDGID=500 awk -v LIMIT=$UIDGID -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /passwd.mig i pozniej wymyslilem zeby to posortowac komenda sort -t : -k3 -r passwd.mig > passwd_sort.mig i do petli uzyc tego pliku passwd_sort.mig zamiast cat /etc/passwd | while IFS=: read user x uid gid info home shell Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się