Geçtiğimiz günlerde ilgilendiğim bir proje de kullanıcıların hepsi printer kullanıyor ancak ERP uygulaması windows tabanlı olduğu için ERP için uygulamasını kullanabilmek için terminal server RDP yapmaktaydılar.
ERP uygulamasından alacak oldukların printleri local PC lerinden almaları gerekiyor hali ile bu durumda bunu çözebilmek için biraz arge yapmak gerekti, öğrendik ki windows print server LPD servisi ile print gönderebilmekte.
Bildiğiniz gibi LPD servisi aslında bir linux servisi, genellikle default da geliyor ancak remote açık değil, yani local de lp komutu ile local de çıktı gönderebilmektesiniz ancak remote dan print gönderebilmek için 515 portunun açık olması gerekir. Biz bu proje de bu portu açarak linux clientların uzaktan print alabilmesini sağladık, sonrasında da Windows print server üzerinden LPD ile printerlerı tanıttık. Böylece RDP yapan kullanıcılar RDP ile baglandıkları Terminal sunucudan print almak istediklerinde kendi printerlarından print alabilir oldular.
Olayın hikaye kısmını anlattıktan sonra gelelim tekniğine, öncelikle client da samba kurulu olmalı, http://localhost:631ile browser den baglanarak administrator menüsü altından printerımızı ekleyelim.
Printer eklendikten sonra printerımızı paylaşıma açmış oluyoruz.
Samba administrator page de “Edit Configuration File” butonu ile configuration dosyası içeriğini aşağıdaki gibi güncelliyoruz.
[notice]
# “$Id: cupsd.conf.in 9407 2010-12-09 21:24:51Z mike $”
#
# Sample configuration file for the CUPS scheduler. See “man cupsd.conf” for a
# complete description of this file.
## Log general information in error_log – change “warn” to “debug”
# for troubleshooting…
LogLevel warn# Deactivate CUPS’ internal logrotating, as we provide a better one, especially
# LogLevel debug2 gets usable now
MaxLogSize 0
# Administrator user group…
SystemGroup lpadmin
# Only listen for connections from the local machine.
Listen localhost:631
Listen /var/run/cups/cups.sock
# Show shared printers on the local network.
Browsing Off
BrowseLocalProtocols CUPS dnssd
# Default authentication type, when authentication is required…
DefaultAuthType Basic
# Web interface setting…
WebInterface Yes
# Restrict access to the server…
<Location />
Order allow,deny
</Location>
# Restrict access to the admin pages…
<Location /admin>
Order allow,deny
</Location>
# Restrict access to configuration files…
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
</Location>
# Set the default printer/job policies…
<Policy default>
# Job/subscription privacy…
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
# Job-related operations must be done by the owner or an administrator…
<Limit Create-Job Print-Job Print-URI Validate-Job>
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
# All administration operations require an administrator to authenticate…
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# All printer operations require a printer operator to authenticate…
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# Only the owner or an administrator can cancel or authenticate a job…
<Limit Cancel-Job CUPS-Authenticate-Job>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
# Set the authenticated printer/job policies…
<Policy authenticated>
# Job/subscription privacy…
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
# Job-related operations must be done by the owner or an administrator…
<Limit Create-Job Print-Job Print-URI Validate-Job>
AuthType Default
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
# All administration operations require an administrator to authenticate…
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# All printer operations require a printer operator to authenticate…
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# Only the owner or an administrator can cancel or authenticate a job…
<Limit Cancel-Job CUPS-Authenticate-Job>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
#
# End of “$Id: cupsd.conf.in 9407 2010-12-09 21:24:51Z mike $”.
#
[/notice]
Bu işlemi tamamladıktan sonra xinetd kurulumu bunu kontrol ediyoruz.
[important]root@k-Sys:~# dpkg -l|grep xinetd
ii xinetd 1:2.3.14-7.1ubuntu1 amd64 replacement for inetd with many enhancements
root@k-Sys:~#
[/important]
Gördüğünüz gibi xinetd kurulu, kurulu olmasaydı, aşağıdaki gibi kurulabilir.
[important]root@k-Sys:~# apt-get install xinetd[/important]
xinetd kurulum adımıda tamam.
Şimdi nmap ile localhost scan ediyorum ve 515 portunun kapalı olduğunu görüyorum.
[important]root@k-Sys:~# nmap localhost
Starting Nmap 6.00 ( http://nmap.org ) at 2013-03-18 09:53 EET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000030s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
[/important]
515 LPD servisine ait portun açışabilmesi için sırası ile aşağıdaki adımları izliyoruz.
[important]
root@k-Sys:~# touch /etc/xinetd.d/cups-lpd
cups-lpd oluşturduktan sonra içeriğini aşağıdaki gibi düzenliyoruz.
service printer
{
socket_type = stream
protocol = tcp
port = 515
wait = no
user = lp
group = sys
passenv =
server = /usr/lib/cups/daemon/cups-lpd
server_args = -o document-format=application/octet-stream
disable = no
}
Değişikliğin geçerli olabilmesi için,
root@k-Sys:~# /etc/init.d/xinetd restart
Nmap ile yeniden kontrol ediyoruz, 515 portu aktif oldu mu?
root@k-Sys:~# nmap localhost
Starting Nmap 6.00 ( http://nmap.org ) at 2013-03-18 09:57 EET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000030s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
515/tcp open printer
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Gördüğünüz gibi 515 portu aktif.
[/important]
Bu işlemden sorna Windwos printer server dan LPD ile printer ekleme işlemini gerçekleştirebiliriz.
Faydalı olabilmesi temennisi ile.
