![]() |
PHP + printerqueue op Linux / *BSD systeem...
Het probleem:
Ik heb hier een printer gedeeld via SAMBA. Op het moment wordt deze gebruikt door 5 Windows 2000 workstations. Nu komt het regelmatig voor dat iemand 50 (of zelfs meer) documenten naar de printer verstuurt en iemand anders graag tussendoor een documentje print. Tot nu toe ben ik dan altijd degene die inlogt op de server en met het commando "lpc topq <printer> <gebruiker>" voorrang verleen aan het document. So far so good, maar ik ben niet meer voor lang onder de week aanwezig en voor de rest kan niemand hier met Linux / *BSD omgaan. Ook lijkt het me beter als dat zo blijft, omdat het niet de bedoeling is dat iedereen hier met de server rotzooit. Het wachtwoord geef ik dus ook niet vrij. Maar hoe stel ik mensen nu in staat eenvoudig voorrang te verlenen aan een document, zonder dat zij directe toegang tot de server hebben? Vanuit hun Windows systeem via een HTML interface (PHP) lijkt me tot nu toe de enigste oplossing :/ Probleem is wel dat het "lpc topq" commando een privileged command is, waardoor het alleen met de super-user werkt *zucht* De oplossing: Wil ik graag horen! http://forum.scholieren.com/tongue.gif http://forum.scholieren.com/biggrin.gif Ik zocht eerst naar een oplossing via SAMBA, want de printer is immers een gedeelde SAMBA printer, maar kon er niets over vinden. Hoe kan ik dit via PHP regelen? |
Bestaat vast wel een tooltje voor. Check FM 'ns.
|
Citaat:
|
Hmmz, bij GoT schijnt het ook niemand te weten... of niemand te boeien, 1 van beide :/
|
Citaat:
|
Citaat:
Mjah, misschien maak ik wel iets leuks http://forum.scholieren.com/wink.gif Ik heb al ideeen voor: 1) Een console programma dat de queue toont en het toelaat voorrang te verlenen en vooral niets anders. Dit vanwege de veiligheid, want het moet als suid-root draaien (vanwege lpc topq). 2) Een PHP interface die deze binary aanstuurt en er een grafisch frontend voor vormt. Na ja, dit wordt weer een lang weekend http://forum.scholieren.com/biggrin.gif Gefeliciteerd trouwens http://forum.scholieren.com/tongue.gif http://forum.scholieren.com/biggrin.gif |
Hmm, Linuxconf heeft een printermodule met queue management http://forum.scholieren.com/eek.gif http://forum.scholieren.com/biggrin.gif
Misschien kan ik die wel isoleren en er een apart programma van maken :/ |
Shit, die kan niet genoeg http://forum.scholieren.com/frown.gif
Zie de sourcecode van de printerqueue manager :/ Dat ding kan amper wat http://forum.scholieren.com/mad.gif |
Ach ja, ik denk dat ik zelf een LPC clone maak met beperkte mogelijkheden, dan lukt het wel http://forum.scholieren.com/biggrin.gif
Main Subroutines Moet te doen zijn http://forum.scholieren.com/smile.gif |
Hmm... de code manipuleert alleen bestanden uit de spooldirectory... dat kan ik misschien ook direct doen :/
|
Haha, hij verandert alleen de timestamp van het betreffende item http://forum.scholieren.com/biggrin.gif
|
Citaat:
|
Citaat:
Ik constateer dingen en leg deze vast, zij het mentaal en / of schriftelijk. Waar ik het maar kwijt kan http://forum.scholieren.com/tongue.gif Update: Kan ik om onnodig werk te voorkomen niet gewoon het lpc programma erin luizen door mezelf voor te doen als root? Het controleert mijn identiteit alleen maar met de getuid() functie namelijk http://forum.scholieren.com/smile.gif Wie weet het? http://forum.scholieren.com/biggrin.gif |
http://forum.scholieren.com/eek.gif WOW wat een mooie monoloog *applaus*
Bedankt voor de felicitatie http://forum.scholieren.com/wink.gif |
Citaat:
Ik denk dat ik zelf een programma moet schrijven dat lpc forked en met seteuid doorgeeft dat hij als caller zelf root is en dan alleen de commando's uitvoert die per se noodzakelijk zijn om de veiligheid enigzins te handhaven. Citaat:
|
Hmm, ik kan hem wel verneuken zodat ik alle permissies heb, maar wordt nog steeds geidentificeerd als user :/
*gaat ff iets op GoT vragen* http://forum.scholieren.com/smile.gif |
Na ja, ik ben er zelf uitgekomen http://forum.scholieren.com/biggrin.gif
In het forkende programma: setuid(geteuid()); En dan op het programma zelf: # chown root.root myprog # chmod +s myprog En daarna werkt het http://forum.scholieren.com/smile.gif De rest is formeel, gewoon uitwerken http://forum.scholieren.com/wink.gif |
Waarom wil je de gebruikers dit zelf laten doen ? Het valt namelijk precies te voorspellen hoe het gaat. Gebruikers weten op een gegeven moment dat dit kan, en gaan dan altijd hun jobjes omhoog pushen.
Ik zou gewoon een shell script bouwen op de server zelf en die laten schedulen. Je kijkt wat er aan opdrachtjes in de queue staat. Aan de hand voor de mtime bepaal je wat de print volgorde is. Heeft 1 bepaalde gebruiker te veel jobs achter elkaar dan touch je een aantal van zijn jobs, zodat ze later uitgeprint worden. -Desecrator |
Citaat:
|
Ik ga er wel een authenticatieproces aanhangen, zodat alleen een paar bevoegde mensen dit kunnen doen (zonder nadere kennis van Linux / *BSD te hebben via webinterface).
|
Het console programma http://forum.scholieren.com/smile.gif
Het volgende wordt een PHP interface die dit programma aanstuurt en dan kom eindelijk in de buurt van wat ik wil. Als mensen nog een manier zien om met dit programma andere systeemcommando's uit te voeren, meldt dit gaarne hier of mail me op mas2401@yahoo.com http://forum.scholieren.com/biggrin.gif |
Alle tijden zijn GMT +1. Het is nu 14:40. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.