Права доступа на файлы
По популярному требованию, я включил ниже список прав доступа на интересующие нас файлы на моей системе. Существует несколько более лучших способов сделать это, в идеале использовать только выполнимые файлы со SGID и не делать все подряд SUID root, но это как пришло в моей системе, и это работает для меня. (Довольно откровенно, если ваш производитель даже не может сделать работающий lpd, то вы в опасной поездке).
-r-sr-sr-x 1 root lp /usr/bin/lpr* -r-sr-sr-x 1 root lp /usr/bin/lprm* -rwxr--r-- 1 root root /usr/sbin/lpd* -r-xr-sr-x 1 root lp /usr/sbin/lpc* drwxrwxr-x 4 root lp /var/spool/lpd/ drwxr-xr-x 2 root lp /var/spool/lpd/lp/
В настоящее время lpd должен быть запущен под правами администратора, так что он может быть связан с сервисным портом lp с низким номером. Он должен вероятно быть с UID lp.lp или каким-то после связывания, но я не знаю с каким.
PDQ использует отличную от других схему, не ориентированную на демонов, и поэтому у него другие программы. Только несколько программ имеют установленный бит SUID и владельца администратора, эта программы являются интерфейсом к lpd и называются lpd_cancel, lpd_print и lpd_status; эти программы имеют SUID, потому-что сервера печати Unix требуют отправки запросов с привилегированного порта. Если вам необходимо применять интерфейс bsd-lpd из поставки PDQ только для сетевых принтеров печати таких как адаптеры HP JetDirect или Lexmark MarkNet), то вам не нужно устанавливать бит suid на эти программы.