Один из наших пользователей, у которого есть привилегии sudo для нескольких пользователей без полномочий root (ролевые учетные записи для использования с конкретными проектами), хотел бы иметь возможность изменять право собственности на файлы среди этих пользователей: например, если sudoers выглядит как
jane ALL=(widget-dev,releng) ALL
jane ALL=(root) rchown
тогда пользователь «jane» может использовать гипотетическую утилиту «rchown» (от «limited chown») для файлов, принадлежащих любому из jane, widget-dev, и relng, чтобы передать их любому из этих пользователей.
Мне не удалось найти существующую утилиту, которая делает это. Один из наших пользователей просит об этом, и это кажется разумным желанием, но я подумал, что спрошу здесь и запрошу истории о войне и ужасные предупреждения о кошмарах безопасности, прежде чем погрузиться в писать (две плохие идеи)
Отредактировано, чтобы добавить еще одно беспокойство по поводу логики: мы действительно хотим делать это только в тех случаях, когда пользователь может запускать ВСЕ команды как целевой пользователь ... верно? Может быть, он так и не был реализован, потому что увяз в таких подробных вопросах, связанных с конкретным сайтом.
Вы можете сделать это напрямую с помощью sudo. Когда я впервые начал думать о том, как это сделать, я быстро понял, что количество чоунов, которое вам нужно будет указать для n пользователей, будет n ^ 2, если вы попытаетесь сопоставить их напрямую. Но вы можете сократить это количество до 2n, если вы требуете, чтобы пользователь стал владельцем каждого файла перед его повторным назначением. Итак, ваш файл sudoers может выглядеть так:
User_Alias CHOWNADMIN1 = jane
Cmnd_Alias CHOWNUSR1 = /bin/chown --from widget-dev jane *, /bin/chown --from jane widget-dev *
Cmnd_Alias CHOWNUSR2 = /bin/chown --from releng jane *, /bin/chown --from releng amy *
CHOWNADMIN1 ALL= NOPASSWD: CHOWNUSR1, CHOWNUSR2
С такой настройкой Джейн теперь может выполнить двухэтапный процесс смены владельца:
chown --from widget-dev jane /tmp/foofile
chown --from jane releng /tmp/foofile
Обратите внимание, что вы должны ограничить это разрешение с помощью --from, иначе вы откроете возможность предоставить пользователю jane разрешение на владение такими файлами, как / etc / shadow или /root/.ssh/id_rsa (это может быть плохо ).
Конечно, теперь вы можете написать очень простой скрипт для автоматизации приготовления еды. Возможно что-то вроде следующего, но с участием некоторая проверка ошибок:
#!/bin/bash
FROM=$1
shift
TO=$1
shift
sudo chown --from $FROM $USER $*
sudo chown --from $USER $TO $*
И теперь Джейн может запускать "rchown relng widget-dev / tmp / foofile" или аналогичный.