mountpoint permissions

George Notaras gnot at g-loaded.eu
Fri Nov 5 03:47:51 EET 2010


On 04/11/2010 11:33, Giorgos Keramidas wrote:
> On Wed, 03 Nov 2010 19:38:25 +0200, George Notaras <gnot at g-loaded.eu> wrote:
>> Αφού αλλάξουμε ownership & permissions σε ένα mount point ενώ είναι
>> mounted ένα block device, και στη συνέχεια κάνουμε umount, τότε τα
>> permissions και ownership επανέρχονται στα original perms που είχε ο
>> κατάλογος πριν κάνουμε mount το device.
>>
>> Αν ξανα-mount το device στο ιδιο mountpoint, τα permissions & ownership
>> επανέρχονται σε εκείνα που είχαμε ορίσει κατά το προηγούμενο mount.
>>
>> Πού αποθηκεύονται τα permissions που ορίζουμε πάνω στο mount point οταν
>> το device είναι mounted? Δηλαδή αν κάνουμε 800 mounts + αλλαγές στα
>> permissions του ίδιου mountpoint, όλα αυτά θα αποθηκευτούν κάπου;
> 
> Στο i-node από το mounted block device.  Τα permissions ενός directory
> είναι αποθηκευμένα μέσα στο ίδιο το inode στο οποίο "δείχνει" το
> αντίστοιχο directory entry.
> 
> Ας πούμε ότι έχεις ένα κατάλογο /media/flash στον οποίο ακόμα δεν έχεις
> προσαρτήσει τίποτα.  Κάνοντας ls -di στον κατάλογο θα δεις κάτι σαν:
> 
>     $ ls -di /media/flash
>     2926951 /media/flash
> 
> Ο αριθμός 2926951 αναφέρεται στο inode 2926951 του filesystem που είναι
> αυτή τη στιγμή προσαρτημένο στο /media/flash.  Σε αυτό το i-node μπορεί
> να δεις ότι έχει permissions π.χ. τα εξής:
> 
>     $ stat /media/flash
>       File: «/media/flash»
>       Size: 4096            Blocks: 8          IO Block: 4096   κατάλογος
>     Device: fc01h/64513d    Inode: 2926951     Links: 2
>     Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
>     Access: 2010-11-04 10:16:08.000000000 +0100
>     Modify: 2010-11-04 10:16:08.000000000 +0100
>     Change: 2010-11-04 10:16:08.000000000 +0100
> 
> Τα permissions τα οποία είναι αποθηκευμένα στο inode 2926951 του root
> filesystem μου εδώ πέρα είναι 0755.  Αντίστοιχα ο ιδιοκτήτης του inode
> είναι ο χρήστης root:root.
> 
> Στο parent directory του /media/flash υπάρχει μια αναφορά τόσο στο
> device ενός directory entry όσο και στο inode του directory entry.
> Οπότε μπορείς να δεις π.χ. ότι το /media και το /media/flash δείχνουν σε
> inodes (και κατά συνέπεια σε data blocks) από το ίδιο device πριν από
> ένα mount operation:
> 
>     $ for path in /media /media/flash ; do stat $path | fgrep Device: ; done
>     Device: fc01h/64513d    Inode: 2916353     Links: 3
>     Device: fc01h/64513d    Inode: 2926951     Links: 2
>             ^^^^^^^^^^^^
> 
> Μετά από ένα mount operation όμως το όνομα /media/flash πλέον
> αντιστοιχεί σε *άλλο* device ID:
> 
>     # mount -t vfat /dev/sdb1 /media/flash
>     # for path in /media /media/flash ; do stat $path | fgrep Device: ; done
>     Device: fc01h/64513d    Inode: 2916353     Links: 3
>     Device: 811h/2065d      Inode: 1           Links: 2
> 
> Και όπως βλέπεις το inode του /media/flash είναι πλεον το inode 1 από το
> νέο device.  Κι εκεί μπορεί να αποθηκεύσεις διαφορετικές άδειες ή ακόμα
> και να ρυθμίσεις το mount point να "δείχνει" διαφορετικές άδειες (κυρίως
> για τα filesystems που δεν υποστηρίζουν file owners & permissions, όπως
> το vfat).
> 
> Ας πούμε στο USB flash που έκανα mount πριν λίγο με το default root:root
> owner & group μπορώ να πω ότι θέλω να "δείχνει" το kernel ότι owner
> είναι ο χρήστης 'gkeramidas:eng':
> 
> # umount /dev/sdb1
> 
>     # mount -t vfat -o uid=gkeramidas,gid=eng
>     /dev/sdb1 /media/flash
>     root at gkeramidas-glaptop:~# ls -ldi /media/. /media/flash/.
>     2916353 drwxr-xr-x 3 root       root 4096 2010-11-04 10:25 /media/.
>           1 drwxr-xr-x 2 gkeramidas eng  4096 1970-01-01 01:00 /media/flash/.
> 
> Τώρα πλέον φαίνεται πάλι ότι τα δυο directories ανήκουν σε διαφορετικό
> block device:
> 
>     # stat /media/. /media/flash/.
> 
>       File: «/media/.»
>       Size: 4096            Blocks: 8          IO Block: 4096   κατάλογος
>     Device: fc01h/64513d    Inode: 2916353     Links: 3
>     Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
>     Access: 2010-11-04 10:23:13.000000000 +0100
>     Modify: 2010-11-04 10:25:29.000000000 +0100
>     Change: 2010-11-04 10:25:29.000000000 +0100
> 
>       File: «/media/flash/.»
>       Size: 4096            Blocks: 8          IO Block: 4096   κατάλογος
>     Device: 811h/2065d      Inode: 1           Links: 2
>     Access: (0755/drwxr-xr-x)  Uid: (121165/gkeramidas)   Gid: ( 5000/ eng)
>     Access: 1970-01-01 01:00:00.000000000 +0100
>     Modify: 1970-01-01 01:00:00.000000000 +0100
>     Change: 1970-01-01 01:00:00.000000000 +0100
> 
> Αλλά πρόσεξε τι owner έχει το inode 1 από το /media/flash device ;-)
> 
>> Υπάρχει περίπτωση να χαθούν με κάποιο τρόπο, ώστε, όταν ξαναγίνει Mount
>> το device, τα perms του mountpoint να είναι και πάλι ίδια με εκείνα του
>> αρχικού καταλόγου?
> 
> Αν το filesystem του mounted device υποστηρίζει κανονικά users & groups,
> τότε όχι δε γίνεται να "χαθούν" τα permissions ή το ownership μερικών
> αρχείων.  Αν το filesystem από το mounted device είναι κανένα από τα
> απλοϊκά filesystems που δεν έχουν per-file access control, τότε δεν
> αποθηκεύεται πουθενά η πληροφορία, άρα θα χρειαστεί να κρατήσεις κάπου
> "εκτός" filesystem (π.χ. στο mount script σου) τα σωστά owner & group
> credentials.
> 

Γιώργο, καταρχήν, σ' ευχαριστώ για την αναλυτική απάντηση.

Όπως έγραψα και πριν, τελικά νομίζω πως καλώς έγινε η σχετική συζήτηση
γιατί υπήρχαν κάποια πράγματα που δεν είχα αναλογιστεί ποτέ.

Στο συμπέρασμα που έβγαλα στο 2ο μήνυμά μου και μέχρι να διαβάσω την
απάντηση του V13 και τη δική σου θεωρούσα ότι τα perms αυτά
αποθηκεύονται στο mountpoint καθ'αυτό και όχι στο mounted filesystem.



More information about the Linux-greek-users mailing list