PDA

View Full Version : [BASH] Un po' di dubbi


Phate82
15-12-2008, 11:52
ciao a tutti!

sono alle prime armi con bash e dopo una prima infarinatura sui comandi sto provando a fare alcuni esericizi. Vorrei proporvi alcuni di questi esercizi sperando che possiate darmi una mano per capire come risolverli.

Per il primo esercizio ho solo un dubbio teorico. La situazione è questa: l'utente Pippo crea questo script che ha il compito di generare alcune stringhe per poi salvarle in un file leggibile solo dal proprietario. Lo script deve essere leggibile ed eseguibile da tutti, ma modificabile solo dal proprietario.
Il dubbio riguarda il file su cui lo script deve salvare le stringhe:

- se questo file deve essere creato a parte dal proprietario il problema non si pone, perchè è sufficiente che venga creato con i permessi 622. In questo modo chiunque esegua lo script può scrivere nel file, ma solo il proprietario che l'ha creato può leggerlo (e scriverlo).

- se il file in cui scrivere le stringhe dev'essere creato dallo script, la cosa (per me) diventa più complicata. Avevo pensato di fare ricorso al SUID bit..praticamente ho provato a dare allo script i permessi 4755 e all'interno dello script ho creato il file che deve contenere le stringhe con i permessi 600. In questo modo chiunque esegue lo script diventa Pippo, crea il file dando la possibilità solo a Pippo di leggerlo e scriverlo e ci scrive le stringhe. Il problema è che, forse per motivi di sicurezza, il SUID bit non funziona. Se eseguo lo script e poi controllo con ps chi sta eseguendo lo script non risulta Pippo, ma l'utente che effettivamente ha lanciato lo script. Quindi il file viene creato con i permesso 600, ma riferiti all'utente che ha eseguito lo script e non a Pippo. :muro:

E' anche possibile che la mia soluzione sia giusta e che chi ha proposto l'esercizio volesse solo verificare l'apprendimento del SUID bit al di là dell'effettivo funzionamento, ma il dubbio mi rimane. Quindi la mia domanda è...c'è altro modo per risolvere l'esercizio?

Il secondo esercizio è questo:
Due file hanno lo stesso contenuto a parte una o più variazioni nella loro parte
iniziale di lunghezza fissa. Fare uno script che dia informazioni sull'identità del
contenuto indipendentemente dalla variazione dell'intestazione dei file.

Qui il problema è proprio la comprensione del testo :eek: ...voi capite che vuole? :confused:

Il terzo (e ultimo) esercizio è questo:

Fare in modo che il proprio prompt principale indichi il numero
di utenti che hanno almeno una sessione interattiva aperta nel sistema.

ovviamente lo script dovrà agire sulla variabile PS1, ma non riesco a capire come contare gli utenti con almeno una sessione interattiva. Da quello che so, uno shell è interattivo quando è lanciato senza opzioni, quindi stavo pensando a questo per cercare di individuare tutte le sessioni interattive, ma non so come fare :mc: ...perchè fatto quello poi si potrebbero isolare gli utenti che le usano, ordinarli, filtrarli con uniq e contarli con wc. Qualcuno mi da una dritta? :p

Scusate per la lunghezza del post e grazie a chiunque voglia aiutarmi :D

Phate82
15-12-2008, 21:35
non mi aiuta nessuno? :cry:

HexDEF6
16-12-2008, 10:18
ciao a tutti!

sono alle prime armi con bash e dopo una prima infarinatura sui comandi sto provando a fare alcuni esericizi. Vorrei proporvi alcuni di questi esercizi sperando che possiate darmi una mano per capire come risolverli.

Per il primo esercizio ho solo un dubbio teorico. La situazione è questa: l'utente Pippo crea questo script che ha il compito di generare alcune stringhe per poi salvarle in un file leggibile solo dal proprietario. Lo script deve essere leggibile ed eseguibile da tutti, ma modificabile solo dal proprietario.
Il dubbio riguarda il file su cui lo script deve salvare le stringhe:

- se questo file deve essere creato a parte dal proprietario il problema non si pone, perchè è sufficiente che venga creato con i permessi 622. In questo modo chiunque esegua lo script può scrivere nel file, ma solo il proprietario che l'ha creato può leggerlo (e scriverlo).

- se il file in cui scrivere le stringhe dev'essere creato dallo script, la cosa (per me) diventa più complicata. Avevo pensato di fare ricorso al SUID bit..praticamente ho provato a dare allo script i permessi 4755 e all'interno dello script ho creato il file che deve contenere le stringhe con i permessi 600. In questo modo chiunque esegue lo script diventa Pippo, crea il file dando la possibilità solo a Pippo di leggerlo e scriverlo e ci scrive le stringhe. Il problema è che, forse per motivi di sicurezza, il SUID bit non funziona. Se eseguo lo script e poi controllo con ps chi sta eseguendo lo script non risulta Pippo, ma l'utente che effettivamente ha lanciato lo script. Quindi il file viene creato con i permesso 600, ma riferiti all'utente che ha eseguito lo script e non a Pippo. :muro:

E' anche possibile che la mia soluzione sia giusta e che chi ha proposto l'esercizio volesse solo verificare l'apprendimento del SUID bit al di là dell'effettivo funzionamento, ma il dubbio mi rimane. Quindi la mia domanda è...c'è altro modo per risolvere l'esercizio?

Il secondo esercizio è questo:
Due file hanno lo stesso contenuto a parte una o più variazioni nella loro parte
iniziale di lunghezza fissa. Fare uno script che dia informazioni sull'identità del
contenuto indipendentemente dalla variazione dell'intestazione dei file.

Qui il problema è proprio la comprensione del testo :eek: ...voi capite che vuole? :confused:

Il terzo (e ultimo) esercizio è questo:

Fare in modo che il proprio prompt principale indichi il numero
di utenti che hanno almeno una sessione interattiva aperta nel sistema.

ovviamente lo script dovrà agire sulla variabile PS1, ma non riesco a capire come contare gli utenti con almeno una sessione interattiva. Da quello che so, uno shell è interattivo quando è lanciato senza opzioni, quindi stavo pensando a questo per cercare di individuare tutte le sessioni interattive, ma non so come fare :mc: ...perchè fatto quello poi si potrebbero isolare gli utenti che le usano, ordinarli, filtrarli con uniq e contarli con wc. Qualcuno mi da una dritta? :p

Scusate per la lunghezza del post e grazie a chiunque voglia aiutarmi :D

per il primo e secondo esercizio, non ho capito cosa tiserve... o hai scritto qualcosa di sbagliato, o proprio non ci arrivo :D
per il terzo, il comando che ti serve e': w (e dopo e' facile)

Phate82
16-12-2008, 22:59
Ciao e grazie mille per la risposta.

per il primo e secondo esercizio, non ho capito cosa tiserve... o hai scritto qualcosa di sbagliato, o proprio non ci arrivo :D

forse sono stato un po' contorto nella spiegazione...:p
per il primo esercizio volevo solo capire se la mia interpretazione è giusta o meno.
Secondo me per fare quello che l'esercizio chiede si deve impostare per lo script il SUID bit...il problema è che non posso verificare se così funziona perchè anche se imposto il SUID bit e lancio lo script, il processo che esegue lo script rimane di proprietà di chi esegue lo script e non del proprietario dello script (penso che sia dovuto a impostazioni di sicurezza di bash)...insomma non sono sicuro se la mia soluzione è giusta perchè non la posso provare.

per il secondo esercizio non ho avanzato nessuna ipotesi..semplicemente perchè non ho capito il testo. Non capisco proprio cosa dovrei fare.

per il terzo, il comando che ti serve e': w (e dopo e' facile)

scusa l'ignoranza :rolleyes: ...ho visto che il comando w (che non conoscevo) restituisce più o meno le stesse info di who...però forse mi manca qualche nozione teorica :stordita: ..cosa posso ricavare da queste info? per caso le tty indicano tutte le sessioni interattive? :confused: