GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso usare sudo per verificare se esiste un file?

Soluzione 1:

if sudo test -f "/path/to/file"; then
    echo "FILE EXISTS"
else
    echo "FILE DOESN'T EXIST"
fi

pagina man di prova

Per completare le cose, sul lato opposto, se vuoi controllare da root se un file o una directory è leggibile per un certo utente puoi usare

if sudo -u username test -f "/path/to/file"; then
    echo "FILE EXISTS"
else
    echo "FILE DOESN'T EXIST"
fi

Soluzione 2:

Quello che stai descrivendo dovrebbe funzionare bene, purché tu stia utilizzando percorsi assoluti e -f ("Il file esiste ed è un file normale") è davvero il test che vuoi eseguire.

Vedo un / finale in quello che hai postato nella tua domanda:stai testando una directory? Dovrebbe essere -d , o semplicemente -e ("Qualcosa esiste con quel nome - indipendentemente dal tipo")

Nota anche che a meno che qualcosa lungo il percorso non sia leggibile test ([ ) dovrebbe essere in grado di dirti se esiste o meno un file di proprietà di root (ad es. [ -f /root/.ssh/known_hosts ] probabilmente fallirà, perché la directory /root/.ssh non lo è (o almeno non dovrebbe esserlo ) leggibile da un utente normale. [ -f /etc/crontab ] dovrebbe riuscire).

Soluzione 3:

In aggiunta alle altre risposte, la distinzione tra il test o il fallimento dell'autenticazione sudo potrebbe essere eseguita eseguendo prima sudo true . La maggior parte delle implementazioni di sudo che conosco non richiedono la riautenticazione entro un breve periodo.

Ad esempio:

if sudo true; then
    if sudo test -f "/path/to/file"; then
        echo "FILE EXISTS"
    else
        echo "FILE DOESN'T EXIST"
    fi
else
    echo "SUDO AUTHENTICATION FAILED"
fi

Linux
  1. Come controllare la sintassi di sudoers

  2. Come posso verificare che un file esista ed eseguire un comando in caso contrario?

  3. Come posso verificare se esiste una directory?

  4. Come posso aggiungere un utente normale al file sudoers?

  5. Come posso usare rsync con un file system FAT?

Come verificare se esiste un file o una directory in Bash

Come usare Sudo e il file Sudoers

Come verificare se un file o una directory esiste in Bash

Come usare il comando Tronca in Linux

Come verificare se esiste un file o una directory in Bash Shell

Come usare gzip in Linux?