Kortare fördröjning vid fel lösenord [LÖST]

Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
Kategoriregler
Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Kortare fördröjning vid fel lösenord [LÖST]

Inlägg 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
Senast redigerad av 1 m!rage, redigerad totalt 12 gånger.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Kortare fördröjning vid fel lösenord

Inlägg 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.
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Kortare fördröjning vid fel lösenord

Inlägg av m!rage »

Man måste kompilera det själv alltså? Så det går inte att ändra i en befintlig installation?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Kortare fördröjning vid fel lösenord

Inlägg 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.
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Kortare fördröjning vid fel lösenord

Inlägg 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?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Kortare fördröjning vid fel lösenord

Inlägg 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.
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Kortare fördröjning vid fel lösenord

Inlägg av m!rage »

Det låter som en bättre idé, hur gör jag det i detta fallet?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Kortare fördröjning vid fel lösenord

Inlägg 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:

Kod: Markera allt

mkdir pam.src
cd pam.src
För att kunna hämta källkoden via pakethanteraren så måste du först installera dpkg-dev:

Kod: Markera allt

sudo apt-get install dpkg-dev
Därefter kan du hämta källkoden så här:

Kod: Markera allt

apt-get source pam
cd pam-*
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:

Kod: Markera allt

sudo apt-get build-dep pam
Sen är det bara att bygga:

Kod: Markera allt

fakeroot debian/rules binary
När det är klart dyker det upp ett eller flera deb-paket i slaskmappen som du sedan installerar som vanligt:

Kod: Markera allt

sudo dpkg -i ../*.deb
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Kortare fördröjning vid fel lösenord

Inlägg av m!rage »

Det var ju inte så svårt :P
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?
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Kortare fördröjning vid fel lösenord

Inlägg 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
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Kortare fördröjning vid fel lösenord

Inlägg 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.
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Kortare fördröjning vid fel lösenord

Inlägg 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
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Kortare fördröjning vid fel lösenord

Inlägg 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.
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Kortare fördröjning vid fel lösenord

Inlägg av m!rage »

Nu har jag läst mig vis :D

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!
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Kortare fördröjning vid fel lösenord [LÖST]

Inlägg 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
Skriv svar

Återgå till "Experimentverkstad"