3 votos

Limitación de la conectividad de distintos usuarios en una misma máquina

Tengo un iMac con 10.6 en el que se me ha encargado crear dos usuarios diferentes que pueden utilizar diferentes perfiles de red (ubicaciones).

El usuario 1 se conectará vía Ethernet a través de una red filtrada, todas las demás conexiones están deshabilitadas, lo que funciona bien.

El usuario 2 necesita conectarse a la Wi-Fi no filtrada, pero no tiene acceso a ninguna otra conexión.

Tengo la mayor parte de esto implementado en Ubicaciones de Red, el problema es que ambas ubicaciones están disponibles para ambos Usuarios.

Lo que me gustaría poder hacer es asignar la Ubicación personalizada como Predeterminada para cada usuario.

Desde el punto de vista de la seguridad no es perfecto, pero si consigo que esto funcione, me gustaría asignar la conexión Wi-Fi al usuario invitado, para que pueda navegar sin los filtros. Entonces el usuario normal tendrá Ethernet, y no será capaz de cambiar de ubicación, o activar Wi-Fi.

El truco con esto es que el Usuario será un único usuario. Conocerá las contraseñas de ambos usuarios, sólo tendrá que cambiar de usuario para realizar diferentes tareas.

¿Es posible con OSX simple, o necesitaré software/scripts externos?

2voto

Nick Puntos 36

Bueno, ya lo resolví, no era loginHooks lo que necesitaba, sino launchctl.

Básicamente, crea dos scripts (ejecutables por supuesto, puedes hacerlos Root solamente también):

Usuario1.sh

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

Usuario2.sh

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

Estos, por supuesto, hacer la suposición de que está utilizando un imac, en0 es la enthernet, en1 es el WiFi.

A continuación, cree un archivo plist (con propiedad Root, 644), el mío era este:

User1 está en /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>

User2 está en /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>

Después de esa carrera

sudo launchctl load -w /Usuarios/usuario1/Librería/LaunchAgents/org.usuario1.plist

y

sudo launchctl load -w /Usuarios/usuario2/Librería/LaunchAgents/org.usuario2.plist

como cada usuario.

Eso es todo, es rápido, sencillo, y si estableces el propietario de los scripts como otra persona (y en otra ruta), es bastante seguro (no a prueba de balas, pero eso no está en mi ámbito en este momento).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X