Сам словил гемора, сам и ответ дам на этот вопрос. В линуксе почти ни хрена не понимаю и пишу для таких же, чтобы в случае чего не мучались.
Дано: компьютер с Ubuntu 10.04, на котором стоит принтер HP P1505. Есть сеть.
Задача - дать доступ к принтеру, чтобы можно было печатать из под Windows.
Примечание: ip-адрес компьютера с Ubuntu - 192.168.4.4. ip-адрес компьютера с Windows - 192.168.0.1. Под линуксом запускается Citrix-клиент и цепляется к винсерверу с Citrix Metaframe. При этом в сессии должен быть настроен локальный (на Ubuntu) принтер. Если кто-то не понял предыдущее предложение: с 192.168.4.4 цепляюсь к 192.168.0.1 в терминале и печатаю на принтер 192.168.4.4. Получается печать по сети.
Итак. Подключиться к принтеру по http у меня не получилось. Пробовал
http://192.168.4.4:631/printers/hp1505 - нет контакта, говорит, что принтера не видит.
Выход: настроить через самбу. Для этого её неплохо бы установить.
Заходим в терминал и начинаем:
sudo -i
вводим пароль рута
apt-get install samba
Не буду описывать всех моих злоключений, вот готовый конфиг smb.conf:
workgroup = WORKGROUP
passdb backend = tdbsam
printing = cups
printcap name = cups
printcap cache time = 750
cups options = raw
logon path = \\%L\profiles\.msprofile
logon home = \\%L\%U\.9xprofile
logon drive = P:
usershare allow guests = Yes
add machine script = /usr/sbin/useradd -c Machine -d /var/lib/nobody -s /bin/false %m$
domain logons = No
domain master = No
security = share
wins support = No
hosts allow = all
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[profiles]
comment = Network Profiles Service
path = %H
read only = No
store dos attributes = Yes
create mask = 0600
directory mask = 0700
guest ok = yes
[users]
comment = All users
path = /home
read only = No
inherit acls = Yes
veto files = /aquota.user/groups/shares/
guest ok = yes
[groups]
comment = All groups
path = /home/groups
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0775
browseable = Yes
guest ok = yes
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
create mask = 0775
directory mask = 0775
guest ok = yes
Заменяем (или правим свой) конфиг в /etc/samba/smb.conf.
Я специально привёл конфиг полностью. Заодно увидите рабочие шары, это тоже бывает актуально.
Перезапускаем самбу командой service smbd restart.
Заработало! Есть шары, некоторые даже открываются. Есть расшаренный принтер. Не забудьте в Администрирование->Печать поставить для принтера "Разрешён" и "Общий доступ". Там же в меню "Сервер" я разрешил печать из интернета. Не знаю, надо ли оно.
Устанавливаем сетевой принтер на другом компьютере, подсовываем драйвера.
Радуемся.....
...
...
...
...
...
...
.....до первой перезагрузки.
После перезагрузки принтер не виден. Это происходит потому-что samba запускается раньше cups и не видит расшаренных принтеров. Решение простое - в консоли пишем:
sudo -i
пароль рута
service smbd restart
И всё работает. Принтер появляется в шаре, можно печатать. Ясное дело, надо быть мазохистом, чтобы каждый раз вручную перезапускать самбу.
Наши действия: с правами рута открываем на запись /etc/init.d/cups и перед строкой exit 0 (в самом конце) добавляем service smbd restart
sudo -i
пароль рута
gedit /etc/init.d/cups
В самом файле это выглядит как:
service smbd restart
exit 0
Перезагружаемся, чтобы удостовериться, что принтер виден сразу после загрузки. У меня всё получилось. Если у вас что-то не вышло, можете спрашивать, только я вряд-ли отвечу что-то внятное. Сам два по пять в линуксе и решение по кускам нашёл на форумах.
Наверняка этот пост поможет кому-то избежать геммороя и красноглазия.
Удачи всем нам!