/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
bash - checke fil/link rettigheder
Fra : Michael Jenner


Dato : 04-06-02 22:18

Er det muligt med et bash-script at checke om en given bruger / gruppe
ID har adgang til at læse en fil i et katalog. Scriptet skal køres af root.

Mvh Michael



 
 
Thomas Bjorn Anderse~ (04-06-2002)
Kommentar
Fra : Thomas Bjorn Anderse~


Dato : 04-06-02 23:27

Michael Jenner <mj@kom.auc.dk> writes:

> Er det muligt med et bash-script at checke om en given bruger / gruppe
> ID har adgang til at læse en fil i et katalog. Scriptet skal køres af
> root.

Prøv at kigge lidt på man 2 access.

Husk at et filsystem kan anvende ACLs, så det er ikke nok blot at
kigge på outputtet fra ls(1).

--
Thomas Bjorn Andersen - tba@gen-v.net
+++ATH

Thorbjoern Ravn Ande~ (04-06-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 04-06-02 23:42

Michael Jenner <mj@kom.auc.dk> writes:

> Er det muligt med et bash-script at checke om en given bruger / gruppe
> ID har adgang til at læse en fil i et katalog. Scriptet skal køres af
> root.

Fra et bash-script vil du oftest bruge "test" (også kaldet "["), og
den kan kun teste på effektiv bruger/gruppeid. Kan du køre scriptet
som den bruger der skal testes på?
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus

Michael Jenner (04-06-2002)
Kommentar
Fra : Michael Jenner


Dato : 04-06-02 23:58

Thorbjoern Ravn Andersen wrote:
> Michael Jenner <mj@kom.auc.dk> writes:
>
>
>>Er det muligt med et bash-script at checke om en given bruger / gruppe
>>ID har adgang til at læse en fil i et katalog. Scriptet skal køres af
>>root.
>
>
> Fra et bash-script vil du oftest bruge "test" (også kaldet "["), og
> den kan kun teste på effektiv bruger/gruppeid. Kan du køre scriptet
> som den bruger der skal testes på?

Nej, desværre.

Mvh Michael


Thomas Bjorn Anderse~ (05-06-2002)
Kommentar
Fra : Thomas Bjorn Anderse~


Dato : 05-06-02 09:44

Michael Jenner <mj@kom.auc.dk> writes:

> Thorbjoern Ravn Andersen wrote:
> > Michael Jenner <mj@kom.auc.dk> writes:
> >
> >>Er det muligt med et bash-script at checke om en given bruger / gruppe
> >>ID har adgang til at læse en fil i et katalog. Scriptet skal køres af
> >>root.
> > Fra et bash-script vil du oftest bruge "test" (også kaldet "["), og
> > den kan kun teste på effektiv bruger/gruppeid. Kan du køre scriptet
> > som den bruger der skal testes på?
>
> Nej, desværre.

Hvis du nu skriver en lille del af dit script som perl eller C, så kan
du sætte din effektive UID/GID og forsøge at åbne filen. Så har du i
hvert fald et gyldigt svar.

--
Thomas Bjorn Andersen - tba@gen-v.net
+++ATH

Kim Hansen (05-06-2002)
Kommentar
Fra : Kim Hansen


Dato : 05-06-02 10:29

Thomas Bjorn Andersen <tbanews@gen-v.net> writes:

> Michael Jenner <mj@kom.auc.dk> writes:
>
> > Thorbjoern Ravn Andersen wrote:
> > > Michael Jenner <mj@kom.auc.dk> writes:
> > >
> > >>Er det muligt med et bash-script at checke om en given bruger / gruppe
> > >>ID har adgang til at læse en fil i et katalog. Scriptet skal køres af
> > >>root.
> > > Fra et bash-script vil du oftest bruge "test" (også kaldet "["), og
> > > den kan kun teste på effektiv bruger/gruppeid. Kan du køre scriptet
> > > som den bruger der skal testes på?
> >
> > Nej, desværre.
>
> Hvis du nu skriver en lille del af dit script som perl eller C, så kan
> du sætte din effektive UID/GID og forsøge at åbne filen. Så har du i
> hvert fald et gyldigt svar.

Eller i shell:

su <brugernavn> -c "test -r <filnavn>"

--
Kim Hansen

Michael Jenner (05-06-2002)
Kommentar
Fra : Michael Jenner


Dato : 05-06-02 11:54

Kim Hansen wrote:
> Thomas Bjorn Andersen <tbanews@gen-v.net> writes:
>
>
>>Michael Jenner <mj@kom.auc.dk> writes:
>>
>>
>>>Thorbjoern Ravn Andersen wrote:
>>>
>>>>Michael Jenner <mj@kom.auc.dk> writes:
>>>>
>>>>
>>>>>Er det muligt med et bash-script at checke om en given bruger / gruppe
>>>>>ID har adgang til at læse en fil i et katalog. Scriptet skal køres af
>>>>>root.
>>>>
>>>>Fra et bash-script vil du oftest bruge "test" (også kaldet "["), og
>>>>den kan kun teste på effektiv bruger/gruppeid. Kan du køre scriptet
>>>>som den bruger der skal testes på?
>>>
>>>Nej, desværre.
>>
>>Hvis du nu skriver en lille del af dit script som perl eller C, så kan
>>du sætte din effektive UID/GID og forsøge at åbne filen. Så har du i
>>hvert fald et gyldigt svar.

Lyder interessant. Nogle eksempler på hvordan man implementerer det?

>
>
> Eller i shell:
>
> su <brugernavn> -c "test -r <filnavn>"
>

Jeg har forsøgt mig med noget i retning af:

#!/bin/bash

# Test if file is accessible by user
user=mbj
su - $user -c "test -r /usr/local/bin/notfor"
svar=$?
echo $svar

Og svar bliver 0 hvis jeg kan læse filen og 1 hvis ikke - så det virker ok!

Hvis jeg istedet bruger:

svar=`eval "su - $user -c 'test -r /usr/local/bin/notfor'"`

Kan jeg ikke få nogen retur-værdi over i svar. Nogen bud på hvorfor?

Mvh Michael


Kim Hansen (05-06-2002)
Kommentar
Fra : Kim Hansen


Dato : 05-06-02 15:12

Michael Jenner <mj@kom.auc.dk> writes:

> Kim Hansen wrote:
> >
> > Eller i shell:
> >
> > su <brugernavn> -c "test -r <filnavn>"
> >
>
> Jeg har forsøgt mig med noget i retning af:
>
> #!/bin/bash
>
> # Test if file is accessible by user
> user=mbj
> su - $user -c "test -r /usr/local/bin/notfor"
> svar=$?
> echo $svar
>
> Og svar bliver 0 hvis jeg kan læse filen og 1 hvis ikke - så det virker ok!

Jep, du kan evt. også bruge metoden:
su $user -c "test -r /usr/local/bin/notfor" && echo "kan læses"

Hvis du skal være helt sikker på at du kan stole på resultatet så tror
jeg ikke du skal bruge den ekstra streg efter su, den giver måske
mulighed for at brugeren kan have lavet sin egen 'test' kommando som
returnere noget andet end du forventer.

> Hvis jeg istedet bruger:
>
> svar=`eval "su - $user -c 'test -r /usr/local/bin/notfor'"`
>
> Kan jeg ikke få nogen retur-værdi over i svar. Nogen bud på hvorfor?

Fra builtins(1) som er en del af bash dokumentationen:
| eval [arg ...]
| The args are read and concatenated together into a
| single command. This command is then read and exe­
| cuted by the shell, and its exit status is returned
| as the value of eval. If there are no args, or
| only null arguments, eval returns 0.

Jeg tror at det de mener er at exitstatus fra kommandoen der udføres
af eval også bliver exitstatus af selve eval kommandoen, men jeg har
så svært ved at se hvad man skal bruge eval kommandoen til i praksis.
Muligvis kan man bruge det lige som man gør i Perl til en slags
try/catch statements.

--
Kim Hansen

Jacob Gaarde (06-06-2002)
Kommentar
Fra : Jacob Gaarde


Dato : 06-06-02 00:14

Kim Hansen <k-tahf.qvxh@oek.dk> wrote in
news:x62wutdizle.fsf@tyr.diku.dk:

> men jeg har så svært ved at se hvad man skal bruge eval kommandoen
> til i praksis.

t. eks til argumet-parsing :
[ "${dummy}" = "-i" ] && eval IMG_TYPE=\$$(( ${i} + 1 ))

--
//Jacob Gaarde
//Dont reply to my (aparent) e-mail address. Instead Use
//e-mail : gaarde <at> mailme <dot> dk


Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408886
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste