Специальная переменная NR
содержит номер текущей строки. Как только весь файл будет обработан, он будет содержать общее количество строк этого файла. Итак, вы можете сделать:
awk 'END{print NR}' file
Конечно, это немного глупо, когда есть программа, разработанная специально для этого:
wc -l file
Ну, вы всегда можете использовать традиционный BSD-маршрут ...
Создать группу - wheel - традиционное имя ...
Добавьте пользователей, которым разрешено использовать su
, в эту группу - в вашем случае ни одного (возможно, кроме root , но root все равно разрешен).
Установить групповое владение su
на wheel
Убрать другие права исполнения для su
К концу, ] su
должен иметь право собственности root: wheel , и его разрешение должно быть: rws - x --- (т.е. chmod u = rwxs, g = x, o = su
) (или даже лучше; --s - x ---; т.е. chmod u = xs, g = x, o = su
)
Это предотвратит всех, кроме root и члены wheel от выполнения su
. Поскольку использование sudo
эффективно делает любого пользователя root , sudo su ...
также должно работать.
Если вы работаете в системе, которая использует PAM (например, почти все Linux-системы), то у вас есть еще несколько вариантов.
/etc/pam.d/su
и добавьте строку типа su auth required pam_wheel.so
перед вашей LDAP/AD/etc. аутентификацией. Это даст вам группу wheel
, используя PAM вместо права собственности на файл. Вы также можете делать гораздо более гибкие вещи, используя pam_succeed_if
. auth sufficient pam_rootok.so
(что позволяет root использовать su
) на auth required pam_rootok.so
(чтобы позволить только root использовать su
), либо, как вариант, поставьте auth required pam_deny.so
в какой-то момент. auth required pam_succeed_if.so uid ne $appuser
, чтобы просто заблокировать su
для пользователя приложения. Заранее прошу прощения, я не тестировал ни один из этих вариантов.