web-dev-qa-db-fra.com

Est-il possible de changer la propriété d'un fichier sans accès root?

Si un utilisateur A possède le fichier file.txt, l'utilisateur A peut-il modifier la propriété du fichier en utilisateur B sans accès root? Lorsque je lance un fichier chown B.txt en tant qu'utilisateur A, j'obtiens une erreur d'opération non autorisée. Il me semble que, puisque l'utilisateur A est propriétaire du fichier, il devrait pouvoir changer de propriétaire, mais je ne vois pas comment le faire. Merci pour l'aide!

19
Daniel

Si l'utilisateur A possède file.txt, il ne peut pas changer la propriété du file.txt sans le droit d'accès root/l'autorisation Sudo. Ceci est une fonctionnalité et non un bug. Et l'une des nombreuses raisons pour lesquelles les anciens ont choisi d'intégrer cette fonctionnalité a été expliquée dans un commentaire à votre question par roadmr

Conclusion: Vous pouvez modifier les autorisations du fichier à l'aide de chmod si vous êtes le propriétaire de ce fichier sans autorisations root/Sudo, mais vous ne pouvez pas modifier le fichier. propriété, utilisateur ou groupe (en utilisant chown ou chgrp), d'un fichier même si vous êtes le propriétaire du fichier sans les autorisations root/Sudo. Ceci est une fonctionnalité et non un bug.

7
Nitin Venkatesh

Non, vous ne pouvez pas modifier le propriétaire d'un fichier sans accès, mais si vous êtes propriétaire du fichier, vous pouvez modifier les autorisations du fichier avec chmod et modifier le groupe avec chgrp en un autre groupe dont vous êtes membre.

Question connexe: le chown est autorisé pour un utilisateur non root?

4
Mark Stosberg

si vous avez accès à l'utilisateur B, vous pouvez simplement copier le fichier alors que vous êtes connecté en tant que B. Si vous avez également accès à l'utilisateur A, vous pouvez ensuite vous connecter et supprimer le fichier d'origine. Enfin, renommez le fichier copié en lui attribuant le nom d'origine (à nouveau B), vous laissant ainsi essentiellement le même fichier, appartenant à un autre utilisateur.

De toute évidence, ce n’est pas le même fichier, mais si vous ne vous souciez que du contenu du fichier, cela ne pose aucun problème.

2
kuvic

Vous pouvez modifier la propriété d'un fichier ou d'un dossier sans Sudo, à condition que vous disposiez d'autorisations de lecture/écriture sur l'objet et que vous ne puissiez en changer le propriétaire que VOUS, et non d'un utilisateur arbitraire. L'astuce consiste simplement à copier quoi que ce soit, à supprimer l'original, puis à déplacer votre copie à sa place. Malheureusement, cela implique de faire une copie complète de tout, mais que faites-vous.

par exemple. 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
1
Scott