it-консалтинг и аутсорсинг
что мы делаем контакты блог

Принтеры — пользователям: часть вторая

Василий Колосов 21.01.2011

Ранее мы писали о том, как в Mac OS X предоставить не административному пользователю возможность управления принтерами. Всего-то и надо, что добавить его учетную запись в группу lpadmin, на локальной машине это делается простой командой:

dseditgroup -o edit -n . -a $USER -t user lpadmin

Если в организации больше одного компьютера, возникает соблазн выполнить ее на всех машинах сразу при помощи Send UNIX Command в Apple Remote Desktop. Однако, если выполнять команду от имени текущего пользователя, то у него не хватит прав для изменения локального каталога. Если же делать это от имени администратора, то в группу lpadmin будет добавлена его учетная запись вместо пользовательской.

Что же делать? В Mac OS X при интерактивном входе в систему создается процесс loginwindow, запущенный от имени пользователя, выполнившего вход. Достаточно найти его в списке процессов, вычленить имя учетной записи, от которой он выполняется, и использовать вместо переменной $USER:

ps aux | grep loginwindow | grep -v grep | awk ‘{ print $1 } ‘ | xargs -I {} dscl . append /Groups/lpadmin GroupMembership {}

Остается только разослать от имени root приведенную выше команду на все 300 компьютеров и навсегда (ха!) забыть о проблемах, связанных с управлением принтерами.

  • Раду

    Маленький нюансик: а что делать с пользователями добавленными после срабатывания команды?
    Что бы забыть на всегда я обычно добавляю группу staff в lpadmin, если комп не в домене, или “DOMAIN\all staff”, если в домене. Это ес-но в системе 10.6.

  • > добавляю группу staff в lpadmin, если комп не в домене, или “DOMAIN\all staff”, если в домене

    Грамотно!
    Раду ты придешь на день рождения Мака?

  • Раду

    Да! Нас вроде целая компания идет: Тиваныч, Адамыч, Бассыч :)

  • andrey.paredes

    Добавляем staff в lpadmin
    dscl . append /Groups/lpadmin NestedGroups ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000014