Я предложил бы использовать tr
и затем test
:
if [ -n "$(tr -cd '\n\r' < datafile)" ]; then
echo "NEWLINE FOUND"
fi
tr -cd
удаляет все кроме новых строк/возвратов каретки. Если будут новые строки в файле, то там будет произведен от который -n
тест возвратит true.
Хорошо, я вижу некоторые возможности:
Самый быстрый путем, смысл полномочий POSIX и владения: Вы хотите, чтобы кто-то смог читать и/или записать, Вы устанавливаете полномочия соответственно. Просто поместите этих людей в группу и измените владение устройства на ту группу, дав полномочия записи группы. Вам, вероятно, придется вставить это udev
правила, если Ваш /dev
управляется udev
. Это - то, что некоторые инструменты делают, например, блюз делает это, чтобы позволить пользователям использовать Bluetooth, или по крайней мере это - метод, используемый в моем дистрибутиве, если я не пытаюсь использовать "ConsoleKit".
Если устройство просто и нет никакой проблемы в использовании его всем, просто позвольте всем писать на нем.
Запишите демону, который запускается как некоторый пользователь, который может записать на устройстве, захватывает устройство и отбрасывает его полномочия путем изменения его UID и затем обрабатывает запросы от любого пользователя через, например, TCP.
Запишите небольшой двоичный файл для записи для устройства, которое является setuid
некоторый пользователь, который может записать на устройстве и сделать, чтобы пользователи использовали его для записи в устройство. Это что mount
делает, это setuid
корень, так, чтобы обычные пользователи могли смонтировать файловые системы если /etc/fstab
позволяет им делать так.
Это не создает дополнительных проблем безопасности, насколько Вы устраиваете этих пользователей способность использовать то устройство. Конечно то, что любой с доступом к устройству может использовать любую уязвимость в модуле, но это было бы возможно, неважно, как Вы предоставляете людей доступ к нему. Если Вы пишете демону, который может быть использован. Возможно, это - лучшие простые вещи содержания, и удостоверьтесь, что Ваш код не уязвим.
Я сказал бы, что нет никакого единственного стандартного способа сделать это — существуют некоторые способы, которыми части систем UNIX делают это, и каждая часть делает это наиболее удобным способом для вида решаемой проблемы.