Sida 1 av 1
Kortare fördröjning vid fel lösenord [LÖST]
Postat: 02 jun 2010, 18:08
av m!rage
Jag stör mig lika mycket varje gång på att jag måste stirra på skärmen i över två sekunder varje gång jag skriver in fel lösenord. Hur gör jag tiden kortare? Jag vill inte ta bort den helt. Hittade en tråd här:
bugg #138654 men jag fattar inte vad man ska göra
Patrick Horn skrev:
* This patch changes the aggrivating 2 second delay to a more pleasant 0.5 seconds. Place this in debian/patches-applied/ and add to debian/patches-applied/series (534 bytes, text/plain)
I don't like having to use nodelay -- I like the fact that it gives a delay when I make a mistake but 2 seconds is just too long.
I would vote for just changing the delay to 0.5 seconds, since this is as simple as changing a constant in pam_unix
patchen:
Kod: Markera allt
Index: pam.deb/modules/pam_unix/support.c
===================================================================
--- pam.deb.orig/modules/pam_unix/support.c 2008-11-16 13:41:55.000000000 -0800
+++ pam.deb/modules/pam_unix/support.c 2008-11-16 13:41:57.000000000 -0800
@@ -610,7 +610,7 @@
#ifdef HAVE_PAM_FAIL_DELAY
if (off(UNIX_NODELAY, ctrl)) {
D(("setting delay"));
- (void) pam_fail_delay(pamh, 2000000); /* 2 sec delay for on failure */
+ (void) pam_fail_delay(pamh, 500000); /* 1/2 sec delay for on failure */
}
#endif
Var ligger filen där jag ska ändra (void) pam_fail_delay? Jag gör det gärna direkt i filen så jag vet att det blir rätt
Re: Kortare fördröjning vid fel lösenord
Postat: 02 jun 2010, 20:58
av Konservburk
m!rage skrev:Var ligger filen där jag ska ändra (void) pam_fail_delay? Jag gör det gärna direkt i filen så jag vet att det blir rätt
Det står uttryckligen högst upp i patchen:
modules/pam_unix/support.c relativt källkodsträdet för
pam. Säg till om du inte vet vad det innebär.
Re: Kortare fördröjning vid fel lösenord
Postat: 02 jun 2010, 22:08
av m!rage
Man måste kompilera det själv alltså? Så det går inte att ändra i en befintlig installation?
Re: Kortare fördröjning vid fel lösenord
Postat: 02 jun 2010, 22:18
av Konservburk
Patchen du hittat ändrar i filen support.c som är källkod skriven i C, dvs kod som måste kompileras. Det är egentligen inget att rygga tillbaka från. Att bygga koden brukar oftast vara lättare än vad man kanske först tror.
Jag vet inte vad du kan om det här, så fråga om allt du inte vet så hjälper jag till.
Re: Kortare fördröjning vid fel lösenord
Postat: 02 jun 2010, 22:22
av m!rage
Tja jag kan det där med ./configure, make och make install men jag har aldrig själv ändrat i källkoden innan jag kompilerat den. Men går det inte åt skogen när nästa uppdatering av pam kommer? Måste jag hålla på och kompilera om allt vid varje uppdatering?
Re: Kortare fördröjning vid fel lösenord
Postat: 02 jun 2010, 22:38
av Konservburk
m!rage skrev:Men går det inte åt skogen när nästa uppdatering av pam kommer? Måste jag hålla på och kompilera om allt vid varje uppdatering?
Det beror på hur du väljer att göra. Laddar du ner källkoden från utvecklarna uppströms och kompilerar helt på egen hand med
./configure && make && sudo make install så hamnar det hela utanför den vanliga pakethanteringen och du måste själv uppdatera om du vill ha en nyare version (eller strunta i att uppdatera om du är nöjd med den versionen du har).
Ett annat alternativ är att använda källkoden från ubuntu förrådet och sköta det hela via pakethanteraren istället.
Re: Kortare fördröjning vid fel lösenord
Postat: 03 jun 2010, 09:02
av m!rage
Det låter som en bättre idé, hur gör jag det i detta fallet?
Re: Kortare fördröjning vid fel lösenord
Postat: 03 jun 2010, 10:33
av Konservburk
Jag har egentligen ingen vidare koll på vad som är att betrakta som "rätt" sätt att sköta sånt här via pakethanteraren eftersom jag inte brukar bry mig om det själv. Jag vet dock hur man kan göra och att den metoden brukar fungera, men jag vet inte om det är tänkt att man ska göra så. Det är därför mycket möjligt att det även finns smidigare och/eller bättre sätt.
När jag gör sånt här så brukar jag börja med att skapa en tillfällig slask-katalog för att inte skräpa ner någon annan stans:
För att kunna hämta källkoden via pakethanteraren så måste du först installera
dpkg-dev:
Därefter kan du hämta källkoden så här:
Nu kommer vi till den mest spännande biten där du ska göra dina egna ändringar i koden. Du kan förstås göra som du själv föreslagit och leta upp rätt fil och ändra direkt i den. Eller så kan du istället applicera patch:en rakt av:
Kod: Markera allt
wget -qO- http://launchpadlibrarian.net/19703722/time_delay.patch | patch -p1
Eller så kan du göra som
Patrick Horn föreslår och lägga patch-filen i katalogen
debian/patches-applied och även lista den i filen
series:
Kod: Markera allt
cd debian/patches-applied
wget http://launchpadlibrarian.net/19703722/time_delay.patch
echo time_delay.patch >> series
cd -
Då kommer patch:en att appliceras under byggprocessen. Var dock noga med att du inte gör på fler än ett av dessa sätt eftersom det blir problem ifall man försöker dubbelpatch:a av bara farten.
Innan du kan bygga alltihop så måste du se till så att alla bygg-beroenden är installerade:
Sen är det bara att bygga:
När det är klart dyker det upp ett eller flera deb-paket i slaskmappen som du sedan installerar som vanligt:
Re: Kortare fördröjning vid fel lösenord
Postat: 03 jun 2010, 21:16
av m!rage
Det var ju inte så svårt

Visserligen är det fortfarande 4 sekunders väntan om jag skriver fel vid inloggningen men sudo och låsa upp datorn går mycket fortare. Av någon anledning får man bara en chans att starta ett grafiskt program som root, skriver man fel måste man starta programmet igen. Men det får duga ändå. Vad kommer hända nästa gång det kommer en uppdatering av pam?
Re: Kortare fördröjning vid fel lösenord
Postat: 11 jul 2010, 10:34
av m!rage
Jag fick svar på det själv av apt. Den tycker att mitt bygge är sämre än det som finns i förrådet och vill därför "uppdatera" till samma version. Ska man låsa den versionen som finns efter att jag installerat min?
Hur gör jag sedan för att uppdatera källkoden? Körde
Kod: Markera allt
$ apt-get source pam
Läser paketlistor... Färdig
Bygger beroendeträd
Läser tillståndsinformation... Färdig
OBSERVERA: "pam"-paketering underhålls i versionshanteringssystemet "Bzr" på:
https://code.launchpad.net/~ubuntu-core-dev/pam/ubuntu
Använd:
bzr get https://code.launchpad.net/~ubuntu-core-dev/pam/ubuntu
för att hämta senaste (möjligen inte utgivna) uppdateringar av paketet.
Hoppar över redan hämtade filen "pam_1.1.1.orig.tar.gz"
Behöver hämta 240kB källkodsarkiv.
Läs:1 http://se.archive.ubuntu.com/ubuntu/ lucid-updates/main pam 1.1.1-2ubuntu5 (dsc) [1 636B]
Läs:2 http://se.archive.ubuntu.com/ubuntu/ lucid-updates/main pam 1.1.1-2ubuntu5 (diff) [239kB]
Hämtade 240kB på 2s (114kB/s)
Packar inte upp redan uppackad källkod i pam-1.1.1
Så något verkar ha uppdaterats. Hur gör jag sedan för att bygga om?
Kod: Markera allt
$ fakeroot debian/rules binary
dh binary --with quilt
Re: Kortare fördröjning vid fel lösenord
Postat: 11 jul 2010, 20:14
av Konservburk
Den verkar ju åtminstone försöka hämta senaste versionen av källkoden. Jag tror att det räcker om du därifrån fortsätter in i källkodskatalogen och patchar/bygger precis som förra gången. DVS börja från cd pam-* och fortsätt som förra gången. Du kan ju förstås skippa biten med build-dep.
Re: Kortare fördröjning vid fel lösenord
Postat: 12 jul 2010, 16:08
av m!rage
Jag provade det men det verkar inte som att den kompilerar om någonting. Måste man göra någon slags make clean först? Och hur gör jag för att den ska låta bli att uppdatera pam sen, att "låsa versionen" i Synaptic gjorde ingen skillnad
Re: Kortare fördröjning vid fel lösenord
Postat: 12 jul 2010, 16:17
av Konservburk
m!rage skrev:Jag provade det men det verkar inte som att den kompilerar om någonting. Måste man göra någon slags make clean först?
Kanske? Annars kan du ju alltid ta bort källkodsmappen sedan göra om alla stegen helt från början.
m!rage skrev:Och hur gör jag för att den ska låta bli att uppdatera pam sen, att "låsa versionen" i Synaptic gjorde ingen skillnad
Jag brukar inte blanda in pakethanteraren när jag bygger från källkod, så jag vet faktiskt inte, men jag antar att det går.
Re: Kortare fördröjning vid fel lösenord
Postat: 12 jul 2010, 23:21
av m!rage
Nu har jag läst mig vis
Kod: Markera allt
...
Hoppar över redan hämtade filen "pam_1.1.1.orig.tar.gz"
Behöver hämta 240kB källkodsarkiv.
Läs:1 http://se.archive.ubuntu.com/ubuntu/ lucid-updates/main pam 1.1.1-2ubuntu5 (dsc) [1 636B]
Läs:2 http://se.archive.ubuntu.com/ubuntu/ lucid-updates/main pam 1.1.1-2ubuntu5 (diff) [239kB]
Hämtade 240kB på 2s (114kB/s)
Packar inte upp redan uppackad källkod i pam-1.1.1
Tarbollen med källkod uppdateras, men schysst som den är så skrivs inget över i mappen med den redan uppackade koden. Först måste jag köra en "make clean":
Kod: Markera allt
cd src/pam
rm -r pam-1.1.1
apt-get source pam
Det behåller smidigt nog tarbollen så att den därefter kan packas upp utan att behöva laddas ner igen. Sen la jag dit patchen igen:
Kod: Markera allt
cd debian/patches-applied
wget http://launchpadlibrarian.net/19703722/time_delay.patch
echo time_delay.patch >> series
cd -
Här kommer lösningen på uppdateringsproblemet: Jag läste en ganska bra förklaring i
bugg #197682 till varför apt vill "uppdatera" paketet till samma version efter att det installerats från en hemmakompilering. Tydligen är det på grund av att hash-summan inte stämmer mot paketet i förråden.
Om man vill kompilera om ett paket med samma version ska man höja versionsnumret i debian/changelog. För
pam-1.1.1-2ubuntu5 ändrade jag versionen till
pam-1.1.1-2ubuntu5.1
Därefter var det bara att bygga och installera:
Kod: Markera allt
fakeroot debian/rules binary
cd ..
sudo dpkg -i *.deb
Och uppdateringshanteraren verkar vara nöjd! Det får räcka för tillfället.
Hoppas det hjälper någon!
Re: Kortare fördröjning vid fel lösenord [LÖST]
Postat: 06 nov 2011, 13:23
av m!rage
Det finns bättre sätt för att göra samma sak, och eftersom den här tråden har varit min kom ihåg-lapp det senaste året kan jag lika gärna uppdatera den. Först och främst installerar man paketet
apt-build som är beroende av alla andra paket man behöver. Därefter installerar man byggberoenden med
apt-get build-dep, hämtar källkoden med
apt-get source och lägger in patchen på samma sätt som beskrivet tidigare i tråden. Sedan använder man lämpligtvis verktyget
dch för att sätta en kråka i changelogen och öka versionsnumret ett snäpp.
dch använder miljövariablerna DEBFULLNAME och DEBEMAIL för att hålla koll på vem man är. Efter det bygger man alltihop med kommandot
debuild. När allt är klart får man möjlighet att signera de färdiga paketen med sin PGP-nyckel. För att installera dem kör står man kvar i källkodsträdet och kör
debi som root, alltså
sudo debi i Ubuntu.
Svårare än så är det inte och när man väl fått kläm på det tar det bara några få minuter att patcha bort saker man stör sig på i sitt system, förutsatt att någon annan råkat ut för samma sak tidigare och skrivit en patch som åtgärdar/kringgår problemet. Nästan lika enkelt är det att bygga och installera en nyare version av ett program än det som finns i ens distributions förråd, utan att använda fulhack som checkinstall och liknande. Vill man göra det riktigt,
riktigt rätt kan man använda
debuild -S för att generera ett källkodspaket som man bygger med
pbuilder. Då blir dessutom alla beroenden rätt och ens färdiga paket kan även distribueras till andra system. Mycket information om hur man paketerar för Debian och Ubuntu finns här:
https://wiki.ubuntu.com/PackagingGuide/Complete