View previous topic :: View next topic |
Author |
Message |
rb34 Guru
Joined: 03 Oct 2004 Posts: 361 Location: Rome, italy
|
Posted: Sat Dec 30, 2006 10:04 pm Post subject: /etc/profile e sudo [Risolto] |
|
|
Ho un cron job che esegue il backup di un repository svn.
Voglio che venga eseguito dall'utente "svn", e pertanto lancio:
Code: | /usr/bin/sudo -u svn /usr/bin/svn-hot-backup /home/svn/repos/java /home/svn/backup/java |
Ma c'è un problema: sebbene io abbia impostato in /etc/profile.env
Code: | export SVN_HOTBACKUP_NUM_BACKUPS='10' |
questa variabile non è impostata quando viene eseguito il comando di cui sopra, e il default è 64 che non va bene.
Se apro una shell da root la variabile è impostata, cosa devo modificare per far sì che sia tale nella "sessione" sudo? _________________ rb
Last edited by rb34 on Wed Jan 03, 2007 12:07 pm; edited 1 time in total |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Sun Dec 31, 2006 9:21 am Post subject: |
|
|
Premetto che non sono un grande utilizzatore di cron e quindi potrei dire una vaccata ma piuttosto che usare sudo non ti converrebbe specificare in /etc/crontab il comando e specificare li che debba essere lanciato dall'utente svn ? oppure non potresti creare un crontab direttamente per l'utente svn ?
Per risolvere il problema della variabile potresti farti uno script con due righe di codice, una imposta la variabile e l'altra lancia il backup. _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
rb34 Guru
Joined: 03 Oct 2004 Posts: 361 Location: Rome, italy
|
Posted: Sun Dec 31, 2006 5:08 pm Post subject: |
|
|
Kernel78 wrote: | Premetto che non sono un grande utilizzatore di cron e quindi potrei dire una vaccata ma piuttosto che usare sudo non ti converrebbe specificare in /etc/crontab il comando e specificare li che debba essere lanciato dall'utente svn ? oppure non potresti creare un crontab direttamente per l'utente svn ?
|
In effetti l'idea vagamente è giusta... il fatto è che l'utente svn è un utente... particolare, nel senso che non ha password e la home ce l'ha "finta" nel senso che gliel'ho creata io a mano. Insomma non c'è login come utente svn, e a meno di non renderlo utente normale (e non vorrei farlo) credo che quello che dici tu non si possa fare.
Quote: | Per risolvere il problema della variabile potresti farti uno script con due righe di codice, una imposta la variabile e l'altra lancia il backup. |
Sì, certo, in realtà volevo fare una cosa "pulita" e soprattutto capire quale meccanismo si innesca subito dopo il login...
Quali script vengon richiamati? Quali file letti? Io per adesso so di /etc/profile e ~/.bash_profile, ma se ad esempio nella home dell'utente svn creo .bash_profile non viene richiamato... anche perché mi pare che a richiamarlo deve essere /etc/profile che leggerebbe /etc/profile.env, cosa che non fa! _________________ rb |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Mon Jan 01, 2007 9:56 am Post subject: |
|
|
rb34 wrote: | Kernel78 wrote: | Premetto che non sono un grande utilizzatore di cron e quindi potrei dire una vaccata ma piuttosto che usare sudo non ti converrebbe specificare in /etc/crontab il comando e specificare li che debba essere lanciato dall'utente svn ? oppure non potresti creare un crontab direttamente per l'utente svn ?
|
In effetti l'idea vagamente è giusta... il fatto è che l'utente svn è un utente... particolare, nel senso che non ha password e la home ce l'ha "finta" nel senso che gliel'ho creata io a mano. Insomma non c'è login come utente svn, e a meno di non renderlo utente normale (e non vorrei farlo) credo che quello che dici tu non si possa fare.
|
Puoi mettere tranquillamente in /etc/crontab una riga in cui specifichi l'utente con cui deve essere eseguito un certo comando, che l'utente abbia una sua home o meno non influisce minimamente.
/EDIT:
Quote: | Sì, certo, in realtà volevo fare una cosa "pulita" e soprattutto capire quale meccanismo si innesca subito dopo il login...
Quali script vengon richiamati? Quali file letti? Io per adesso so di /etc/profile e ~/.bash_profile, ma se ad esempio nella home dell'utente svn creo .bash_profile non viene richiamato... anche perché mi pare che a richiamarlo deve essere /etc/profile che leggerebbe /etc/profile.env, cosa che non fa! |
Ho installato sudo giusto per leggere il manuale (mai usato sudo prima) è ho scoperto l'opzione -i che dovrebbe fare al caso tuo (ma guarda te quante cose si scoprono leggendo i manuali ) solo che devi decidere tu se vuoi renderlo un utente normale o meno (puoi sempre disabilitarlo) ma se vuoi che venga utilizzato il meccanismo di login devono esistere i file che esistono per tutti gli utenti ...
A me sembra una cosa inutilmente laboriosa e continuo a esprimermi a favore di un banalissimo script che contenga export della variabile e comando per il backup, veloce, efficiente e funzionale. _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
rb34 Guru
Joined: 03 Oct 2004 Posts: 361 Location: Rome, italy
|
Posted: Tue Jan 02, 2007 10:08 am Post subject: |
|
|
Kernel78 wrote: | Puoi mettere tranquillamente in /etc/crontab una riga in cui specifichi l'utente con cui deve essere eseguito un certo comando, che l'utente abbia una sua home o meno non influisce minimamente. |
Questo è vero, tuttavia lo script completo che lancio deve fare alcune cose come root altre come "svn", per questo volevo usare sudo.
Quote: | Ho installato sudo giusto per leggere il manuale (mai usato sudo prima) è ho scoperto l'opzione -i che dovrebbe fare al caso tuo (ma guarda te quante cose si scoprono leggendo i manuali ) solo che devi decidere tu se vuoi renderlo un utente normale o meno (puoi sempre disabilitarlo) ma se vuoi che venga utilizzato il meccanismo di login devono esistere i file che esistono per tutti gli utenti ... |
L'opzione -i, a parte essermi sfuggita, non fa proprio quello che ci si aspetta (ci ho perso mezz'ora per capirlo).
In pratica lanciando sudo -u svn -i <comando>
comando viene eseguito con la shell specificata in passwd, che per l'utente svn è bash, ma succede una cosa strana.
Avendo nel mio caso Code: | /usr/bin/sudo -u svn -i /usr/bin/svn-hot-backup /home/svn/repos/java /home/svn/backup/java |
ed essendo lo script /usr/bin/svn-hot-backup uno script python, non viene invocato l'interprete python!! E il primo comando letto da quello script è la parola "import" (tipica degli script python) e bash lancia l'eseguibile "import"!!!! non capivo perché mi partisse import di imageMagick!
In genere la prima riga degli script indica quale interprete invocata, con sudo -i bash si comporta in modo diverso... e la riga
Code: | #!/usr/bin/env python |
viene ignorata.
Quote: | A me sembra una cosa inutilmente laboriosa e continuo a esprimermi a favore di un banalissimo script che contenga export della variabile e comando per il backup, veloce, efficiente e funzionale. |
Tu hai anche ragione (e ovviamente funziona), ma voglio anche capire come usare sudo in modo che legga le var come al solito, perché se avessi bisogno un giorno di avere tutte le var a disposizione che faccio, mi copio tutto profile.env? _________________ rb |
|
Back to top |
|
|
rb34 Guru
Joined: 03 Oct 2004 Posts: 361 Location: Rome, italy
|
Posted: Wed Jan 03, 2007 12:06 pm Post subject: |
|
|
Visto che non ci sono altri contributi e che anche da un'altra parte mi hanno detto di fare source /etc/profile (immagino intendessero da uno script lanciato da sudo), vada per quello, certo però strano che in sudo non sia previsto qualcosa "nativamente" _________________ rb |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|