Смена владельца в собственном каталоге

463
ôkio

У меня есть скрипт, работающий с пользователем user1:user1, который выполняет операции внутри каталога dir. В конце скрипта я хотел бы использовать chown, чтобы изменить владельца скрипта наuser2:user2

Но это не работает. Я попробовал ту же операцию, вошел как user1:

$ ls -l drwxr-xr-x 5 user1 user1 4096 Jan 11 10:58 dir $ chown -R user2:user2 dir chown: changing ownership of dir: Operation not permitted 

Почему я не могу сменить владельца своих собственных файлов / реперториев? Есть ли другой способ, кроме как использовать рут-доступ для этого?

ОБНОВИТЬ

Сценарий создает git-клон, а затем rsync с каталогом Apache. Новые файлы имеют владельца для текущего пользователя, но вместо этого мне нужен Apache.

0
Возможный дубликат [chown - операция не разрешена] (http://superuser.com/questions/697608/chown-operation-not-permitted) a CVn 8 лет назад 2
Также актуально: [Почему обычный пользователь не может «чоуни» файл?] (Http://unix.stackexchange.com/q/27350/2465) на [unix.se] a CVn 8 лет назад 1
Мне кажется, это довольно * элементарная * мера безопасности: если бы ее не было, я мог бы по желанию передать право собственности на зараженные файлы другим пользователям. MariusMatutiae 8 лет назад 0

1 ответ на вопрос

2
nKn

The chown command is only available for root, for security reasons, so if you want to do that, you'll have to do it as root.

There are 2 things that come to my mind that you can do:

  • Use the SETUID bit. This way, you're allowing users to run the script as root (though it also has security concerns, depending on what your script does). More on this here.

  • You might also create a task-based queue (for example, using redis). The script would insert a value on the queue when run, and a script run as root would read that queue and make any needed changes (in your case, use chown on that file).

Спасибо за Ваш ответ. Я обновил свой пост с подробностями сценария. Я пытался сделать `chmod u + s script`, но это ничего не меняет. Это правильный способ его использования? ôkio 8 лет назад 0
Вы запускаете скрипт как root? Если нет, то поэтому он ничего не делает Ramhound 8 лет назад 0
Вам нужно поменять владельца на `root`. При запуске без полномочий root он будет работать как `root` вместо пользователя, который вызвал скрипт. nKn 8 лет назад 0

Похожие вопросы