Можно ли внести в белый список -ограничение доступа программ к аудиовходу?

Количество полей в записи (пробелы -столбцы с разделителями в строке, по умолчанию )равно NF. Вы можете перебрать все поля в записи с помощью for (i = 1; i <= NF; ++i). Данные в поле iбудут доступны в $iвнутри цикла. Например:

awk '{ count = 0; for (i = 1; i <= NF; ++i) if ($i < 5) ++count; print count }'

или, написав более подробно,

awk '
    {
        count = 0

        for (i = 1; i <= NF; ++i)
            if ($i < 5)
                ++count

        print count
    }'

Поскольку тела операторов ifи forпредставляют собой только один оператор, в {... }не требуется дополнительной оболочки (, как в языке программирования C, но в отличие от Perl ). ;в конце строк не требуется, если только для отделения одного оператора от другого в той же строке (не сравните использование ;в двух эквивалентных фрагментах кода выше, например ).

1
14.10.2021, 14:00
1 ответ

Вы можете запретить определенным программам доступ к определенному устройству или службе напрямую . (Например, Ubuntu делает это с помощью снимков . )Тем не менее, Unix разработан для взаимодействующих приложений, поэтому на практике очень сложно предотвратить непрямой доступ программы к сервису через другую программу, которой разрешен доступ к сервису. Например, программа, которая не может получить доступ к микрофону, вероятно, все же может создать запланированное задание (задание cron ), которое делает это, или написать инструкции для этого в файле запуска сеанса и т. д.

Чтобы изолировать менее -доверенные программы, запускайте их от имени отдельного пользователя. Это предотвратит доступ программы к любому из ваших файлов, если вы не поделитесь ими явным образом. Такой подход к белому списку необходим для безопасности.

Чтобы запретить пользователю susдоступ к звуку, заблокируйте доступ к аудиоустройствам старого стиля -/dev/dspи /dev/adsp(, которые, как мне кажется, в настоящее время не используются ни одним распространенным приложением )и к захвату(*c)устройства1в /dev/snd/. Из файла запуска, такого как /etc/rc.local, запустите

setfacl -m u:sus:- /dev/adsp /dev/dsp /dev/snd/pcm*c

Обратите внимание, что эта команда должна выполняться при каждой загрузке после монтирования /dev.

Убедитесь, что вы не используете общесистемный -звуковой демон, такой как pulseaudio, который позволяет всем пользователям, выполнившим вход на консоли, получать через него доступ к микрофону. (Я не думаю, что это конфигурация по умолчанию в текущих дистрибутивах ).

Возможно, что некоторые диспетчеры отображения будут автоматически предоставлять пользователю доступ к звуковой подсистеме при входе в систему. (Я не очень хорошо разбираюсь в поведении менеджера отображения. )Вход в текстовом режиме и запуск startxпозволяют обойти это.

1
14.10.2021, 20:45

Теги

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