Realmente no importa si los archivos en /bin
(o cualquier otro directorio estándar donde se guardan los archivos ejecutables) se pueden escribir por root o no. En un servidor Linux que estoy usando, pueden ser escritos por root, pero en mi máquina OpenBSD, no lo son.
¡Mientras no sean editables por el grupo o por "otro"!
No hay problemas de seguridad que tengan, p. Ej.
-rwxr-xr-x 1 root root 126584 Feb 18 2016 /bin/ls
Si alguien quisiera sobrescribirlo, tendrían que ser root, y si lo son root
y sobrescribirlo, entonces son
- instalar una nueva versión, o
- torpe o
- un atacante con permisos de root ya .
Otra cosa a considerar es que root puede escribir en el archivo sin importar si está protegido contra escritura o no, porque ... root.
Observe también que "un script" es tanto un archivo ejecutable como un archivo binario. Un script no necesita ser escribible "porque es un archivo de texto". En todo caso, probablemente debería tener el mismo permiso que los otros ejecutables en el mismo directorio.
¡No vayas a cambiar los permisos de todo ahora! Eso puede causar todo tipo de estragos y potencialmente confundir a los administradores de paquetes que pueden verificar que los permisos estén configurados correctamente. También puede hacer que el sistema sea vulnerable si accidentalmente cambia los permisos de manera incorrecta en una aplicación crítica para la seguridad.
Simplemente suponga que los permisos en los ejecutables están configurados correctamente, a menos que encuentre algo que parezca realmente extraño, en cuyo caso probablemente debería contactar al responsable del paquete correspondiente para verificar en lugar de comenzar a cambiar las cosas.
De los comentarios y en el chat , hubo una llamada para un poco de historia.
La historia de los permisos en binarios en Linux no es algo de lo que sepa nada. Se puede especular que simplemente heredaron los permisos del directorio, o simplemente del valor predeterminado umask
de Linux, pero realmente no lo sé.
Lo que sí sé es que OpenBSD instala los binarios en el sistema base 1 con el modo de permiso 555 por defecto ( -r-xr-xr-x
). Esto se especifica en un fragmento de Makefile en el /usr/share/mk/bsd.own.mk
que se establece BINMODE
en 555 (a menos que ya esté configurado). Esto se utiliza más tarde, cuando la instalación de los ejecutables durante make build
en /usr/src
.
Eché un vistazo al registro CVS anotado para este archivo y descubrí que esta línea en el archivo no ha cambiado desde que se importó de NetBSD en 1995.
En NetBSD, el archivo se colocó por primera vez en CVS en 1993, con BINMODE
555.
El proyecto FreeBSD parece haber usado exactamente el mismo archivo que NetBSD desde al menos 1994 , y con una confirmación posterior agrega una pista en el mensaje de confirmación de que los archivos antiguos eran de la versión 4.4BSD de Berkeley Software Distribution.
Más allá de eso, el CSRG en Berkeley mantuvo las fuentes en SCCS, pero su repositorio está disponible en forma de Git en GitHub 2 . El archivo que estamos dando al tratamiento forense aquí parece haber sido cometido por Keith Bostic (o alguien muy cercano a él) en 1990.
Así que esa es la historia. Si quieres saber por qué , entonces supongo que tendremos que preguntarle a Keith. Tenía la esperanza de ver un mensaje de confirmación para un cambio diciendo " esto debe ser 555 porque ... ", pero no.
1 Los sistemas BSD tienen una división más estricta en "sistema base" y "paquetes de terceros" (puertos / paquetes) que Linux. El sistema base es una unidad coherente que proporciona un conjunto completo de instalaciones para ejecutar el sistema operativo, mientras que los puertos o paquetes se ven como "software local" y se instalan debajo /usr/local
.
2 También está disponible un repositorio GitHub más completo de versiones de Unix desde los años 70 en adelante .
root
tiene permiso de escritura en un archivo binario. Por lo menos, ayudaría al actualizar ese paquete.