¿Por qué cambiar el propietario de un enlace simbólico en Linux?

12

En Linux es posible cambiar el propietario o el propietario del grupo de un enlace simbólico (enlace simbólico). Me preguntaba por qué alguien querría hacer eso, ya que los permisos de un enlace simbólico no se utilizan al acceder a un archivo a través de él.

Solo puedo imaginar un caso de uso en el que podría ser útil: permitir que un usuario elimine un enlace simbólico en un directorio con bits fijos.

¿Conoces otros casos en los que podría ser útil cambiar el propietario o el propietario del grupo de un enlace simbólico?

usuario368507
fuente

Respuestas:

6

Supongamos que root está trabajando en un directorio en el que Eve puede escribir. Hay un archivo fooen este directorio que debe cambiarse para pertenecer a Eve. Entonces los tipos de raíz chown eve foo. Pero justo antes de que llegue usuario root, Eve corre ln -sf /etc/passwd foo. Ahora /etc/passwdpertenece a Eva! Si la raíz puede ejecutarse chown -h eve foopara asegurarse de no seguir enlaces simbólicos, entonces el mayor daño que puede hacerse es que algún otro archivo en el mismo directorio se haya cambiado para pertenecer a Eve.

lchownTambién es conveniente cuando está cambiando el propietario de un árbol de directorios. No necesita preocuparse por afectar accidentalmente un archivo fuera del árbol porque llamó chowna un enlace simbólico.

Gilles 'SO- deja de ser malvado'
fuente
"Si root puede ejecutar chown -h bob foo para asegurarse de no seguir enlaces simbólicos, entonces el mayor daño que se puede hacer es que algún otro archivo en el mismo directorio se haya cambiado para pertenecer a Eve". Supongo que te refieres a "chown -h eve foo". El otro archivo que podría modificarse es el enlace simbólico, ¿verdad?
user368507
@ user5528 El otro archivo podría no ser un enlace simbólico: Eve aún puede ejecutarse mv myfile foo, y la raíz terminará cambiando el propietario de myfile. Pero myfiletiene que ser un archivo que Eve pueda crear o mover a ese directorio, no puede ser ningún archivo en el sistema.
Gilles 'SO- deja de ser malvado'
2
Si bien es interesante, y obviamente aprobado por el autor de la pregunta, no veo cómo esta respuesta responde a la pregunta. Parece más para explicar por qué uno podría usar chown -hcomo medida de precaución al cambiar la propiedad de un archivo que no se supone que sea un enlace simbólico, pero que aún podría serlo (un caso extremo, IMO). No explica por qué uno podría desear cambiar la propiedad de un archivo que de hecho pretende ser un enlace simbólico, que es lo que se hizo la pregunta.
Ivan X
¿Por qué chowncambiar el propietario de "un archivo fuera del árbol" es todo lo que está cambiando es el propietario del directorio?
Melab
@Melab Cuando está cambiando el propietario de un árbol de directorios , es decir, deshabilitando la utilidad chown -R, que llama a la (l)chownllamada del sistema en cada entrada del directorio. Si la entrada del directorio es un enlace simbólico, entonces no debe llamar a la llamada del chownsistema porque eso afectaría el objetivo del enlace que puede estar ubicado fuera del árbol.
Gilles 'SO- deja de ser malvado'
8

Apache se puede configurar para seguir enlaces simbólicos solo si el propietario del enlace coincide con el propietario del destino. Esto puede ayudar a evitar que los usuarios creen enlaces para el acceso web a archivos que no son de su propiedad (por ejemplo, / etc / passwd).

... así que digamos que, como root, quería que Apache siguiera un enlace para mostrar un determinado archivo de registro, que era propiedad de xymon o algo así, pero no quería relajar la seguridad de Apache al permitirle seguir enlaces simbólicos independientemente del propietario . Entonces es posible que desee hacer que xymon sea el propietario del enlace simbólico.

Lars Rohrbach
fuente
1
Okay. Sé que no está relacionado, pero ¿cuál es el punto de este comportamiento en apache? Es decir, si el usuario puede leer el archivo, ¿por qué molestarse en leerlo desde el acceso web? thx
user368507
Bueno, no es solo un usuario local que lee el archivo; si apache puede leerlo, entonces potencialmente todos pueden leerlo. Y si alguna vulnerabilidad de apache permitiera la creación de un enlace simbólico /etc/passwd, entonces el malvado podría haber leído el acceso a ese archivo sin tener ningún otro acceso local, pero se vería frustrado por el enlace simbólico que es propiedad de apache.
Lars Rohrbach
4

La primera respuesta no parece abordar la pregunta, y la segunda solo se aplica a Apache.

Una cosa que puedo pensar para Linux en general es que solo es posible para un usuario común hacer un enlace rígido a un enlace simbólico si el usuario es el propietario del enlace simbólico. Por qué uno querría hacer ese enlace, no lo sé.

Otra cosa es que un usuario común solo puede cambiar la propiedad del grupo de un archivo si el usuario posee el archivo (y también es miembro del grupo al que se está agregando el archivo). Esto plantea la pregunta de qué propiedad del grupo un enlace simbólico lo hace. En una organización, puede ser útil como una etiqueta para indicar qué equipo necesitaría el enlace.

Además, al menos en Ubuntu, cualquiera puede actualizar la marca de tiempo de un enlace simbólico. Sin embargo, puede haber algunos sistemas que solo permiten que el propietario lo haga. No estoy seguro de qué sirve la marca de tiempo para un enlace simbólico, pero puede proporcionar información útil sobre cuánto se usa.

Editar: Acabo de darme cuenta de otra razón por la cual la propiedad sería importante. El enlace podría estar dentro de un directorio fijo, donde solo el propietario de un archivo puede eliminarlo o cambiarle el nombre.

otro muchacho
fuente
0

Tengo un programa que se agrega a un archivo de registro. Estos archivos de registro se crean mensualmente, cada uno con un nombre diferente. En lugar de que el software descubra el nombre de archivo exacto, uso un nombre de archivo "genérico" (digamos data.log) que es un enlace simbólico que apunta al archivo actual de ese mes. Esto está automatizado en un trabajo cron.

Ahora que se crea un nuevo archivo mensual, necesita apuntar el enlace simbólico al nuevo archivo. Si hay un conflicto de propiedad / grupo, el software no puede cambiar el enlace simbólico. Por lo tanto, necesita privilegios de propiedad / escritura grupal para cambiar el enlace simbólico.

usuario173610
fuente
0

Si desea tener un enlace a un archivo en su pantalla de apertura, el enlace simbólico debe estar en el

"/ inicio / nombre de usuario / Escritorio"

directorio.

Y, el enlace simbólico en sí mismo debe tener propiedad de root: root (0: 0), de lo contrario, el enlace no funciona.

(Ubuntu / Debian, etc.)

Helen Craigman
fuente