|
| 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
| |
|
|