как я могу дать доступ для записи обычного пользователя к сетевому интерфейсу?

Большинство файловых систем не хранит время создания файла, таким образом, лучшее, которое можно сделать, проверить в прошлый раз, когда файл был изменен.

Если у Вас есть последняя версия GNU, находят (например, на Linux или Cygwin) или FreeBSD или OSX, можно непосредственно сравнить дату файла с тем из другого файла. Кроме того, эти версии находки могут использовать время создания файла (названный его временем рождения, указанным с a B) если это доступно в Вашей системе. Замена B m ниже для использования времени изменения, а не времени рождения.

find /path/to/directory -newerBt '2009-01-01' ! -newerBt '2010-01-01' -type f -delete

Выполните его однажды без -delete сначала для проверки это файлы, которые Вы хотите. Команда выше также удалит файлы в подкаталогах; если это не желаемо, добавить -mindepth 1 -maxdepth 1 после имени каталога.

Если Ваша версия find не имеет -newerXY основной, необходимо будет создать файлы метки времени для маркировки границ диапазона времен, которым Вы хотите соответствовать.

touch -t 200901010000 /tmp/from
touch -t 201001010000 /tmp/to
find /path/to/directory -newer /tmp/from ! -newer /tmp/to -type f -exec rm {} +

Спецификаторы шарика Zsh могут соответствовать файлам во временном интервале, но границы могут только быть обозначены относительно текущей даты (например, дни несколько N назад).

rm /path/to/directory/*(.m+566^m+931)

Можно также использовать файлы метки времени для точных дат, но Вы проигрываете в краткости.

touch -t 200901010000 /tmp/from
touch -t 201001010000 /tmp/to
rm /path/to/directory/*(.e\''[[ $REPLY -nt /tmp/from && $REPLY -ot /tmp/to ]]'\')

3
26.11.2018, 02:20
3 ответа

Добавьте правило sudo позволить тому пользователю запускать Ваш скрипт. Выполненный visudo и добавьте что-то вроде этого к sudoers файл:

Defaults!/path/to/bridge env_reset
alice, bill  ALL = (root) /path/to/bridge

Обратите внимание, что его позволяет пользователям передавать любой аргумент /path/to/bridge программа. Добавить "" в конце строки для запрещения передачи любых аргументов.

Для более легкого управления пользователями можно предпочесть определять группу пользователей, которым разрешают управлять мостом. Замена alice, bill %bridgers где bridgers имя группы.

В bridge программа, $SUDO_UID идентификатор пользователя пользователя, который вызвал sudo. Если программа требует что пользователь быть в USER переменная, запишите маленький сценарий оболочки обертки, который устанавливает USER=$SUDO_UID.

1
27.01.2020, 21:15
  • 1
    Благодарит, мне было нужно что-то как $SUDO_USER для получения имени пользователя человека, который использовал sudo для запуска программы. –  Claudiu 21.02.2012, 09:16

Можно ограничить в sudoers команды, которым позволяют работать с sudo.

Запишите маленький сценарий ./bridge тот вызов sudo ./real-bridge и дайте пользователям право работать./real-bridge как корень через sudo.

3
27.01.2020, 21:15
  • 1
    Как я упомянул в своем вопросе, я не хочу давать пользователям sudo права; это испортило бы некоторые вещи в программе, которые основаны на переменной среды $USER, не говоря уже о я даю им неограниченные права в системе :) –  Claudiu 20.02.2012, 14:56
  • 2
    @Claudiu я просто хотел стать уверенным, что Вы знаете, что можно ограничить команды, которые могут быть выполнены sudo. Если бы позволенные команды не имеют никаких проблем безопасности, Вы не предоставили бы неограниченные права пользователям. –  jofel 20.02.2012, 15:06

Я не уверен, работает ли это с eth устройствами, но этим, люди делают с устройствами бочки.

$ tail -n1 /etc/udev/rules.d/20-kvm.rules 
KERNEL=="tun",          NAME="net/%k", GROUP="mygoodusers", MODE="0660"

Посмотрите - ГРУППА = "mygoodusers", РЕЖИМ = "0660" - на той строке. Конечно, необходимо поместить каждого пользователя в ту группу.

udevadm control --reload-rules

но до перезагрузки Вы имеете к chmod/chown вручную.

2
27.01.2020, 21:15
  • 1
    Так, я предполагаю, что должен поместить "eth" вместо "бочки"? И "eth0" / "eth1" / "eth2" вместо "сети / % k"? –  Claudiu 20.02.2012, 14:53
  • 2
    , но до перезагрузки Вы имеете к chmod/chown вручную. Между прочим, каковы файлы, на которых я должен chown/chmod? –  Claudiu 20.02.2012, 15:06
  • 3
    Пример с устройством бочки не работает с адаптерами реальной сети. Используйте sudo для своей проблемы, можно определить псевдоним команды, и псевдоним группы также в/etc/sudoers, плюс Вы получит вход для каждого использования sudo ;) –  jirib 20.02.2012, 17:57

Теги

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