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