3 votos

¿Cómo puedo bloquear archivos con contraseñas específicas en mac, idealmente a través de terminal?

Quiero bloquear mi archivo /etc/hosts para que necesite una contraseña para poder escribir. Sé que puedes encriptar archivos con la Utilidad de Discos, pero en este caso el archivo necesita ser leído por el ordenador y la ruta/extensión no puede cambiar. No sólo quiero bloquear el contenido, quiero bloquear este archivo muy específicamente.

Si ejecuto sudo vim /etc/hosts Tengo que escribir mi contraseña de acceso, pero luego puedo hacer lo que quiera.

Quiero una solución en la que si ejecuto sudo vim /etc/hosts Debo escribir una contraseña personalizada/específica para escribir en el archivo.

0 votos

¿De quién, o qué, quieres bloquearlo? Por defecto, el archivo sólo puede ser escrito por usuarios o procesos con acceso Root.

0 votos

Bloquear el acceso a cualquier persona (incluido el administrador) que no disponga de una contraseña determinada.

1 votos

Tengo la impresión de que uno podría encontrar una manera de establecer /etc/sudoers por lo que bloqueará sudo vim y los usuarios tendrían que hacer una sudo -u hosteditor vim ... con una contraseña diferente. Consulte man sudoers .

4voto

Jose Chavez Puntos 645

El /etc/hosts necesita ser legible por otro programa para cumplir su propósito. Si encriptas el archivo de alguna manera, esos otros programas no podrán leer el archivo - y dejará de funcionar.

Así que, en resumen, no se puede hacer esto (es decir, la encriptación) de manera significativa.

Sin embargo, lo que puedes hacer es asegurarte de que otras personas no tengan contraseñas para cuentas administrativas en tu Mac. Si necesitan más privilegios para algo, haga que usted les asigne acceso a ese recurso específico (por ejemplo mediante un acceso sudo limitado a un programa específico) - y asegúrese de no dar acceso administrativo completo.

Un ejemplo del uso de sudo para dar acceso a editar un archivo es usar la opción "sudoedit" en sudo. Esto le permite dar a otra persona acceso para editar un archivo sin dejar que su editor se ejecute como el usuario privilegiado (que está obligado a dejarle "escapar" y permitirle hacer otras cosas como el usuario privilegiado). Se logra copiando el archivo privilegiado en una ubicación separada, dejando que el usuario ejecute su editor habitual bajo su propio id de usuario para editar ese archivo, y luego copiando su contenido sobre el archivo privilegiado después.

En sudoers especificarías algo como:

username  sudoedit /etc/hosts

Por defecto, esto permitirá a "nombredeusuario" editar ese archivo, y le pedirá que introduzca su propia contraseña de acceso antes de hacerlo.

Si desea que el usuario introduzca una contraseña diferente, que no sea su contraseña de inicio de sesión, tiene básicamente dos maneras de hacerlo.

Una forma es no utilizar "sudoedit": En su lugar, crear un programa personalizado (puede ser un shell script) que simplemente introduzca una cadena y compruebe que coincide con la contraseña que desea, y luego simplemente imite lo que hace sudoedit. También puede ser bastante simple y sólo un comando "cp" para copiar sobre una ruta específica desde la propia carpeta home del usuario a /etc/hosts.

La alternativa es modificar qué contraseñas aceptará sudo como válidas. Esto se hace editando /etc/pam.d/sudo y descomentando las líneas estándar que comienzan con "auth". En su lugar proporcione el módulo de autenticación y las opciones que desea aprobar.

Si quieres hacer algo completamente personalizado, puedes compilar tu propio módulo PAM que simplemente pida una contraseña y compruebe que es una cadena específica. Puedes empezar con el código fuente del módulo PAM por defecto pam_opendirectory y simplemente arrancar las partes de OpenDirectory y reemplazarlo con una simple strcmp(). El código fuente para un módulo personalizado de este tipo tiene muy pocas líneas de código.

Puede encontrar el código fuente del módulo PAM pam_opendirectory aquí:

https://opensource.apple.com/source/pam_modules/pam_modules-76/pam_opendirectory/pam_opendirectory.c.auto.html

1 votos

"Quiero una solución en la que deba escribir una contraseña personalizada/específica para escriba a al expediente".

0 votos

Hmm, puede cambiar sudoers para seleccionar una contraseña personalizada en lugar de la contraseña de inicio de sesión.

0 votos

Estoy indeciso sobre si votarte o no, porque has dado la peor y la mejor respuesta: "en resumen, no se puede hacer esto de una manera significativa" es totalmente incorrecto porque puede hacerse "de manera significativa", asegurándose, como usted dice, "de no dar acceso administrativo completo" y haciendo que se asigne el acceso a ese recurso específico (por ejemplo mediante un acceso sudo limitado a un programa específico)". ;)

1voto

Baarn Puntos 4579

Bien, aquí va una respuesta completamente nueva que no es una "solución a medias".

Si esto es lo que realmente busca, puede decírmelo.
Pero para reforzar las respuestas anteriores:

  1. Cambia tu cuenta por defecto a una cuenta de no administrador.
  2. Crear una nueva cuenta de administrador, con una contraseña única; esta cuenta sólo se utilizará para editar /etc/hosts .
  3. Escribir un wrapper script/función shell para envolver/supersede sudo comprobando también los argumentos en $@ aquí para garantizar /etc/hosts es el archivo en cuestión.
  4. read la contraseña del usuario único admin en una variable shell.
  5. Utilice el resto del script para su al usuario admin usando esa contraseña, luego otra vez a /usr/bin/sudo vi /etc/hosts .

Entonces tendrás una solución en la que cuando "ejecutes sudo vim /etc/hosts, [deberás] escribir una contraseña personalizada/específica para escribir en el archivo".

0voto

Baarn Puntos 4579

Suponiendo que su cuenta es una cuenta de administrador, creo que su mejor opción sería Habilitar el usuario root (con su propia contraseña, y eliminar el admin grupo del sudoers archivo.

  1. Utilidad Open Directory. Puede haber una manera de hacer esto desde la Terminal, pero abra Directory Utility.app se puede llegar a través de

    • Preferencias del Sistema > Opciones de inicio de sesión > Servidor de cuentas de red > Unirse...

    • open -a "Directory Utility"

    • etc... (se encuentra en /System/Library/CoreServices/Applications)

  2. Haga clic en el candado y, en el menú Editar, seleccione "Habilitar usuario root".

  3. Establecer un único contraseña.

  4. Asegúrate de que esto funciona. En su terminal, escriba su root e introduzca su nuevo root contraseña. Deberías poder editar tu archivo hosts.

  5. En su terminal (como usuario por defecto), escriba sudo visudo (introduzca su contraseña).

  6. Comenta la línea:

%admin ALL = (ALL) ALL

a

## %admin ALL = (ALL) ALL

  1. Guarda el archivo.

Inténtalo de nuevo. Ahora debería aparecer un error del tipo:

  1. [User] is not in the sudoers file. This incident will be reported.

Esto no es exactamente un archivo específico, pero parece que es lo que querías

(Para restaurar, utilice su root no es una función relacionada con el sudo).

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