Количество полей в записи (пробелы -столбцы с разделителями в строке, по умолчанию )равно 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 ). ;
в конце строк не требуется, если только для отделения одного оператора от другого в той же строке (не сравните использование ;
в двух эквивалентных фрагментах кода выше, например ).
Вы можете запретить определенным программам доступ к определенному устройству или службе напрямую . (Например, 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
позволяют обойти это.