PDA

Visualizza la versione completa : UID di root


Marcolino's
30-11-2008, 12:29
Scusate la domanda barbina, ma l'UID di root non dovrebbe essere 0 (zero)?
E se s perch questo script non va?


ROOT_UID=0 # Solo gli utenti con $UID 0 hanno i privilegi di root.
E_NONROOT=67 # Utenti non root

if [ "$UID" -ne "ROOT_UID" ]
then
echo "Non sei root non puoi eseguire lo script"
exit E_NONROOT
else
echo "Bravo sei root"
fi

exit 0

mi esce sempre con un errore di questo tipo
[: Illegale number #26
Bravo sei root

non lo lancio da root proprio per vedere se funge, ma quell'errore non me lo aspettavo proprio.
Ovviamente il programma ha qualche riga in pi, ma oltre ad iniziare con #! il resto sono commenti, quindi il codice tutto l e la riga 26 fi.
Chi pu darmi una spiegazione del suo comportamento? :dh:

moskitoita
30-11-2008, 12:38
dovrebbe essere

if [ "$UID" -ne "$ROOT_UID" ]

no?

Marcolino's
30-11-2008, 12:56
Originariamente inviato da moskitoita
dovrebbe essere

if [ "$UID" -ne "$ROOT_UID" ]

no?
Certo potrebbe, ma vorrei saperne il perch non andare a intuito.
ROOT_UID l'ho indubbiamente creata io con valore 0 che dovrebbe essere il numero di UID di root.
Mentre UID una variabile predefinita che da l'UID dell'utente che sta usando al momento la shell.
In ogni caso un confronto del genere (-ne non uguale) non dovrebbe portare ad un errore, ma solo all'avviso tra then ed else, invece :bh:

Marcolino's
30-11-2008, 12:57
Oh cavolo scusa, non avevo visto ancora la mancanza del dollaro :dh:

Marcolino's
30-11-2008, 12:58
Originariamente inviato da Marcolino's
Oh cavolo scusa, non avevo visto ancora la mancanza del dollaro :dh:
No mi rettifico, avevo solo riportato male lo script, l il dollaro c', quindi l'errore non quello :cry:

moskitoita
30-11-2008, 12:59
stai confrontando un numero ($uid->0) con una stringa ("ROOT_UID"->"ROOT_UID")

moskitoita
30-11-2008, 13:01
guarda che a me cos funziona

ROOT_UID=0 # Solo gli utenti con $UID 0 hanno i privilegi di root.
E_NONROOT=67 # Utenti non root

if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Non sei root non puoi eseguire lo script"
exit $E_NONROOT
else
echo "Bravo sei root"
fi

exit 0

Marcolino's
30-11-2008, 13:11
Sar pazzo io ma...

questo lo script completo


#!/bin/sh
#
# Installer per Domino
#
# versione: 0.0.1
#
# Una volta scaricato, questo programma va eseguito con i permessi
# di root, quindi date da prompt il seguente comando:
# chmod u+rx domino-installer.sh
# e premete invio.
# Quindi lanciatelo in questo modo: ./domino-installer.sh [INVIO]

# Variabili
ROOT_UID=0 # Solo gli utenti di root possono avviare questo programma
E_NONROOT=67 # Codice di uscita per utenti non root

# Main program
if [ "$UID" -ne "$ROOT_UID" ] # Verifico che l'utente sia root
then
echo "Devi essere root per eseguire questo programma!"
exit $E_NONROOT

else # l'utente root
# Programma eseguito normalmente
echo "Bravo dei root"
fi

# Uscita regolare dal programma
exit 0

che da quell'errore che ti ho detto prima

Questo il tuo


ROOT_UID=0 # Solo gli utenti con $UID 0 hanno i privilegi di root.
E_NONROOT=67 # Utenti non root

if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Non sei root non puoi eseguire lo script"
exit $E_NONROOT
else
echo "Bravo sei root"
fi

exit 0

che mi da sempre un errore alla riga 11 ovvero fi e poi riporta Bravo sei root, che tra l'altro non vero visto che lo lancio non da root

Questo l'output della shell:


domino@ubuntu:~$ ./prova.sh
[: 11: Illegal number:
Bravo sei root
domino@ubuntu:~$

Loading