van egy CUPS kiszolgáló, amin authenticated policy-vel futnak a nyomtatók.
* cli parancsok bekérik a jelszót: lpstat, lpq, ... (igaz a usernevet nem, így nem tudom magam más névvel azonosítani mint a login nevem)
* GTK3-as programok a nyomtatás panelnél rendesen bekérik a usernevet, jelszót.
* GTK2-es programok nem kérnek be semmit, nem urgik fel a user/pass dialog, hanem megállás nélkül üres jelszót küldenek a cups szervernek.
hogyan lehet rávenni a gtk2-t hogy kérjen be bejelentkezési adatokat?
gyanítom, hogy a libprintbackend-cups.so (debiánban /usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/printbackends alatt), felel érte. beleírtam, beforgattam, nyomtam ldconfig-ot is, de nem látszik hogy az új libet használnák a programok.
pluszpontért: hogyan lehet rávenni a cli-s programokat, hogy másik usernevet használjanak mint a login nevem? néztem strace-szel a rendszerhívásokat, nem environmentből veszi...
cupsd.conf:
Listen 0.0.0.0:631
DefaultEncryption Never
ServerTokens ProductOnly
WebInterface On
KeepAlive On
KeepAliveTimeout 60
Timeout 15
DirtyCleanInterval 0
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseRemoteProtocols CUPS DNSSD
BrowseAddress @LOCAL
BrowseLocalProtocols CUPS DNSSD
BrowseWebIF Off
DefaultAuthType Basic
MaxJobsPerUser 3
DefaultPolicy authenticated
DefaultShared Yes
< Location / >
Order allow,deny
Allow all
Require valid-user
Satisfy all
< /Location>
< Location /admin >
Order deny,allow
Allow all
Require group lpadmin
Satisfy all
< /Location >
< Policy authenticated >
JobPrivateAccess @OWNER @SYSTEM @lpadmin
JobPrivateValues job-name job-originating-host-name job-originating-user-name
SubscriptionPrivateAccess @OWNER @SYSTEM @lpadmin
SubscriptionPrivateValues notify-events notify-pull-method notify-recipient-uri notify-subscriber-user-name notify-user-data
< Limit Create-Job Print-Job Print-URI >
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 CUPS-Move-Job CUPS-Get-Document Cancel-My-Jobs >
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
< /Limit >
< 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 >
< 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 CUPS-Accept-Jobs CUPS-Reject-Jobs >
AuthType Default
Require user @SYSTEM
Order deny,allow
< /Limit >
< Limit Cancel-Job Cancel-Jobs CUPS-Authenticate-Job Close-Job Validate-Job >
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
< /Limit >
< Limit All >
AuthType Default
Order deny,allow
< /Limit >
< /Policy >
releváns printers.conf részlet:
AuthInfoRequired username,password
Accepting Yes
Shared Yes
AllowUser @lp
OpPolicy authenticated
~/.cups/client.conf -ban meg van adva a cups szerver címe.
logban ez ismétlődik:
Dec 17 10:28:00 cupsd[15655]: cupsdAcceptClient: 13 from xxx.xxx.xxx.xxx:631 (IPv4)
Dec 17 10:28:00 cupsd[15655]: cupsdReadClient: 13 POST / HTTP/1.1
Dec 17 10:28:00 cupsd[15655]: cupsdSetBusyState: newbusy="Active clients", busy="Not busy"
Dec 17 10:28:00 cupsd[15655]: cupsdAuthorize: Empty Basic password!
Dec 17 10:28:00 cupsd[15655]: cupsdReadClient: 13 1.1 CUPS-Get-Printers 1
Dec 17 10:28:00 cupsd[15655]: CUPS-Get-Printers
Dec 17 10:28:00 cupsd[15655]: cupsdIsAuthorized: username=""
Dec 17 10:28:00 cupsd[15655]: Returning HTTP Nem jogosult for CUPS-Get-Printers (no URI) from xxx.xxx.xxx.xxx
Dec 17 10:28:00 cupsd[15655]: REQUEST xxx.xxx.xxx.xxx - - "POST / HTTP/1.1" 401 433 CUPS-Get-Printers successful-ok
Dec 17 10:28:00 cupsd[15655]: cupsdSendHeader: 13 WWW-Authenticate: Basic realm="CUPS"
Dec 17 10:28:00 cupsd[15655]: cupsdReadClient: 13 WAITING Closing on EOF
Dec 17 10:28:00 cupsd[15655]: cupsdCloseClient: 13
Dec 17 10:28:00 cupsd[15655]: cupsdSetBusyState: newbusy="Not busy", busy="Active clients"
- 1506 megtekintés
Hozzászólások
helyesbítek, használja a libprintbackend-cups.so -t, csak rossz helyre szúrtam bele a debug kiiratást.
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
a'szem megtaláltam a fícsört a gtk-2 forrásában:
gtk+-2.24.10/modules/printbackends/cups/gtkcupsutils.c
/* Very ugly hack: cups has a stupid synchronous password callback
* that doesn't even take the request or user data parameters, so
* we have to use a static variable to pass the password to it.
* Not threadsafe !
* The callback sets cups_password to NULL to signal that the
* password has been used.
*/
static char *cups_password;
static char *cups_username;
static const char *
passwordCB (const char *prompt)
{
char *pwd = cups_password;
cups_password = NULL;
cupsSetUser (cups_username);
return pwd;
}
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
gtk+-2.24.10 -et nézem, ez csak jelszó nélküli CUPS-on keresztül tud nyomtatni.
üres sztringet küld jelszóként és kész, de azt megállás nélkül küldi.
készítettem egy patch-et, ami a CUPS_ASKPASS env-ben megadott segédprogramot hívja a cups jelszó megszerzéséhez.
egy jó válasz (IPP 200) után lementi static változóba a jelszót és később azzal próbálkozik.
ui. még jó hogy nem raktam fail2ban-t a cups naplóra.
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni