Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    156

    [CRONTAB] Avviare crontab utente con da root

    Esiste un modo per avviare un crontab utente come utente root?
    La questione è che ho uno script che si deve avviare solamente quando uno specifico utente esegue il login. Ho pensato quindi di creare un crontab utente che esegua lo script.
    Il problema è che all'interno di questo script ci sono una serie di comandi che un utente normale non può eseguire..
    Come posso fare?

  2. #2
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    una possibile soluzione:
    1. crei utente
    2. configuri utilizzo sudo (per $USER) senza password per $COMANDI
    3. editi $USER/.bash_login aggiungendo $COMANDI
    4. verifichi ed ottimizzi

    crontab non serve a nulla in questo caso essendo slegato da login...
    slack? smack!

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    156
    Originariamente inviato da cacao74

    crontab non serve a nulla in questo caso essendo slegato da login...
    Mi sono spiegato male: questo comando deve essere eseguito da un particolare utente quando esegue il login e poi ad un intervallo di ogni 5 minuti. quindi mi verrebbe da dire che non posso metterlo in .bash_login, ma devo passare per forza da cron.
    Io pensavo che il crontab specifico di ogni utente venisse eseguito solamente se l'utente avesse eseguito il login.
    Oppure come potrei fare a lanciare ripetutamente uno script con un intervallo di 5 minuti tenendo presente che questo deve verificarsi solamente se un dato utente è collegato?

  4. #4
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    Potresti fare cosi:
    1. crei utente
    2. configuri sudo
    3. definisci .bash_login in cui esegui i comandi e crei il crontab
    4. definisci .bash_logout in cui elimini il crontab

    se hai altre idee o soluzioni ricordati di postarle qui per condividere il lavoro con gli altri utenti.

    ciao
    slack? smack!

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    156
    Scusate se vado a ripescare il post dopo tanto tempo..
    alla fine ho adottato esattamente la soluzione da te proposa (perchè mi sembrava la più efficace).
    Ho però un problema: non capisco perchè, anche se avvio il portatile senza eseguire alcun tipo di login,
    (e quindi in teoria il crontab dell'utente eseguito in ~/.profile non è stato ancora caricato) cron mi va lo stesso a leggere il crontab utente e quindi lo script in esso contenuto si avvia nonostante l'utente non sia collegato..

    Ora infatti mi trovo collegato da remoto al portatile via ssh; mi sono collegato con un altro account e ho potuto constatare, guardando i file di log e lanciando il comando
    codice:
    crontab -u user -l
    (dove user è l'utente con il file ~/.profile modificato per l'esecuzione di crontab)
    che il crontab utente è stato comunque caricato appena avviato il computer..

    Non ne capisco il motivo.. Io pensavo che era necessario eseguire il login con l'utente specifico affinchè il file ~/.profile venisse letto..

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    156

    [BASH] .bash_logout non viene letto

    A quanto pare il problema sembra essere che la shell non vada a leggere il file .bash_logout quando viene eseguito il logout.
    Cerco di spiegare più approfonditamente nella speranza che qualcuno possa aiutarmi a capire..
    La situazione è la seguente:

    poniamo di avere l'utente PIPPO e in ~/.profile esiste un'istruzione che lancia il crontab dell'utente PIPPO il quale a sua volta lancia uno script che si occupa di montare come un volume locale una partizione condivisa.

    in ~/.bash_logout esistono una serie di istruzioni che si occupano di rimuovere il crontab di PIPPO e smontare la partizione eventualmente montata dallo script.
    di seguito la parte del file che esegue tale compito
    codice:
    # Elimino il crontab utente se esiste
    [ -x /usr/bin/crontab ] && /usr/bin/crontab -r 2> /dev/null
    
    # Smonto eventuali volumi montati in condivisione tramite samba;
    # IP_HOST1 e SMBSHARE1 sono variabili d'ambiente della shell ( vedi /etc/profile ) 
    if [ -n "$( mount | grep "//${IP_HOST1:-192.168.199.50}/${SMBSHARE1:-ARCHIVIO}" )" ] ; then
            sudo umount.cifs -f /media/samba1
             # Elimino il link simbolico se esiste
    	[ -h "/home/${LOGNAME}/Desktop/vale_archivio" ] && rm /home/${LOGNAME}/Desktop/vale_archivio
    fi

    io mi aspetto che, se l'utente PIPPO esegue successivamente un logout, il crontab venga cancellato e la partizione montata venga smontata.. ma ciò non accade..
    infatti se mi collego successivamente con un utente che non sia PIPPO, posso constatare che la partizione è ancora montata e il crontab ddi PIPPO è ancora presente..
    Avreste qualche suggerimento da fornirmi?

  7. #7
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    assicurati che il tuo utente PIPPO abbia come shell di login la bash e non sh.
    davo per scontato l'uso di bash (errore mio).

    per praticita', potresti usare .bash_login in luogo di .profile

    ciao
    slack? smack!

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    156
    Originariamente inviato da cacao74
    assicurati che il tuo utente PIPPO abbia come shell di login la bash e non sh.
    davo per scontato l'uso di bash (errore mio).

    per praticita', potresti usare .bash_login in luogo di .profile

    ciao
    L'utente specificato utilizza la shell bash;
    inoltre ti posso dire che il file ~/.profile viene letto ed eseguito correttamente tanto che crontab viene lanciato e la partizione viene montata.
    Il problema si verifica al momento del logout, visto che tutte le istruzioni che ho riportato nel post precedente sembrano non venire considerate..

  9. #9
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    ok per quanto riguarda il .profile, che normalmente scelgo di non usare quando uso bash.

    per .bash_{login,logout}, sono file che uso per attivita' simili a quella che hai descritto con estrema soddisfazione (rsync portatile-server al login/logout).

    invece di testare i tuoi comandi, inizia a mettere un
    echo "sto facendo il login" per l'accesso al sistema ed un
    echo "sto facendo il logout" per l'uscita dal sistema

    se il comportamente e' quello che ci si aspetta, non rimane che concentrarsi sui tuoi comandi, altrimenti la ricerca si deve estendere alla configurazione della shell bash sulla tua macchina.

    ciao
    slack? smack!

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    156
    ho aggiunto al file .bash_logout un semplice echo "eseguo logout" e un touch /home/user/file
    ma non accade nulla di nulla..
    ho inoltre forzato la lettura del file con un
    codice:
    . .bash_logout
    il file viene letto e i comandi sono eseguiti correttamente: infatti il volume viene smontato così come il link simbolico.
    sembra proprio che non voglia leggere quel dannato file al momento del logout..

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 © 2024 vBulletin Solutions, Inc. All rights reserved.