Pagina 1 di 2

Cambiare nome utente

Inviato: ven 19 gen 2007, 14:50
da samiel
C'è un modo per cambiare nome a un utente
lasciando invariata la home ecc ecc?

Grazie
M.

Inviato: ven 19 gen 2007, 14:57
da taba82
penso che basti usare "usermod".
il comando mi sembra sia

Codice: Seleziona tutto

usermod -l vecchio_nome nuovo_nome
controlla man usermod

Inviato: ven 19 gen 2007, 15:29
da samiel
Ma forse mi manca qualcosa,
perché volevo cambiare samiel2 in samiel
ma mi dice:

Codice: Seleziona tutto

root@darkstar:~# usermod -l samiel2 samiel
usermod: user samiel2 exists
M.

Inviato: ven 19 gen 2007, 15:43
da taba82
usermod -l nome_nuovo nome_vecchio

ti cambia solo il nome dell'utente.
x poterlo modificare l'utente non deve essere loggato.
# man usrmod
SINTASSI
usermod [-c commento] [-d home_dir [ -m]]
[-e data_scadenza] [-f tempo_inattività]
[-g gruppo_iniziale] [-G gruppo[,...]]
[-l nome_login] [-s shell]
[-u uid [ -o]] login
...
-d home_dir
La nuova directory di login dell'utente. Se è data l'opzione -m il contenuto
della home directory corrente sarà spostato nella nuova home directory,
che viene creata se non esiste già.
guarda le pagine man x maggiori info.

Inviato: ven 19 gen 2007, 15:50
da danix
samiel ha scritto:Ma forse mi manca qualcosa,
perché volevo cambiare samiel2 in samiel
ma mi dice:

Codice: Seleziona tutto

root@darkstar:~# usermod -l samiel2 samiel
usermod: user samiel2 exists
guarda che se volevi cambiare samiel2 in samiel devi invertire i 2 nomi nel comando...

la sintassi corretta è:

Codice: Seleziona tutto

usermod -l nuovo_nome nome
comunque mi è venuta in mente una mia vecchia curiosità, ma si può cambiare il nome di root quando viene visualizzato da whoami??

Inviato: ven 19 gen 2007, 16:18
da _NYTRO_
Ti piacerebbe se apparisse "God" eh?! :p
Ora non sono a casa, poi provo..

Inviato: ven 19 gen 2007, 16:43
da danix
_NYTRO_ ha scritto:Ti piacerebbe se apparisse "God" eh?! :p
Ora non sono a casa, poi provo..
si, ma anche qualunque altra cosa, ma come si fa??

Inviato: ven 19 gen 2007, 19:11
da Paoletta
_NYTRO_ ha scritto:Ti piacerebbe se apparisse "God" eh?! :p
Ora non sono a casa, poi provo..
questo è un modo...

Codice: Seleziona tutto

#!/bin/bash
name=`/bin/whoami 2>&1`
if [ "$name" == "root" ];then
        echo God
else
        echo $name
fi
mettilo in /usr/local/bin e chiamalo whoami

P.S. occhio che non gestisce i parametri del vero whoami..va completato ;)

Inviato: sab 20 gen 2007, 11:06
da danix
Paoletta ha scritto:
_NYTRO_ ha scritto:Ti piacerebbe se apparisse "God" eh?! :p
Ora non sono a casa, poi provo..
questo è un modo...

Codice: Seleziona tutto

#!/bin/bash
name=`/bin/whoami 2>&1`
if [ "$name" == "root" ];then
        echo God
else
        echo $name
fi
mettilo in /usr/local/bin e chiamalo whoami

P.S. occhio che non gestisce i parametri del vero whoami..va completato ;)
ma così non cambio realmente il nome, vero?? mi spieghi il passaggio:

Codice: Seleziona tutto

name=`/bin/whoami 2>&1`
fai una redirezione, ma a che cosa??
e poi se metto questo "whoami" in /usr/local/bin quello originale che è in /usr/bin non viene più letto??

Comunque giusto per la cronaca, ho fatto un pò di ricerche su zio google e in molti forum ho letto che per cambiare il nome di root basta editare /etc/passwd e /etc/shadow, solo che non ho molto chiari gli effetti collaterali che in molti hanno segnalato ma che nessuno si è fermato a spiegare, i programmi quando controllano chi li sta lanciando non guardano l'uid?? oppure può darsi che qualche programma faccia una cosa simile allo script di paoletta e controlli:

Codice: Seleziona tutto

if [ $name == "root" ]
In questo caso non funzionerebbero, vero?? mentre con lo script di paoletta si...

spero che qualcuno mi chiarisca questi dubbi...

Inviato: sab 20 gen 2007, 11:58
da Paoletta
danix85 ha scritto:ma così non cambio realmente il nome, vero??
no, non cambi il nome...
danix85 ha scritto:

Codice: Seleziona tutto

name=`/bin/whoami 2>&1`
fai una redirezione, ma a che cosa??
redirige stoutput e stderror in $name
danix85 ha scritto: e poi se metto questo "whoami" in /usr/local/bin quello originale che è in /usr/bin non viene più letto??
viene letto prima lo scriptino (che invoca l'originale)
danix85 ha scritto: i programmi quando controllano chi li sta lanciando non guardano l'uid??
questo dipende dal programma...con lo script non corri il rischio di malfunzionamenti perchè in /etc/passwd tutto resta uguale (a meno che ci siano dei programmi che si basano su whoami, ma non credo, penso che il grosso di basi su getuid() o funzioni del genere...)

P.S.dimenticavo, dopo aver creato il file, dagli i permessi adatti (755)

Inviato: dom 21 gen 2007, 11:40
da danix
Paoletta ha scritto: P.S. occhio che non gestisce i parametri del vero whoami..va completato ;)
a cosa ti riferisci??

Inviato: dom 21 gen 2007, 12:50
da Paoletta
danix85 ha scritto:
Paoletta ha scritto: P.S. occhio che non gestisce i parametri del vero whoami..va completato ;)
a cosa ti riferisci??
a --version e --help; la cosa si può facilmente risolvere usando nello scriptino

Codice: Seleziona tutto

name=`/bin/whoami $1 2>&1`
oppure

Codice: Seleziona tutto

name=`/bin/whoami $1 $2 2>&1`
(se proprio vogliamo essere pignoli)
al posto di

Codice: Seleziona tutto

name=`/bin/whoami 2>&1`
ed un

Codice: Seleziona tutto

echo "$name"
al posto di

Codice: Seleziona tutto

echo $name
per una formattazione corretta

ecco la versione completa

Codice: Seleziona tutto

#!/bin/bash
name=`/bin/whoami $1 $2 2>&1`
if [ "$name" == "root" ];then
        echo God
else
        echo "$name"
fi

Inviato: dom 21 gen 2007, 16:37
da danix
ho messo il file in /usr/local/bin ma l'output di whoami non è cambiato:

Codice: Seleziona tutto

# whoami
root
allora per provare se il tutto funziona bene ho lanciato lo script con il path completo e ha funzionato, idem rinominandolo in /usr/local/bin/mionome.

inoltre con lo script in /usr/local/bin ho provato a dare:

Codice: Seleziona tutto

# which whoami
/bin/whoami
quindi va sempre a leggere quello originale in /bin, mi sapete dire come mai??

Inviato: dom 21 gen 2007, 17:22
da targzeta
danix85 ha scritto:...quindi va sempre a leggere quello originale in /bin, mi sapete dire come mai??
Il percorso di ricerca di un binario (programma) o altri file eseguibili è speficato dalla variabile d'ambiente PATH.
Dai un

Codice: Seleziona tutto

echo $PATH
e vedrai, un elenco di directory separate dal simbolo ':'.
La shell, in questo caso la Bourne-Again SHell, per gli amici bash, controlla, per come sono scritte nel PATH tutte le directory ad una ad una e, non appena trova il binario che gli hai chiesto, lo esegue.
Se vuoi quindi che venga lanciato prima lo script dell'originale devi far si che lo script sia collocato in una directory del PATH prima di quella /bin.
Alternativamente puoi impostare un alias per la shell come segue:

Codice: Seleziona tutto

alias whoami='/usr/local/bin/whoami'
perchè? semplice

Codice: Seleziona tutto

man bash
;)

Spina

Inviato: dom 21 gen 2007, 18:39
da danix
non ne ero sicuro ma avevo intuito che la variabile $PATH centrasse qualcosa con l'ordine con cui sono lette le directory...

grazie per il chiarimento

[EDIT]

creato alias per la shell come da suggerimento...

Codice: Seleziona tutto

$ su -
Password
# whoami
God
:wav: