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
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 unasudo -u hosteditor vim ...
con una contraseña diferente. Consulteman sudoers
.1 votos
Estoy de acuerdo con @bdecaf - será jugar con (y alterar) la
sudoers
archivo. applegazette.com/mac/ señala que debe utilizar un editor especial,visudo
pero no estoy seguro de que siga siendo así. Solía serlo, y usted podría destrozar tusudoers
si sólo utiliza nano o vim o lo que sea.0 votos
¿Por qué? Controlar quién puede ser administrador.
1 votos
@Ian el comando todavía se llama visudo - pero se puede establecer
EDITOR
oVISUAL
a su editor preferido. A continuación, se utilizará. Por cierto, esto también funciona consudo -e
que es más cómodo, ya que también utilizará la configuración del editor de los usuarios (y no las root).0 votos
@bdecaf Consejo práctico. Muy bueno.
0 votos
@FiddleDeDee En realidad es un poco más complicado, pero básicamente... opensource.apple.com/source/sudo/sudo-86.50.1/sudo/plugins/