Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://www.arcetri.astro.it/irlab/doc/library/linux/AppLinux/al262.htm
Äàòà èçìåíåíèÿ: Tue Sep 21 18:08:58 1999
Äàòà èíäåêñèðîâàíèÿ: Sat Dec 22 13:25:31 2007
Êîäèðîâêà:

Ïîèñêîâûå ñëîâà: ñòîëîâàÿ ãîðà
Appunti Linux: GNU/Linux nella didattica di massa [inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]

202. GNU/Linux nella didattica di massa

La gestione di un laboratorio munito di elaboratori in una scuola media Õ problematica a causa di diversi fattori: l'etÞ degli studenti; il poco tempo a disposizione; la necessitÞ di svolgere una gran mole di esercitazioni specifiche;... la campanella che suona prima di avere finito.

GNU/Linux Õ un sistema operativo sofisticato e sotto questo aspetto non Õ adatto a un ambiente del genere. In questo capitolo si raccolgono delle idee su possibili soluzioni ai problemi tipici di un tale laboratorio.

202.1 Utente speciale per uno scopo speciale

Quando si vuole permettere agli utenti comuni di compiere attivitÞ che altrimenti sarebbero esclusivamente di competenza dell'utente root, si puÐ utilizzare sudo, oppure si puÐ creare un utente apposito nell'elenco del file /etc/passwd, al quale, invece di associare una shell, si associa il programma o lo script che si vuole fare eseguire.

CIAO::0:0:Esempio generico:/tmp:/etc/script/.CIAO

L'esempio mostra una riga del file /etc/passwd in cui viene definito l'utente CIAO, senza password, con lo stesso UID e GID dell'utente root, e di conseguenza con gli stessi privilegi, al quale viene perÐ associata la directory /tmp/, e al posto di una shell si abbina lo script /etc/script/.CIAO.

In questo modo, accedendo con questo nominativo, CIAO, si esegue lo script /etc/script/.CIAO. Al termine dell'esecuzione dello script, la sessione di lavoro come utente CIAO termina.

Il meccanismo rende il sistema molto poco sicuro, ma ha il vantaggio di essere un modo semplice per l'esecuzione di alcuni comandi che sono normalmente di competenza dell'utente root.

õ importante che la dichiarazione del vero utente root sia precedente a quella di questi finti utenti root.

Per fare in modo che gli eventuali sistemi di sicurezza abbandonino ogni resistenza, Õ probabile che si debba includere l'ipotetico programma /etc/script/.CIAO nel file /etc/shells. Inoltre, dovrebbe essere evidente che in una situazione del genere non sia sensata l'attivazione delle password shadow (si veda anche quanto scritto a proposito del file /etc/login.defs nel capitolo dedicato proprio alle password shadow).

Se si intende utilizzare questo tipo di utente attraverso un programma per l'accesso remoto (rlogin, rsh, telnet o rexec) Õ necessario che il file /etc/securetty contenga l'indicazione dei terminali da cui questo pseudo utente root puÐ accedere.

202.2 Spegnimento da parte di utenti comuni

Generalmente, un utente comune non Õ autorizzato a utilizzare shutdown o equivalenti, per chiudere l'attivitÞ di GNU/Linux. PerÐ, in certi casi, potrebbe essere utile che ciÐ sia possibile. Il modo piÛ semplice di permettere agli utenti comuni di avviarlo, Õ attribuirgli il permesso SUID, come nell'esempio seguente:

chmod u+s /sbin/shutdown

Eventualmente si puÐ completare la cosa creando un collegamento nella directory /bin/ in modo che sia accessibile facilmente agli utenti comuni, senza bisogno di indicarne il percorso.

ln -s /sbin/shutdown /bin/shutdown

Viene mostrata anche una tecnica diversa che si basa sul trucco dell'utente speciale descritta sopra. Questo modo puÐ sembrare piÛ laborioso e inutile; in realtÞ ci sono dei vantaggi, in particolare la possibilitÞ di controllo sull'operazione stessa. Come Õ giÞ stato mostrato nella sezione precedente, si aggiunge l'utente SPEGNIMI nel file /etc/passwd:

SPEGNIMI::0:0:Spegnimento dell'elaboratore:/tmp:/etc/script/.SPEGNIMI

Quindi, lo script /etc/script/.SPEGNIMI potrebbe essere preparato in modo da poter abilitare o disabilitare la possibilitÞ di eseguire la procedura di arresto del sistema.

#!/bin/bash
#======================================================================
# .SPEGNIMI
#======================================================================

    #------------------------------------------------------------------
    # Verifica la presenza del file SPEGNIMI.OK
    #------------------------------------------------------------------
    if [ -f /etc/script/data/SPEGNIMI.OK ]
    then
        #--------------------------------------------------------------
        # Il file esiste e si puÐ spegnere.
        # Esegue lo shutdown con un'attesa di 10 secondi.
        #--------------------------------------------------------------
	sleep 10s
        /sbin/shutdown -h now
    else
        #--------------------------------------------------------------
        # L'operazione di spegnimento non Õ consentita.
        #--------------------------------------------------------------
        echo "L'operazione richiesta di spegnimento non Õ consentita!"
    fi

Lo script deve essere accessibile in tutti i modi solo all'utente root e in nessun modo agli altri utenti (0700).

L'esecuzione di shutdown dipende quindi dalla presenza del file /etc/script/data/SPEGNIMI.OK. In questo modo Õ possibile regolare semplicemente l'accessibilitÞ a questa funzione di spegnimento.

Per utilizzare in pratica questo sistema, si puÐ agire attraverso un accesso locale o remoto. Attraverso un accesso normale Õ possibile spegnere il sistema: basta utilizzare l'utente SPEGNIMI, per il quale non Õ richiesta alcuna password.

Attraverso rlogin Õ possibile attivare una connessione con lo stesso elaboratore su cui si sta operando, ottenendone lo spegnimento. L'esempio seguente utilizza hostname per determinare il nome dell'elaboratore: Õ importante che questo restituisca un nome corretto.

rlogin -l SPEGNIMI `hostname`

Nello stesso modo si puÐ spegnere un elaboratore attraverso la rete da un'altra posizione.

rlogin -l SPEGNIMI <indirizzo-da-spegnere>

Per rendere piÛ facile il meccanismo, si puÐ creare uno script ulteriore con lo stesso nome dell'utente fittizio SPEGNIMI.

#!/bin/sh
#======================================================================
# SPEGNIMI
#======================================================================

    rlogin -l SPEGNIMI `hostname`

In tal modo si utilizza lo stesso termine, sia in presenza di una richiesta di accesso, sia durante una sessione di lavoro normale.

Per avviare la procedura di arresto del sistema su un gruppo di elaboratori in un colpo solo, si puÐ creare uno script che esegue una serie di rlogin su tutti gli elaboratori interessati.

#!/bin/sh
#======================================================================
# SPEGNITUTTI
#======================================================================

    rlogin -l SPEGNIMI host01.brot.dg &
    rlogin -l SPEGNIMI host02.brot.dg &
    rlogin -l SPEGNIMI host03.brot.dg &
    rlogin -l SPEGNIMI host04.brot.dg &
    rlogin -l SPEGNIMI host05.brot.dg &
    #...

In alternativa, se per qualunque motivo si ha difficoltÞ a utilizzare rlogin o rsh come si vorrebbe, si puÐ utilizzare Secure Shell (capitolo 188), configurandola in modo che utilizzi una forma di autenticazione che non richieda l'inserimento di una password. Lo script potrebbe essere modificato nel modo seguente:

#!/bin/sh
#======================================================================
# SPEGNITUTTI
#======================================================================

    ssh -l SPEGNIMI host01.brot.dg &
    ssh -l SPEGNIMI host02.brot.dg &
    ssh -l SPEGNIMI host03.brot.dg &
    ssh -l SPEGNIMI host04.brot.dg &
    ssh -l SPEGNIMI host05.brot.dg &
    #...

202.3 Autorizzare chiunque ad aggiungersi come nuovo utente

Normalmente, non Õ sensato concedere a chiunque di registrarsi da solo all'interno di un sistema, ma su un elaboratore destinato alla didattica, in un ambiente in cui non si vuole utilizzare il NIS, questo potrebbe essere piÛ che giustificato. Con la tecnica giÞ vista nella sezione, si aggiunge l'utente AGGIUNGI.

AGGIUNGI::0:0:Aggiunta nuovo utente:/tmp:/etc/script/.AGGIUNGI

Lo script /etc/script/.AGGIUNGI potrebbe essere preparato in modo da poter abilitare o disabilitare la possibilitÞ di eseguire il programma adduser.

Il programma adduser non Õ necessariamente presente con questo nome e con lo stesso comportamento in tutte le distribuzioni GNU/Linux. In questi esempi si suppone che questo accetti un solo argomento: il nome dell'utente da aggiungere.

#! /bin/bash
#======================================================================
# .AGGIUNGI
#======================================================================

#======================================================================
# Inizio.
#======================================================================

    #------------------------------------------------------------------
    # Verifica la presenza del file AGGIUNGI.OK
    #------------------------------------------------------------------
    if [ -f /etc/script/data/AGGIUNGI.OK ]
    then
        #--------------------------------------------------------------
        # Il file esiste e si puÐ aggiungere l'utente.
        # Si inizia ottenendo il nome da utilizzare.
        #--------------------------------------------------------------
        echo "Inserisci il nome dell'utente."
        echo "Si possono utilizzare al massimo 8 caratteri."
	read
        #--------------------------------------------------------------
        # Controlla la risposta data dall'utente.
        #--------------------------------------------------------------
        if [ ${#REPLY} = 0 ]
        then
            #----------------------------------------------------------
	    # La risposta Õ nulla, cosË si interrompe l'inserimento.
            #----------------------------------------------------------
	    exit
        fi
        #--------------------------------------------------------------
        # Finalmente viene creato l'utente.
        #--------------------------------------------------------------
	NUOVO_UTENTE=$REPLY
        /usr/sbin/adduser $NUOVO_UTENTE
        #--------------------------------------------------------------
        # Viene definita la password.
        #--------------------------------------------------------------
        while [ 0 ]                                           # FOREVER
        do
            if /usr/bin/passwd $NUOVO_UTENTE
            then
                #------------------------------------------------------
                # La password Õ stata inserita correttamente.
                #------------------------------------------------------
                break
            else
                #------------------------------------------------------
                # Meglio ripetere l'operazione.
                #------------------------------------------------------
                continue
            fi
        done
    else
        #--------------------------------------------------------------
        # L'operazione non Õ consentita.
        #--------------------------------------------------------------
        echo "L'operazione richiesta non Õ consentita!"
    fi
#======================================================================

Lo script deve essere accessibile in tutti i modi solo all'utente root e in nessun modo agli altri utenti (0700).

L'esecuzione di adduser dipende quindi dalla presenza del file /etc/script/data/AGGIUNGI.OK. In questo modo Õ possibile regolare semplicemente l'accessibilitÞ a questa funzione.

Per utilizzare in pratica questo sistema, basta identificarsi come l'utente AGGIUNGI in fase di accesso.

---------------------------

Appunti Linux 1999.09.21 --- Copyright © 1997-1999 Daniele Giacomini --  daniele @ pluto.linux.it


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]