Tengo un script de carga de respaldo que scp los archivos a otro servidor usando el usuario upload
. Otra secuencia de comandos en el servidor de destino se envía a otro usuario y establece el modo de archivo en 755
.
Si luego SSH en el servidor de destino con el upload
usuario, puedo eliminar los archivos seleccionados. ¿No deberían ser de solo lectura?
Así es como se ve un archivo en el servidor de destino, y el usuario upload
puede eliminarlo.
-rwxr-xr-x 1 maciekish maciekish 650M Nov 1 01:07 2014-11-01-data.tar.bz2
El usuario upload
se acaba de agregar usando useradd
y no es parte del maciekish
grupo.
Cuando intento eliminar el archivo a upload
través de ssh, me pregunto si deseo eliminar el "archivo normal protegido contra escritura" y puedo decirlo Y
y eliminarlo.
linux
security
file-permissions
Maciej Swic
fuente
fuente
rm
eliminar archivos de solo lectura?Respuestas:
Los archivos son de solo lectura; sin embargo, eliminar un archivo no lo modifica sino solo el directorio padre (básicamente elimina el archivo de la lista del directorio), y parece que tiene permisos completos de escritura en el directorio.
Puede establecer el
sticky
bit, también conocido como indicador de "eliminación restringida", que evitará que cualquier persona, excepto el propietario, renombre o elimine archivos en ese directorio (como en/tmp
). Para hacer esto, ejecutechmod o+t *directory*
como el propietario del directorio.fuente
En un sistema de archivos Unix típico, cualquier archivo puede identificarse mediante un número arbitrario de entradas de directorio, cada una de las cuales contiene un "enlace duro".
Desde el punto de vista de la implementación, existe una diferencia entre eliminar la última entrada de directorio (enlace duro) para un archivo y simplemente eliminar una referencia de entre muchas. Sin embargo, desde un punto de vista semántico no hay diferencia.
Si existen múltiples enlaces duros a un archivo, escribir en el archivo usando cualquiera de ellos altera el archivo visto por todos ellos.
rm
Sin embargo, el uso en un enlace simplemente hace que el archivo no sea accesible a través de ese enlace. Otros enlaces al archivo continúan viendo exactamente el mismo archivo.fuente
st_nlink
("número de enlaces duros") enstruct stat
. En pocas palabras, los directorios contienen enlaces duros a los archivos.