vivienda por penalizacion mascotas incumplimiento domesticos contrato comercial colombia clausulas clausula casa arrendamiento argentina animales alquiler c shell unix terminal privileges

por - clausulas de un contrato de alquiler



Acceso/Privado/etc con c (3)

esto podría ser una pregunta simple, pero ¿cómo "solicito" privilegios del sistema / raíz al usuario en una aplicación de consola de ca? Necesito escribir en / Private / etc pero no puedo. Esto es para mac / unix.

He visto que se usa en otros comandos de la consola, por ejemplo, cuando ejecuta el siguiente comando: "sudo /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder", Terminal le pide su contraseña. ¿Cómo hago esto?

gracias, JNK


La forma de hacer lo que quiere en la Mac es escribir una "aplicación factorizada", que consiste en la parte que ejecuta un usuario y la parte que hace la tarea privilegiada. Instale la parte privilegiada en el dominio de launchd del sistema y obtenga la herramienta de usuario para invocarla para el trabajo que necesita permisos especiales.

Debe asegurarse de que solo se produzca el uso autorizado del ayudante con privilegios y lo hace mediante los Servicios de autorización . En la herramienta de usuario, adquiere un "derecho", que luego convierte a un formulario externo y lo pasa al ayudante. La herramienta auxiliar debe verificar que tiene el derecho correcto antes de intentar hacer el trabajo privilegiado.

La otra opción es escribir la herramienta completa para que falle con elegancia (lo que tiene que hacer en ambos casos) y pedir a los usuarios que la ejecuten a través de sudo si necesitan acceso privilegiado. Así es como funciona el resto de UNIX.


Para los sistemas UNIX, necesitará tener el indicador de setuid en su programa, y ​​debe verificar / etc / passwd y / etc / shadow para las credenciales válidas. Creo que la función crypt (3) se usa para el hash de contraseñas. No estoy seguro de Mac.


No hay ninguna llamada al sistema que permita que un proceso obtenga privilegios de administrador. Puede esperar que seteuid funcione de esta manera, pero solo puede ser utilizado por procesos con procesos de raíz (los procesos sin privilegios solo pueden configurar el euid igual al uid).

sudo es especial porque su archivo ejecutable tiene permisos setuid. Esto significa que cuando se ejecuta sudo , se ejecuta como el usuario que lo posee (root) en lugar del usuario que lo ejecuta. sudo puede verificar que tiene acceso de administrador al verificar su contraseña y leer un archivo de configuración. Si la verificación tiene éxito, llama a fork y execve para ejecutar el comando que solicitó.

Para obtener privilegios de root dentro de una aplicación no privilegiada, debe saltar algunos aros. Puede usar fork / execve para llamar a sudo para su propio comando. Una vez autenticado, tendrías un proceso secundario privilegiado. Podría pasar un argumento especial o una variable de entorno para que el proceso secundario pueda saltar al código que se pretende privilegiar. El proceso principal solo esperará a que se complete el proceso secundario.