Come posso usare sudo per verificare se esiste un file?

Voglio verificare se esiste un file così

[ -f /path/to/file/ ]

Tuttavia sto eseguendo questo command come utente normale e il file è di properties; di root. Come posso usare sudo per realizzare questo.

sudo [ -f /path/to/file/ ] non funziona.

  • sudo mi chiede la password
  • sudo: nessun tty presente e nessun programma askpass specificato (cercando di avviare apachectl)
  • Controllare se esiste un file, utilizzando un altro utente (sudo -u)
  • Risoluzione dei problemi sudoers tramite ldap
  • Utilizzo di sudo in WinSCP
  • Kerberos, .k5login e sudo
  • haproxy e socat sudo
  • Perché non ho evidenziato la syntax quando sudo vi <filename>?
  • 3 Solutions collect form web for “Come posso usare sudo per verificare se esiste un file?”

    Quello che state descrivendo dovrebbe funzionare bene – fintanto che utilizzi routes assoluti e -f ("File esiste e è un file normale") è veramente il test che si desidera eseguire.

    Vedo una trailing / in ciò che hai inserito nella tua domanda – Stai testando per una directory? Dovrebbe essere -d , o semplicemente -e ("Qualcosa esiste con quel nome – indipendentemente dal tipo")

    Si noti anche che a less che qualcosa non sia leggibile ( [ ) dovrebbe essere in grado di dirvi se esiste o less un file proprietario di root (ad esempio [ -f /root/.ssh/known_hosts ] probabilmente non riesce, perché il / la directory root / .ssh non è (o alless non dovrebbe essere ) leggibile da un normale utente. [ -f /etc/crontab ] dovrebbe riuscire).

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

    prova pagina uomo

    Per completare le cose, dal lato opposto, se si desidera controllare da root se un file o una directory sono leggibili per un determinato utente è ansible utilizzare

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

    Aggiungendo alle altre risposte, la distinzione tra l'authentication del test o del sudo potrebbe essere eseguita eseguendo innanzitutto sudo true . La maggior parte delle implementazioni di sudo che conosco non richiedono la nuova authentication in un breve periodo.

    Per 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 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.