Mientras estoy conectado, puedo hacer lo siguiente:
mkdir foo
touch foo/bar
chmod 400 foo/bar
chmod 500 foo
Entonces puedo abrir vim (no como root
), editar bar
, forzar una escritura w!
y el archivo se modifica.
¿Cómo puedo hacer que el sistema operativo no permita ninguna modificación de archivo?
ACTUALIZACIÓN 02 de marzo de 2017
chmod 500 foo
es una pista falsa: el permiso de escritura en un directorio no tiene nada que ver con la capacidad de modificar el contenido de un archivo, solo la capacidad de crear y eliminar archivos.chmod 400 foo/bar
de hecho evita que se modifique el contenido del archivo. Sin embargo , esto no prevenir los permisos de fichero de ser cambiado - el propietario de un archivo siempre puede cambiar los permisos de su archivo (asumiendo que puedan acceder al archivo es decir, permiso de ejecución en todos los directorios de los antepasados). De hecho, strace (1) revela que esto es lo que está haciendo vim (7.4.576 Debian Jessie): vim llama a chmod (2) para agregar temporalmente el permiso de escritura para el propietario del archivo, modifica el archivo y luego llama a chmod ( 2) nuevamente para eliminar el permiso de escritura. Es por eso que usandochattr +i
Works, solo root puede llamarchattr -i
. Teóricamente, vim (o cualquier programa) podría hacer lo mismo con chattr que con chmod en un archivo inmutable si se ejecuta como root.
fuente
vim
realidad está cambiando los permisos y luego volviéndolo a poner.root
?Respuestas:
Puede establecer el atributo "inmutable" con la mayoría de los sistemas de archivos en Linux.
Para eliminar el atributo inmutable, utilice en
-
lugar de+
:Para ver los atributos actuales de un archivo, puede usar lsattr:
La página de manual chattr (1) proporciona una descripción de todos los atributos disponibles. Aquí está la descripción de
i
:fuente
chattr
comando era parte dele2fsprogs
paquete en mi sistema. Por eso hice esa declaración. He actualizado la respuesta basada en tu comentario.Usted puede:
root
un usuario ficticio recién creadochmod 440
para permitir la lectura por grupo (que es usted).Si el usuario correcto no es el único en este grupo, debe crear un nuevo grupo y agregarlo solo a él, y usar este grupo para ello. Sin embargo, usted no es el propietario del archivo, por lo tanto,
vi
no puede cambiar el propietario del archivo.fuente
:w!
). Sin embargo, vim no llega tan lejos como para cambiar temporalmente los permisos del directorio. Por lo tanto, mantener el directorio no escribible debería ser seguro.Para hacer un árbol de directorios completo de solo lectura:
Para hacerlo legible nuevamente, cambie
+i
a-i
.fuente