Re: Environment variabler

From: Lasse Hillerøe Petersen (none@lhp--toft-hp.dk.lh.bsd-dk.dk)
Date: Tue 18 Apr 2006 - 23:29:18 CEST


To: bsd-dk@bsd-dk.dk
Subject: Re: Environment variabler
From: Lasse Hillerøe Petersen <none@lhp--toft-hp.dk.lh.bsd-dk.dk>
Date: Tue, 18 Apr 2006 23:29:18 +0200 (CEST)


Kristen Nielsen <none@krn--krn.dk.lh.bsd-dk.dk> skrev:

>Jette wrote:
>>>
>> Vil det sige at det ikke kan lade sig gøre at sætte environment
>> variabler for brugere der ikke har en shell eller et login?

>Pr. definition er der ikke noget i en unix maskine der udføres uden at
>det tilhører en bruger/UID

Kernen kører vel i en eller anden forstand med privilegier der er
"stærkere" end root? Men ellers er det vel helt rigtigt. Derudover er
det jo heller ikke muligt at have en bruger uden en shell (hvordan skal
login i det hele taget forstås? brugernavn?), et homedirectory, eller
et password. Disse ting kan blot være noget som ikke er "normale" - et
passwordfelt der er "*" er fx "umuligt" at indtaste og derfor effektivt
som "denne bruger kan ikke logge ind med password" spærring. (Men det
forhindrer ikke nødvendigvis fx login med ssh.) Og en shell der ikke er
en kommandofortolker kan bruges til at udføre et enkelt program.

Derudover er det nok mere interessant, at environ(7) er en måde hvormed
en proces kan videresende et sæt af strenge (jeg havde nær sagt
variable) til en anden proces, ud over argv. At der så er en konvention
som gør at dette sæt af strenge i praksis er på formen
"navn=værdi", og at disse variable har en speciel rolle i shell'er er
så mindre relevant.

Det er nok de færreste der faktisk tænker på, at shell'er ikke er
anderledes end alle andre programmer, set fra Unix' *systemets* side. Det
eneste program der vel kan siges at være lidt anderledes, er nok init.
Det er i hvert fald mig bekendt den eneste proces der ikke arver sit environ
fra en anden.

Og ps auxwwe her på NetBSD indikerer at environ er tom for init.

Derudover kan et velplaceret printenv i .profile vise at der er sat ganske
få ting ved start af en login-shell. Hvor sættes disse? Sjovt nok i
login(1) processen, iflg man-siden for samme.

Man kan verificere dette med chsh -s /usr/bin/printenv (tilføj printenv
til /etc/shells først) og så køre
env -i login
(Husk at have en xterm åben til at sætte det hele tilbage igen.)

Jeg kender nul og en dyt til Windows, men jeg formoder at ting virker så
meget anderledes der, at det har medvirket til at forvirre Jette. Er
environment ting som PATH i Windows system-globale eller bruger-globale?
(Nej, jeg vil faktisk ikke vide det.)

-Lasse



This archive was generated by hypermail 2b30 : Wed 15 Nov 2006 - 18:24:58 CET