Извлечь группу пользователей при попытке подключения с помощью ssh

Машины MacOS используют свой собственный сервер cups. Для современных лазерных принтеров HP cups генерирует вывод PostScript, но с некоторыми специальными настройками для целевого принтера. Сервер cups на linux-машине анализирует входной PostScript и использует свои собственные настройки для регенерации вывода. В linux для создания вывода для большинства лазерных принтеров HP вызывается скрипт фильтра /usr/lib/cups/filter/hpps. Проблема заключается в выводе PostScript из MacOS, который, похоже, игнорируется cups под linux. Сценарий фильтра hpps вызывается с пустым файлом и генерирует пустую страницу. Принтер игнорирует это. Мы нашли два обходных пути решения проблемы:

1) Посылать вывод из MacOS, сжатый в gzip, на сервер linux. Сервер cups декомпрессирует вывод и передает его на фильтр hpps. Фильтр отправляет исходный файл с собственными заголовками и колонтитулами на принтер. Без специальных настроек (например, баннера) вывод из фильтра идентичен выводу MacOS. Для этого добавьте

    ?compression=gzip

к cups URI в вашем cups-сервере MacOS. Вызовите https://localhost:631 ваш браузер (включите интерфейс в терминале с помощью 'cupsctl WebInterface=yes'). Выберите 'Modify Printer', авторизуйтесь и выберите протокол печати IPP или IPPS. Целевой URI содержит предыдущий URI. Добавьте строку выше, например,

    ipps:///printers/?compression=gzip

Сохраните описание и параметры модели и сохраните.

2) Установите RAW-принтер на linux-сервере с тем же целевым URI, что и у принтера HP. Но в качестве производителя и модели принтера выберите Raw. Например, если ваш принтер называется 'hp1', добавьте 'hp1_raw' в качестве второго принтера. В MacOS используйте URI принтера RAW в качестве адресата, например,

    ipps:///printers/hp1_raw

Остается небольшой риск. Если кто-то пошлет на linux файл не PostScript в очередь raw, принтер распечатает этот файл как текст. Вы можете получить много смазанных кусочков бумаги, распечатав небольшой PDF-файл.

1
24.02.2017, 14:22
1 ответ

Вы можете получить группы, к которым принадлежит пользователь, с идентификатором -Gn имя пользователя .

Чтобы подсчитать количество администраторов:

who | cut -d ' ' -f 1 |
while read user; do
   id -Gn "$user"
done | grep -F -w "admin" | wc -l

Здесь используется команда who для получения списка вошедших в систему пользователей, извлекается пустое имя пользователя с помощью cut и выполняется группа поиск для каждого из них. Затем группы ищут строку admin и подсчитывают результат.

В качестве альтернативы, сделайте это в обратном порядке, проверив, вошел ли в систему администратор:

who $( awk -F':' '$1 ~ /^admin/ { gsub(",", " ", $4); print $4 }' /etc/group ) | wc -l

awk внутри подстановки команды выведет всех пользователей, которые принадлежат к группе admin , и who увидит, вошли ли они в систему. Затем подсчитывается количество выходных строк.

1
27.01.2020, 23:46

Теги

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