skrypt zmiany nazwy użytkownika

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
szelma
Beginner
Posty: 185
Rejestracja: 02 sierpnia 2014, 10:45

skrypt zmiany nazwy użytkownika

Post 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
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post 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.
Awatar użytkownika
szelma
Beginner
Posty: 185
Rejestracja: 02 sierpnia 2014, 10:45

Post 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? :/
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post 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.
Awatar użytkownika
szelma
Beginner
Posty: 185
Rejestracja: 02 sierpnia 2014, 10:45

Post autor: szelma »

Zrobiłem tak jak napisałeś i dostałem komunikat :NOWA_NAZWA already exist abording .
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post 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.
Awatar użytkownika
szelma
Beginner
Posty: 185
Rejestracja: 02 sierpnia 2014, 10:45

Post autor: szelma »

Robiłem dobrze i nie działa,chciałem uniknąć ręcznego zmieniania tego wszystkiego.Może wykorzystać usermod do tego celu?
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Prawda, prawda - możesz. Z opcją "- l" (el).
Zerknij

Kod: Zaznacz cały

man usermod
Awatar użytkownika
szelma
Beginner
Posty: 185
Rejestracja: 02 sierpnia 2014, 10:45

Post 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ę :/
Awatar użytkownika
marcin1982
Moderator
Posty: 1730
Rejestracja: 05 maja 2011, 12:59
Lokalizacja: Zagłębie Dąbrowskie

Post 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
ODPOWIEDZ