Limitazione di diversi utenti su una singola macchina a connettività diversa

3

Ho un iMac in esecuzione 10.6 in cui mi è stato assegnato il compito di creare due utenti diversi che possono utilizzare profili di rete diversi (posizioni).

L'utente 1 si collegherà via Ethernet attraverso una rete filtrata, tutte le altre connessioni sono disabilitate, il che funziona bene.

L'utente 2 deve connettersi al Wi-Fi non filtrato ma non ha accesso ad altre connessioni.

Ho implementato la maggior parte di questo nelle ubicazioni di rete, il problema è che entrambe queste posizioni sono disponibili per entrambi gli utenti.

Quello che mi piacerebbe essere in grado di fare è assegnare la posizione personalizzata come predefinita per ciascun utente.

Da un punto di vista della sicurezza non è perfetto, ma se riesco a far funzionare questo genere di cose, vorrei assegnare la connessione Wi-Fi all'utente ospite, in modo che possano navigare senza i filtri. Quindi l'utente normale avrà Ethernet e non sarà in grado di cambiare posizione o abilitare il Wi-Fi.

Il trucco con questo è che l'utente sarà un singolo utente. Sapranno entrambe le password degli utenti, avranno solo bisogno di cambiare utente per eseguire compiti diversi.

È possibile con OSX semplice, o avrò bisogno di software / script esterni?

    
posta Nick 04.09.2013 - 14:19
fonte

1 risposta

2

Beh, l'ho risolto, non era loginHooks di cui avevo bisogno, ma launchctl.

Fondamentalmente, crea due script (eseguibile ovviamente, puoi rendere anche em root):

Utente1.sh

!/bin/bash ifconfig en0 up; ifconfig en1 down;

Utente2.sh

!/bin/bash ifconfig en1 up; ifconfig en0 down;

Ovviamente si suppone che tu stia usando un imac, en0 è la rete, en1 è il WiFi.

Quindi crea un file plist (con proprietà root, 644), il mio era questo:

Gli User1 sono entrati in /Users/user1/Library/LaunchAgents/org.user1.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.user1.plist</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/user1/bin/User1.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Utente2 in /Users/user2/Library/LaunchAgents/org.user2.plist

 <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>org.user2.plist</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/user2/bin/User2.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
    </dict>
    </plist>

Dopo quella corsa

sudo launchctl load -w /Users/user1/Library/LaunchAgents/org.user1.plist

e

sudo launchctl load -w /Users/user2/Library/LaunchAgents/org.user2.plist

come ogni utente.

Questo è tutto, è veloce, semplice e se imposti il proprietario degli script come qualcun altro (e su un altro percorso), è abbastanza sicuro (non a prova di proiettile, ma non è nel mio ambito al momento).

    
risposta data 06.09.2013 - 16:39
fonte

Leggi altre domande sui tag