¿Es posible cambiar la propiedad de un archivo sin acceso de root?


21

Si un usuario A posee file.txt, ¿puede el usuario A cambiar la propiedad del archivo al usuario B sin acceso de root? Cuando ejecuto un chown B file.txt como usuario A, obtengo un error de Operación no permitida. Me parece que, dado que el usuario A posee el archivo, debería poder cambiar la propiedad, pero no veo una manera de hacerlo. ¡Gracias por la ayuda!


44
Podría poner datos incriminatorios en un archivo y cambiar su propiedad para enmarcar a alguien :) Supongo que ese es un argumento en contra de permitir lo que sugiere.
roadmr

1
Pequeña adición: AFAIU que puede cambiar el grupo propietario de un fichero de su propiedad, siempre y cuando usted es un miembro del grupo que está cambiando a .
Matthijs Kooijman

Respuestas:


7

Si el usuario A posee file.txt, no puede cambiar la propiedad del file.txtsin acceso de root / permiso de sudo. Esta es una característica y no un error. Y una de las muchas razones por las que los ancianos decidieron poner esta función, se ha explicado en un comentario a su pregunta por roadmr

En pocas palabras: puede cambiar los permisos del archivo usando chmodsi es el propietario de ese archivo sin permisos de root / sudo pero no puede cambiar la propiedad, ya sea usuario o grupo (usando uno chowno chgrp), de un archivo a pesar de que es El propietario del archivo sin permisos de root / sudo. Esta es una característica y no un error.


2
Parte de esto está mal. Los usuarios no root pueden cambiar el grupo de otros grupos de los que son miembros. Prueba touch t; ls -l t; chgrp lpadmin t; ls -l t(suponiendo que estés en el grupo lpadmin). Vea también mi respuesta y pregunta vinculada.
Mark Stosberg

1
Los ancianos se equivocaron. Si soy el usuario A y también el usuario B, entonces debería poder cambiar la propiedad de A a B, si estoy conectado como A y también tengo la contraseña de B o viceversa.
aishu

@aishu En principio, puede hacerlo copiando el archivo como B y luego eliminándolo como A. Sin embargo, no es muy práctico para archivos grandes.
Holger Böhnke


2

si tiene acceso al usuario B, puede copiar el archivo mientras está conectado como B. Si también tiene acceso al usuario A, puede iniciar sesión y eliminar el archivo original. Y finalmente cambie el nombre del archivo copiado, al nombre original (nuevamente como B), dejándolo esencialmente con el mismo archivo, propiedad de un usuario diferente.

Obviamente no es el MISMO archivo, pero si solo te importa el contenido del archivo, este es el truco


1

Puede cambiar la propiedad de un archivo o carpeta sin sudo, siempre que tenga permisos de lectura / escritura sobre el asunto, y solo puede cambiar el propietario a USTED, no a un usuario arbitrario. El truco es simplemente copiar lo que sea, eliminar el original y luego mover la copia a su lugar. Esto, desafortunadamente, implica hacer una copia completa de todo, pero ¿qué haces?

por ejemplo chuser.sh:

#!/bin/bash

TMP="some_temporary_filename_this_is_dumb"

RECURSIVE=""
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"

case $key in
    -r|--recursive)
    RECURSIVE="-r"
    shift # past argument
    ;;
    *)    # unknown option
    POSITIONAL+=("$1") # save it in an array for later
    shift # past argument
    ;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters

cp -d --preserve=all $RECURSIVE $1 $TMP || exit 1
rm $RECURSIVE $1
mv $TMP $1
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.