
Я пытаюсь создать скрипт оболочки Bash, который позволяет переносить файлы с флэш-накопителя в архив, который укажет пользователь. Хотя я хотел бы ограничить этого пользователя, запретив ему создавать подкаталоги в этом архивном каталоге.
ПРИМЕЧАНИЕ:По сути, я хочу, чтобы каталог архива, который создает/указывает пользователь, имел плоскую одноуровневую структуру.
Я не имею ни малейшего представления, как этого добиться, и буду признателен за любую помощь.
решение1
Нет никакого собственного механизма, чтобы легко этого добиться. Система разрешений Linux не может указать отдельные разрешения для создания файлов и каталогов, поскольку каталоги по сути являются файлами. Но попробуйте такой способ:
- Сделать все архивные каталоги собственностью одного (или нескольких) пользователя, созданного специально для этой цели. Предположим, что его имя archiveuser.
Сделайте так, чтобы все архивные каталоги (я думаю, у вас их много) принадлежали этому пользователю, например:
$ chown archiveuser:archiveuser /somedir/archivedir1 $ chown archiveuser:archiveuser /somedir/archivedir2 $ chown archiveuser:archiveuser /somedir/archivedir3
Ограничить доступ к архивным каталогам, чтобы доступ к ним имел только владелец:
$ chmod 700 /somedir/archivedir1 $ chmod 700 /somedir/archivedir2 $ chmod 700 /somedir/archivedir3
Используйте
sudo
механизм для предоставленияcp
командного доступа к архивным каталогам:добавить в
/etc/sudoers
:someuser1 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/* someuser2 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/*
Конечно, удобно создать соответствующую группу для всех пользователей, которым будет разрешено использовать эту команду. Читайте
sudo
руководство :-).Вот и все. Пользователям необходимо использовать:
$ sudo -u archiveuser cp /path/to/pendrive/somefile /somedir/archiveuser/
Вы можете создать некоторый псевдоним, чтобы сделать его более удобным в использовании (например, alias cpt='sudo -u archiveuser cp'
). Обратите внимание также, что cp -r
необходимость копирования каталога не допускается sudo
в этом случае. Также mkdir
команда запрещена разрешениями. Таким образом, ваша цель достигнута.