/ 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
Kontrollere om man har læseadgang til en m~
Fra : Erik


Dato : 05-03-08 15:53

Jeg skal have lavet et archive script til vores brugere. Det er vigtigt, at
brugeren kan læse alle filer i mappen og alle undermapper, da de ellers ikke
kommerm med i backuppen men da mappen kan være delt imellem mange brugere,
kan man ikke regne med, at rettighederne eller ejerskabet står korrekt. Da
brugerne ikke har root adgang (evt. noget sudo), kan jeg ikke bare lave en
"chown -R ejer mappe", så jeg antager, at jeg bliver nødt til at lave em
komplet liste over hvilke filer/mapper den givne bruger ikke kan læse?

Lad os antage, at jeg har følgende scenarie.
En masse filer i en masse mapper - f.eks.

rwx------ usr1 grp1 myfile1
---rwx--- usr2 grp2 myfile2
rwx------ usr3 grp3 subdir/
------rwx usr3 grp3 subdir/myfile3

Lad os antage følgende angående brugeren:
usr1, grp1

usr1 brugeren skulle gerne få en info ud om følgende fil/mappe, da de ikke
er læsbare:
---rwx--- usr2 grp2 myfile2
rwx------ usr3 grp3 subdir/

Hvis brugeren er:
usr3, grp3:

rwx------ usr1 grp1 myfile1
---rwx--- usr2 grp2 myfile2

Hvordan finder man disse filer/mapper?
Jeg var først ude i noget "find" men kan ikke se, at det kan lade sig gøre
hvis man skal tage højde for hvilke grupper en bruger kan være medlem af?

Derefter vil jeg få brugerne (som ejer filerne) til at lave en "find
mappe -user usr2 | xargs chown usr1" (selvfølgelig noget pænere pakket ind
for brugeren).

Gode bud modtages gerne.



 
 
Jacob Sparre Anderse~ (05-03-2008)
Kommentar
Fra : Jacob Sparre Anderse~


Dato : 05-03-08 16:38

Erik skrev:

> Lad os antage, at jeg har følgende scenarie.
> En masse filer i en masse mapper - f.eks.
>
> rwx------ usr1 grp1 myfile1
> ---rwx--- usr2 grp2 myfile2
> rwx------ usr3 grp3 subdir/
> ------rwx usr3 grp3 subdir/myfile3
>
> Lad os antage følgende angående brugeren:
> usr1, grp1
>
> usr1 brugeren skulle gerne få en info ud om følgende fil/mappe, da de ikke
> er læsbare:
> ---rwx--- usr2 grp2 myfile2
> rwx------ usr3 grp3 subdir/
>
> Hvis brugeren er:
> usr3, grp3:
>
> rwx------ usr1 grp1 myfile1
> ---rwx--- usr2 grp2 myfile2
>
> Hvordan finder man disse filer/mapper?

find rodkatalog \! -user usr1 -a \! -group grp1
find rodkatalog \! -user usr2 -a \! -group grp2

God fornøjelse,

Jacob
--
My brain needs a "back" button so I can
remember where I left my coffee mug.

Erik (05-03-2008)
Kommentar
Fra : Erik


Dato : 05-03-08 16:56

>> Hvordan finder man disse filer/mapper?
>
> find rodkatalog \! -user usr1 -a \! -group grp1
> find rodkatalog \! -user usr2 -a \! -group grp2

Ahhh.. og så lige en expansion af brugerens grupper, så burde det være
muligt.
Tak - det vil jeg lige prøve.



Erik (06-03-2008)
Kommentar
Fra : Erik


Dato : 06-03-08 14:52

>>> Hvordan finder man disse filer/mapper?
>>
>> find rodkatalog \! -user usr1 -a \! -group grp1
>> find rodkatalog \! -user usr2 -a \! -group grp2
>
> Ahhh.. og så lige en expansion af brugerens grupper, så burde det være
> muligt.
> Tak - det vil jeg lige prøve.

Dette fatter jeg ikke ret meget af. Hvis jeg udføre følgende linie får jeg
OK:

[usr1@srv]$ find . -group wheel -print
../bin/storfil2.bin
(denne har IKKE wheel som gruppe)

Men hvis jeg udføre følgende TCL kode får jeg fejl:

set search_groups ""
set groups [ exec groups ]
foreach grp $groups {
append search_groups "-group $grp"
}
puts "User groups are: $groups"
puts "User search groups are: \[$search_groups\]"
catch { exec -- find . $search_groups -print } result
puts $result

... får jeg følgende fejl:

[usr1@srv]$ ./myscript.tclsh
User groups are: wheel
User search groups are: [-group wheel]
find: invalid predicate `-group wheel'

Hvis jeg skriver linien fuldt ud i TCL:
catch { exec -- find . -group wheel -print } result

... fungere det fint men lige så snart grupperne dynamisk tilføjes, melder
den fejl!?

Hvorfor?



Jens Henrik Leonhard~ (06-03-2008)
Kommentar
Fra : Jens Henrik Leonhard~


Dato : 06-03-08 21:45

Erik wrote:
>>>> Hvordan finder man disse filer/mapper?
>>> find rodkatalog \! -user usr1 -a \! -group grp1
>>> find rodkatalog \! -user usr2 -a \! -group grp2
>> Ahhh.. og så lige en expansion af brugerens grupper, så burde det være
>> muligt.
>> Tak - det vil jeg lige prøve.
>
> Dette fatter jeg ikke ret meget af. Hvis jeg udføre følgende linie får jeg
> OK:
>
> [usr1@srv]$ find . -group wheel -print
> ./bin/storfil2.bin
> (denne har IKKE wheel som gruppe)
>
> Men hvis jeg udføre følgende TCL kode får jeg fejl:
>
> set search_groups ""
> set groups [ exec groups ]
> foreach grp $groups {
> append search_groups "-group $grp"
> }
> puts "User groups are: $groups"
> puts "User search groups are: \[$search_groups\]"
> catch { exec -- find . $search_groups -print } result
> puts $result
>
> .. får jeg følgende fejl:
>
> [usr1@srv]$ ./myscript.tclsh
> User groups are: wheel
> User search groups are: [-group wheel]
> find: invalid predicate `-group wheel'
>
> Hvis jeg skriver linien fuldt ud i TCL:
> catch { exec -- find . -group wheel -print } result
>
> .. fungere det fint men lige så snart grupperne dynamisk tilføjes, melder
> den fejl!?
>
> Hvorfor?
>
>

brug: catch { eval exec -- find . $search_groups -print } result

$search_groups bliver en parameter til find ellers,
det svaret til at skrive
find . "-group wheel" -print
i din shell, som giver samme fejl.

/Jens Henrik

Erik (07-03-2008)
Kommentar
Fra : Erik


Dato : 07-03-08 12:02

> brug: catch { eval exec -- find . $search_groups -print } result

Aha, mange tak.



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

Månedens bedste
Årets bedste
Sidste års bedste