
Want Dijkie heeft uw hulp nodig met het volgende:
Ik probeer in Debian Linux de boel zo geregeld te krijgen, dat waneer leden van de groep "familie" inloggen, bash automagisch het programma MC (Midnight Commander) start.
Het liefst regel ik dat centraal in /etc/profile, zodat ik niet voor iedere gebruiker van de familiegroep zijn ~/.bashrc hoef aan te passen. Ik neem aan dat er een if-statement aan te pas moet komen, maar heb daar weinig ervaring mee.
Dus.... welke internetheld helpt me uit de brand?
Ik probeer in Debian Linux de boel zo geregeld te krijgen, dat waneer leden van de groep "familie" inloggen, bash automagisch het programma MC (Midnight Commander) start.
Het liefst regel ik dat centraal in /etc/profile, zodat ik niet voor iedere gebruiker van de familiegroep zijn ~/.bashrc hoef aan te passen. Ik neem aan dat er een if-statement aan te pas moet komen, maar heb daar weinig ervaring mee.
Dus.... welke internetheld helpt me uit de brand?
Dus, aldus: Ik mis de BBQ...
cspr, drukt van zich af: Dit is gebaseerd op een lied van Hank Williams: In...
Witjoekel Vilmer: Heh, nee Palermo is een beetje te ver weg voor een ...
biermeester: Waar is de "Wat is dit voor klotenmaaltijd?" /seth?
fishbowl: Haha, NSFA en dan de foto's in de pots potsen. *ac...
Geenszins Joling: Ook dit is weer blof (met streepje door de o)!
Jack Random: JAAA, bij Deaf op de boerderij in Zeeland kamperen,...
Geenszins Joling: En dat was @ gronk natuurlijk
Geenszins Joling: Dat heb ik twee jaar geleden al gedaan maar hij is ...
Jack Random: Echt, ik vind dat zo ironisch. Je moet verplicht sp...
Totaal aantal: 1631
Waaronder de leden:
NCRV - Debat op 2 Het neefje van Tofik lewax DDWW, Steampimp. Milkwood Witjoekel Vilmer Jack Random fishbowl inloggen en registreren riks Hayo Beckman Draken. Ketsman Tralala grijpstra Vriendhenk raxx TheDeadDude alcoolo Count Spatula WitPaard Swanfeather Wildplasser, beroepsweig baca gronk Gekke Tonnie globalriot Beerdje MadDieu, 9th son of Cain h00tster Geenszins Joling Frisco HarryP cspr, drukt van zich af TheStef Monade - category B trai 0Mostel biermeester Kret-209 Der Webmeister Dus, aldus koffieverkeerd Wanko
NCRV - Debat op 2 Het neefje van Tofik lewax DDWW, Steampimp. Milkwood Witjoekel Vilmer Jack Random fishbowl inloggen en registreren riks Hayo Beckman Draken. Ketsman Tralala grijpstra Vriendhenk raxx TheDeadDude alcoolo Count Spatula WitPaard Swanfeather Wildplasser, beroepsweig baca gronk Gekke Tonnie globalriot Beerdje MadDieu, 9th son of Cain h00tster Geenszins Joling Frisco HarryP cspr, drukt van zich af TheStef Monade - category B trai 0Mostel biermeester Kret-209 Der Webmeister Dus, aldus koffieverkeerd Wanko

Aantal posts: 520
Aantal reacties: 6840
Aantal posts: 292
Aantal reacties: 11944
Aantal posts: 520
Aantal reacties: 6840
Aantal posts: 46
Aantal reacties: 10627
Aantal posts: 54
Aantal reacties: 5658
Aantal posts: 1
Aantal reacties: 436
familie=`/usr/bin/groups|grep familie|wc -l`
if
[ ${familie} -eq 1 ]
then
zet hier pad en commando naar keuze
fi
Aantal posts: 1
Aantal reacties: 436
dus je moet een exacte grep doen op de group
dit door een -w te geven
familie=`/usr/bin/groups|grep -w familie|wc -l`
Aantal posts: 520
Aantal reacties: 6840
Aantal posts: 520
Aantal reacties: 6840
-bash: [/usr/bin/groups: No such file or directory
Aantal posts: 18
Aantal reacties: 25934
Aantal posts: 520
Aantal reacties: 6840
grep -w familie /etc/group | grep $USER | wc -l
Aantal posts: 520
Aantal reacties: 6840
Aantal posts: 520
Aantal reacties: 6840
Aantal posts: 40
Aantal reacties: 11546
Maar de vraag is of de hele familie samen in een groep (=lusers) zit, en op die manier te filteren is?
Redelijk basismateriaal is soms te vinden in /etc/profile.d/*
Aantal posts: 520
Aantal reacties: 6840
Aantal posts: 40
Aantal reacties: 11546
#!/bin/sh
# Fourth field := (numerical) groupid
DIJKZUSSEN=`getent passwd $USER | cut -f 4 -d :`
# echo $DIJKZUSSEN
[ $DIJKZUSSEN -ne 6969 ] && exit
/path/to/mc &
# Eof
Aantal posts: 520
Aantal reacties: 6840
Ik heb nu zelf het volgende bedacht:
CHECK_GROUP='grep -w familie /etc/group | grep $USER | wc -l'
if [${CHECK_GROUP} -eq 1]
then
mc
fi
Als ik "grep -w familie /etc/group | grep $USER | wc -l" vanaf de commandline uitvoer, komt er netjes "1" uit, maar vanuit het script werkt het niet, dus ik doe vast iets fout, maar wat?
Aantal posts: 40
Aantal reacties: 11546
man getent
man 5 passwd
man 1p sh
In het kort :
Aantal posts: 292
Aantal reacties: 11944
20 GOTO 10
Aantal posts: 40
Aantal reacties: 11546
Aantal posts: 520
Aantal reacties: 6840
Aantal posts: 103
Aantal reacties: 4639
Aantal posts: 394
Aantal reacties: 14943
Aantal posts: 2
Aantal reacties: 4734
Of is het iLinux?
Aantal posts: 520
Aantal reacties: 6840
Aantal posts: 520
Aantal reacties: 6840
Aantal posts: 86
Aantal reacties: 6850
Aantal posts: 29
Aantal reacties: 6316
Aantal posts: 520
Aantal reacties: 6840
Aantal posts: 45
Aantal reacties: 4304
OMFG. Krijg je ook ooit les waarom je nooit meerdere keren grep enzo voor dit zulk ongein aanroept, of wordt er vanuit gegaan dat dit op de werkvloer er vakkundig uit wordt geslagen?
Hint 1: Bij het opstarten van een nieuw proces, zoals een shell, wordt de proceseigenaar een gegeven moment de user, zeg DijkiesZus, en is lid van een groep, zeg DijkiesZussen (groep 6969).
Hint 2: Je kunt dan de user-id en de group-id opvragen met een standaard Posix commando:
[ $(id -g) == 6969 ] && /VOLLEDIGPADNAAR/mc
of
[ $(id -gn) == "DijkiesZussen" ] && /VOLLEDIGPADNAAR/mc
Aantal posts: 45
Aantal reacties: 4304
==maar-eqzijn./UNDO
Aantal posts: 520
Aantal reacties: 6840
Ik heb het inderdaad met het id -Gn commando gedaan, alleen heb ik er nog een if-statement omheen gezet.
Bleek dat het steeds niet werkte omdat ik hier en daar een spatie was vergeten. D'oh!
Aantal posts: 45
Aantal reacties: 4304
/Jaren 70 software is fan-taaastisch!
Aantal posts: 394
Aantal reacties: 14943
Tabs FTW!
Aantal posts: 292
Aantal reacties: 11944
Aantal posts: 292
Aantal reacties: 11944
Aantal posts: 45
Aantal reacties: 4304
/Aan het sparen voor een Android tablet én een iPad2
Aantal posts: 90
Aantal reacties: 10860
Als je hier al van in de war raakt moet je misschien je schoolgeld terugvragen.
Wat ik bedoel te vragen: wat heb je vooraf allemaal voor truuks van school geleerd en wat heb je zelf in elkaar geknutseld en dus: wat heb je nu feitelijk geleerd?
/VAN MIJN BELASTINGCENTEN!
Aantal posts: 41
Aantal reacties: 4975
Aantal posts: 40
Aantal reacties: 11546
zo dijkmans, ga dat maar aan je onderwijzer uitleggen!
snotneus.
Aantal posts: 40
Aantal reacties: 11546
Aantal posts: 45
Aantal reacties: 4304
Precies, maar die syntax is shell-afhankelijk en ik doe dit semi-quasi uit mijn hoofd. Environment variables zijn beterder en snellerder, maar Posix 's id en BSD's whoami zouden bijna overal moeten werken na het jaar 2000.
Oh, en @Monade $(id) voor een subproces is een bash-isme. De echte bourneshell heeft backticks nodig.
Nou, volgens mij heeft de post-1985(?) Bourne shell al $(), maar ik kan het nu niet controleren, want alles is nog steeds in opslag. Ik heb hier alleen een ouwe laptop met Windows XP. (Free|Net|Open)BSD's sh snapten $() al in 1994, en zelfs SunOS 4.x sh en ksh snappen $(), dacht ik.
/Een Sun, een Sun! Mijn koninkrijk voor een Sun!
Aantal posts: 40
Aantal reacties: 11546
Ik had het moeten opzoeken. (dit was een hint voor Dijkie)
Aantal posts: 40
Aantal reacties: 11546
De meeste shells in X-windows enzo zijn dochtershellen, maar hebben wel de environment geerfd.
Aantal posts: 41
Aantal reacties: 4975
Aantal posts: 40
Aantal reacties: 11546
Aantal posts: 41
Aantal reacties: 4975
Aantal posts: 2
Aantal reacties: 4734
(hebben we die ook weer gehad)
Aantal posts: 1
Aantal reacties: 436
Het is altijd aanbevolen het volledige pad op te geven in je script.
dus niet alleen maar mc
maar bijvoorbeeld /usr/local/bin/mc
je hebt kans dat het niet werkt omdat het commando niet gevonden word;
Aantal posts: 1
Aantal reacties: 436
CHECK_GROUP='grep -w familie /etc/group | grep $USER | wc -l'
echo ${CHECK_GROUP}
if [${CHECK_GROUP} -eq 1]
then
mc
fi
Aantal posts: 90
Aantal reacties: 10860
Lees eerst deze pagina eens even goed door: Award-winning "Useless use of <shellcommand>" verzameling met links naar nog meer useless-use-of-shellcommand pages.
http://partmaps.org/era/unix/award.html
Aantal posts: 0
Aantal reacties: 512
In de afdeling klassiekers wil ik er dan ook nog wel eentje posten:
The case of the 500 mile e-mail
Want Dijkie doet Linus, en dat is wel een linkje waard.
Aantal posts: 0
Aantal reacties: 512
Aantal posts: 45
Aantal reacties: 4304
/Zwijgt.
Aantal posts: 0
Aantal reacties: 512
IPL'en Monade, IPL'en. Dat moet je doen. Broekie!
Aantal posts: 45
Aantal reacties: 4304
/IBM: you can find better, but you can't pay more.
Aantal posts: 0
Aantal reacties: 512
En Elektrologika.... *neemt hoed af uit repsect voor een echte kenner*
Aantal posts: 45
Aantal reacties: 4304
/En dmr is ook al dood. Gave gast. Postte jarenlang in alt.folklore.computers.
Aantal posts: 394
Aantal reacties: 14943
Aantal posts: 0
Aantal reacties: 1042
Het simpelst is volgens mij:
groups|egrep -q ' familie( |$)'
Let wel: ik gebruik "egrep" omdat ' familie\( \|$\)' er zo lelijk uitziet.
Maar eh, niet om het een of ander: als je "mc" in /etc/profile zet, dan wordt mc onderdeel van de startup-sequence van Bash. Dus stop je dan mc, dan krijg je alsnog de shell voor je neus. Waarom verander je de login-shell niet, voor iedereen die lid is van "familie"?
for user in `getent group familie|cut -f4 -d:|tr , " "`; do chsh -s `which mc` $user; done
Aantal posts: 40
Aantal reacties: 11546
# nou jij weer.
Aantal posts: 0
Aantal reacties: 512
/proberen gaat
Aantal posts: 0
Aantal reacties: 512
Aantal posts: 40
Aantal reacties: 11546
Aantal posts: 41
Aantal reacties: 4975
Aantal posts: 0
Aantal reacties: 1042
@wokboy knap, dat je ("Hee, wat zou er gebeuren als ik mc als shell in de passwd file zet?") het toch nog als een eigen uitvinding weet te presenteren!
Aantal posts: 40
Aantal reacties: 11546
Heb ooit een programmeer-column gelezen over ofzo. Daar valt dit ook onder: niet eerst testen of het kan, maar gewoon meteen doen, en naar de return/exit code kijken. Het is handig om als adagium in het hoofd te houden.
Grappig bij dit soort topics is trouwens dat er vele wegen naar Rome leiden, en dat we er nu pas na twee dagen achter komen wat het elegantst of meest geschikt is. Kan je op je werk ook je voordeel mee doen: regelmatig af en toe een uurtje met iemand meedenken (en wederzijds), kom je vanzelf op nieuwe ideeen. (en begin niet over agile of team progamming of scrum of meer van dat soort PHB onzin, het is gewoon common sense. /rant)
En MC is een lutser-magneet, laat dat duidelijk zijn.
Aantal posts: 45
Aantal reacties: 4304
Oooh, Nifty! Behalve dat je de exit code moet checken op fail en dat het mogelijk is dat newgrp vraagt om het invoeren van een passwd, zie ik in man newgrp op een remote Lienoeksbak bij DDS.
Midnight Commander is trouwens een GNU-security GNU-hole Gnu-waiting GNU happn, dus iedereen die dat in /etc/shells zet verdient het om geroot te worden.
Gewone users die lid kunnen zijn van meerdere groups is trouwens een scherpe opmerking @Valentijn. Persoonlijk zou ik kiezen voor een for-lus over de resulterende array, maar ja, ik ben een Bourne-shell-weenie.
/Mijn Unix-neuronen beginnen weer op te spelen EN DAT IS JULLIE SCHULD !!1!
Aantal posts: 40
Aantal reacties: 11546
Damn... lastig. back to the ol' drawing board ...
Aantal posts: 40
Aantal reacties: 11546
Aantal posts: 45
Aantal reacties: 4304
/En gelukkig maar!
Aantal posts: 40
Aantal reacties: 11546
Ik begrijp hieruit dat er dan niet geprompt wordt. Dat levert dus de oplossing: maak een groep midnightdijkiesisters aan metzonder password, en stop alle dijkiesisters en andere distributiecentraeigenaressen er in.
Dan zou
newgrp zussen 2>/dev/null && exec /luser/bint/mcdus de trick motte doen.
Aantal posts: 90
Aantal reacties: 10860
De gebruiker/ster hoeft de gewenste groep niet als primaire groep te hebben. De test checkt of de huidige $LUSER in de target groep zit. Zo ja, exec dan into "mc" (en wat WP daar zegt over lutsermagneet!)
if [ -n "`id | sed -n '/(zussen)/p'`" ]; then exec /luser/bint/mc; fiAantal posts: 40
Aantal reacties: 11546
We hadden het hier dus over unix-achtigen.
FWIW: mijn newgrp-hack werkt dus niet als zussen de default (en/of huidige) groep is, hij gaat toch prompten. raarrrr.
Aantal posts: 90
Aantal reacties: 10860
Maar ik vond de toevoeging "ZAK" in het Nederlands altijd zo leuk associëren met voornoemd sissy-os.
Mijn ZAK-versie werkt gewoon op alle posixen. ("ksh" op OpenBSD, op Mac OSX (niet zo surprising), bash op Lienoeks ...)
Aantal posts: 0
Aantal reacties: 1042
id|grep -q '(zussen)' && exec /..../... niet goed?
@wokboy, @@wokboy & @wildplasser: mc als shell zou gewoon moeten werken. Je kunt als luser je shell overigens niet wijzigen als de nieuwe shell niet in /etc/shells staat. Waarom Wokboy niet meer kan inloggen als 'ie z'n shell wijzigt, weet ik niet, het lijkt op een typo. Ik kan zelf althans niets vinden dat erop wijst dat "login" de /etc/shells zou nalopen. Het commando chsh doet dat wel.
Ik heb overigens medelijden met de familie van Dijkie zeg. Wat een partij brakke rommel is dat mc. Voorwaarts, op naar 1985. Misschien kun je ze dosemu als shell geven, met Norton Commander erop? Dat werkt ongeveer even goed maar het oogt misschien nog net wat vertrouwder. Voor opa en oma dan.
Aantal posts: 40
Aantal reacties: 11546
Aantal posts: 45
Aantal reacties: 4304
Aantal posts: 54
Aantal reacties: 5658
Aantal posts: 45
Aantal reacties: 4304
Aantal posts: 0
Aantal reacties: 1042
Aantal posts: 520
Aantal reacties: 6840
Aantal posts: 292
Aantal reacties: 11944
Aantal posts: 90
Aantal reacties: 10860
@Valentijn: hmmmm, de "grep -q" kende ik nog niet, kijk zo leer je nog eens wat. Dat gestuntel met sed was om eigenlijk juist dat te doen: testen op succesvolle match. Dnak!
Voor sommige gebruikers gebruik ik gewoon "/bin/false" als shell, werkt prima - dus "mc" moet ook kunnen. Handig voor alleen authorisatiechecks. Je kunt namelijk als hacker 100x het juiste wachtwoord weten maar niet inloggen op de machine.
Aantal posts: 40
Aantal reacties: 11546
@Marjolein: dat kan ook met /bin/date heeft die hekkert ook iets om naar te kijken.
(schrijft ie trouwens ook utmp/wtmp records ?)