Visualizzazione dei risultati da 1 a 8 su 8

Discussione: UID di root

  1. #1

    UID di root

    Scusate la domanda barbina, ma l'UID di root non dovrebbe essere 0 (zero)?
    E se sì perché questo script non va?
    codice:
    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?

  2. #2
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,257
    dovrebbe essere
    codice:
    if [ "$UID" -ne "$ROOT_UID" ]
    no?
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  3. #3
    Originariamente inviato da moskitoita
    dovrebbe essere
    codice:
    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

  4. #4
    Oh cavolo scusa, non avevo visto ancora la mancanza del dollaro

  5. #5
    Originariamente inviato da Marcolino's
    Oh cavolo scusa, non avevo visto ancora la mancanza del dollaro
    No mi rettifico, avevo solo riportato male lo script, lì il dollaro c'è, quindi l'errore non è quello

  6. #6
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,257
    stai confrontando un numero ($uid->0) con una stringa ("ROOT_UID"->"ROOT_UID")
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  7. #7
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,257
    guarda che a me così funziona
    codice:
    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
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  8. #8
    Sarò pazzo io ma...

    questo è lo script completo
    codice:
    #!/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
    codice:
    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:
    codice:
    domino@ubuntu:~$ ./prova.sh
    [: 11: Illegal number: 
    Bravo sei root
    domino@ubuntu:~$

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.