Strona 1 z 2

skrypt zmiany nazwy użytkownika

: 11 września 2015, 13:23
autor: szelma
Witam.Co w tym skrypcie jest nie tak,ze nie działa?
Podmieniłem wszystko co związane z new/old nick i new/old username. Debian Jessie

Kod: Zaznacz cały

​[font=Verdana]
[/font][color=#333333][font=monaco]#!/bin/sh[/font][/color]
################################################################## File:         re-login                                        ## Author:       Przemysław "Winnetou" Wilkosz                   ## Contact:      [EMAIL="wilkosz.p@gmail.com"]wilkosz.p@gmail.com[/EMAIL]                             ## jid:          [EMAIL="winnetou@jabster.pl"]winnetou@jabster.pl[/EMAIL]                             ## Author:       Mateusz 'thalcave' Chynowski                    ## Contact:      [EMAIL="thalcave@gmail.com"]thalcave@gmail.com[/EMAIL]                              ## jid:          [EMAIL="thalcave@jid.dug.net.pl"]thalcave@jid.dug.net.pl[/EMAIL]                         ##                                                               ## Desc:         Scrip allows to change user login               ## Copyleft:     All right reversed. Take, use and share         ## Licence:      GNU GPL                                         ## Thanks to:    lis6502  <lis6520@gmail.com>                    ##################################################################OLDNICK=$1NEWNICK=$2help(){        echo "script allows to change loginname of selected user"        echo "$0 old-username new-username"}update_files(){        if [ "$1" = "group" ]        then                sed -i -e "s/\(^\|:\|,\)$OLDNICK\(,\|:\|$\)/\1$NEWNICK\2/g" /etc/$1        else          sed -i -e "s/\(^\|\/\)$OLDNICK:/\1$NEWNICK:/g" /etc/$1        fi}if [ $# -lt 2 ]then        helpelif [ $# -eq 2 ]then        if  [ "$NEWNICK" = "$OLDNICK" ]        then                echo "new-login = old-login. Abording"                exit 666;        else                if [ -n $(grep "^$NEWNICK:" /etc/passwd) ]                then                        echo "$NEWNICK already exist abording"                        exit 666;                fi        fi        DOM=$(grep ^${OLDNICK}: /etc/passwd |cut -d: -f 6 |sed "s/\/${OLDNICK}//")        mv $DOM/$OLDNICK $DOM/$NEWNICK        update_files group        update_files passwd        update_files shadowelse   helpfi

: 11 września 2015, 13:35
autor: mariaczi
Z tego co tu widać to (na forum):
1. Jest w jednej linii, która jest skomentowana w rezultacie nic nie zrobi
2. Nie ma potrzeby czegokolwiek zmieniać w tym skrypcie - musisz go uruchomić z dwoma parametrami, tak jak to on sam podpowiada. Warto, abyś nie był zalogowany na tego użytkownika w GUI.

: 11 września 2015, 13:46
autor: szelma
nie wiem czemu ale tak sie wrzuca tu na forum,rozsypuje się jak w code wrzucę.Tzn stworzyć tymczasowego użytkownika żeby zamiana poszła bezboleśnie tak? YYY jak to nić nie zmieniać w skrypcie? nazw użytkowników? Z jakimi parametrami? :/

: 11 września 2015, 13:56
autor: mariaczi
Po uruchomieniu komputera/laptopa nie loguj się do GUI tylko przejdź na konsole tekstową np. Ctrl+Alt+F1 i zaloguj się na root'a. Uruchom skrypt bez parametrów, to zobaczysz o czym mówię.
Uruchomić z parametrami, znaczy

Kod: Zaznacz cały

./nazwa_skryptu STARA_NAZWA NOWA_NAZWA
i enter i po sprawie.
Wracasz na GUI: CTRL+Alt+F7 lub restartujesz maszynę i logujesz się na NOWA_NAZWA.

: 11 września 2015, 14:41
autor: szelma
Zrobiłem tak jak napisałeś i dostałem komunikat :NOWA_NAZWA already exist abording .

: 11 września 2015, 14:54
autor: mariaczi
To może coś z tym skryptem nie tak, jeśli na pewno nie masz konta NOWA_NAZWA (oczywiście za STARA_NAZWA, NOWA_NAZWA wpisałeś odpowiednio nazwy kont?).
Dane odnośnie użytkowników masz w /etc/passwd, /etc/shadow, /etc/group. Możesz zmienić nazwę użytkownika (login) ręcznie.
Popatrz jak wygląda struktura tych plików, poszukaj co jest co i ostrożnie wykonaj zmiany. Zrób wcześniej na wszelki wypadek kopię tych plików. Zmiany wykonuj, jak pisałem wcześniej, z konsoli tekstowej bez logowania się do GUI.

: 11 września 2015, 14:58
autor: szelma
Robiłem dobrze i nie działa,chciałem uniknąć ręcznego zmieniania tego wszystkiego.Może wykorzystać usermod do tego celu?

: 11 września 2015, 15:13
autor: mariaczi
Prawda, prawda - możesz. Z opcją "- l" (el).
Zerknij

Kod: Zaznacz cały

man usermod

: 11 września 2015, 16:01
autor: szelma
usermod tez nie dał rady.Pozmieniałem wszystko ręcznie reboot patrze na logowanie-lux,loguje się i pokazało,że nie może załadować home.Więc w home utworzyłem nowy katalog taki jak nowa nazwa użytkownika,przekopiowałem wszystko restart loguje pokazuje się kursor i stoi :/Coś jest nie tak :/

a wiec edytowałem znów password i musiałem przypisać katalog poprzedniego użytkownika,system startuje jak należy tylko katalog w /home ma starą nazwę :/

: 11 września 2015, 23:10
autor: marcin1982
Możesz wstawić ten skrypt na http://wklej.org/ ? Zaznacz tam "Prywatna", choć co miały roboty zgarnąć to już zgarnęły :D