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

Я предложил бы использовать tr и затем test:

if [ -n "$(tr -cd '\n\r' < datafile)" ]; then
    echo "NEWLINE FOUND"
fi

tr -cd удаляет все кроме новых строк/возвратов каретки. Если будут новые строки в файле, то там будет произведен от который -n тест возвратит true.

2
17.01.2013, 01:07
1 ответ

Хорошо, я вижу некоторые возможности:

  • Самый быстрый путем, смысл полномочий POSIX и владения: Вы хотите, чтобы кто-то смог читать и/или записать, Вы устанавливаете полномочия соответственно. Просто поместите этих людей в группу и измените владение устройства на ту группу, дав полномочия записи группы. Вам, вероятно, придется вставить это udev правила, если Ваш /dev управляется udev. Это - то, что некоторые инструменты делают, например, блюз делает это, чтобы позволить пользователям использовать Bluetooth, или по крайней мере это - метод, используемый в моем дистрибутиве, если я не пытаюсь использовать "ConsoleKit".

  • Если устройство просто и нет никакой проблемы в использовании его всем, просто позвольте всем писать на нем.

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

  • Запишите небольшой двоичный файл для записи для устройства, которое является setuid некоторый пользователь, который может записать на устройстве и сделать, чтобы пользователи использовали его для записи в устройство. Это что mount делает, это setuid корень, так, чтобы обычные пользователи могли смонтировать файловые системы если /etc/fstab позволяет им делать так.

Это не создает дополнительных проблем безопасности, насколько Вы устраиваете этих пользователей способность использовать то устройство. Конечно то, что любой с доступом к устройству может использовать любую уязвимость в модуле, но это было бы возможно, неважно, как Вы предоставляете людей доступ к нему. Если Вы пишете демону, который может быть использован. Возможно, это - лучшие простые вещи содержания, и удостоверьтесь, что Ваш код не уязвим.

Я сказал бы, что нет никакого единственного стандартного способа сделать это — существуют некоторые способы, которыми части систем UNIX делают это, и каждая часть делает это наиболее удобным способом для вида решаемой проблемы.

4
27.01.2020, 22:01

Теги

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