Можно ли сменить владельца файла без рут-доступа?

21

Если пользователь A владеет file.txt, может ли пользователь A сменить владельца файла на пользователя B без root-доступа? Когда я запускаю chown B file.txt от имени пользователя A, я получаю сообщение «Операция не разрешена». Мне кажется, что, поскольку пользователь A владеет файлом, он должен иметь возможность сменить владельца, но я не вижу способа сделать это. Спасибо за помощь!

Даниил
источник
4
Вы можете поместить инкриминирующие данные в файл и изменить его владельца, чтобы подставить кого-то :) Я думаю, это один из аргументов против того, что вы предлагаете.
роудмр
1
Небольшое дополнение: AFAIU вы можете изменить группу , владеющую файла , который вы владеете, при условии , что вы являетесь членом группы вы меняющегося к .
Маттис Коойман
связанные: unix.stackexchange.com/questions/27350/…
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件

Ответы:

7

Если пользователь A владеет file.txt, он не может изменить владельца file.txtбез прав доступа root / sudo. Это особенность, а не ошибка. И одна из многих причин, по которой старейшины решили использовать эту функцию, была объяснена в комментарии к вашему вопросу Roadmr.

Нижняя линия: Вы можете изменить права доступа к файлу , используя , chmodесли вы являетесь владельцем этого файла без разрешений корня / SUDO , но вы не можете изменить владелец, либо пользователь или группу ( с использованием либо chownили chgrp) файл , даже если вы владелец файла без прав root / sudo. Это особенность, а не ошибка.

Нитин Венкатеш
источник
2
Частично это неправильно. Пользователи без полномочий root могут изменить группу, в которую входят другие группы. Попробуйте touch t; ls -l t; chgrp lpadmin t; ls -l t(при условии, что вы в группе lpadmin). Смотрите также мой ответ и связанный вопрос.
Марк Стосберг
1
Старейшины ошиблись. Если я пользователь A и я также пользователь B, то я должен иметь возможность сменить владельца с A на B, если я вошел как A и у меня также есть пароль B или наоборот.
Айшу
@aishu В принципе, вы можете сделать это, скопировав файл как B, а затем удалив его как A. Хотя это не очень удобно для больших файлов.
Хольгер Бонке
4

Нет, вы не можете изменить владельца файла без доступа, но если вы являетесь владельцем файла, вы можете изменить права доступа к файлу chmodи изменить группу с chgrpдругой группой, членом которой вы являетесь.

Связанный вопрос: chown разрешен не пользователю root?

Марк Стосберг
источник
2

если у вас есть доступ к пользователю B, вы можете просто скопировать файл, войдя в систему как B. Если у вас также есть доступ к пользователю A, вы можете войти в систему и удалить исходный файл. И, наконец, переименуйте скопированный файл в исходное имя (снова как B), в результате чего у вас останется практически тот же файл, принадлежащий другому пользователю.

Очевидно, это не тот же файл, но если вы заботитесь только о содержимом файла, это делает свое дело

kuvic
источник
1

Вы можете изменить владельца файла или папки без sudo, если у вас есть права на чтение / запись для этой вещи, и вы можете изменить владельца только на ВАС, а не на произвольного пользователя. Хитрость заключается в том, чтобы просто скопировать, что бы это ни было, удалить оригинал, а затем переместить свою копию на место. К сожалению, это включает в себя создание полной копии всего, но что вы делаете.

например, 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
Скотт
источник