Device owner

George Notaras gnot at g-loaded.eu
Fri Jan 18 08:15:27 EET 2008


On Thu, 2008-01-17 at 18:47 +0200, Alexandros Kosiaris wrote:

> >> Κατά πάσα πιθανότητα υπάρχει κάπου ένα OWNER := και GROUP:= στα rules
> >> στο fedora σου για αυτό δεν έπαιζαν αυτά. Εσύ απλά τα έκανες override
> >> κάνοντας το := πιο πάνω(και σωστά γιατί πιο κάτω δεν θα έπαιζε).
> > 
> > Αν και ειλικρινά δεν θέλω να με απασχολούν πράγματα όπως το udev, όχι
> > επειδή δεν αξίζει, αλλά επειδή θεωρώ δεδομένο ότι, όταν ένας χρήστης
> > ορίζει ένα custom rule, είναι επειδή μάλλον θέλει αυτό να ισχύσει και
> > όχι να παρακαμφθεί από τα default rules, είδα ότι δεν υπάρχει το ':='
> > operator στα default rules του fedora, αλλά το:
> > 
> > ..., OPTIONS="last_rule"
> Χμμ αντίστοιχο υπάρχει στο debian z50_run.rules
> KERNEL=="tty"   ,       OPTIONS+="last_rule"
> 
> Το οποίο έχει την πλάκα του γιατί το
> 
> += σημαίνει πρόσθεσε στα προηγούμενα αυτό
> 
> και το last rule σταμάτα να κάνεις τα rules process.
> 
> H αλήθεια είναι ότι δεν μπορώ να βρώ λόγο για το +

Ίσως να υπάρχει εκεί «προκαταβολικά» ώστε, αν κάποιο προηγούμενο rule
σχετικό με τα tty περιέχει κάποιο άλλο option, να μην αναιρείται από το
υποθετικό OPTIONS="last_rule" χωρίς "+". Αλλά αυτό είναι μια υπόθεση.

Γενικά υπάρχει «Πολύ Νόημα» - στα rules. Αναρωτιέμαι όμως γιατί ένας
χρήστης να χρειάζεται να περνάει αυτή τη διαδικασία προκειμένου να δώσει
τα permissions που θέλει σε μια συσκευή.

> (δεν ορίζεται πουθενά αλλού κάποιο OPTION για το tty group και τα παιδιά
> του)
> 
> > 
> > το οποίο μάλλον κάνει την ίδια δουλειά (έτσι δείχνει, δεν το έψαξα).
> >
> Κανονικά όντως αυτό θα την έκανε αλλά εάν έχεις ορίσει κάπου
> 
> KERNEL="ttyS0" κτλ κτλ
> 
> όπως έκανα εγώ τότε το υπερισχύει το δικό σου rule γιατί είναι more
> specific. Σημείωση ότι δεν έχω πουθενά rules για τα ttyS* οπότε το δικό
> μου είναι μοναδικό.
> 
> Τώρα εσύ μπορεί να έχεις...

Τα custom rules τα έχω στο τέλος. Είχα δοκιμάσει με KERNEL=="ttyS0" αλλά
χωρίς αποτέλεσμα.

Αυτα είναι τα default rules σχετικά με tty:

$ grep -hi tty /etc/udev/rules.d/*
KERNEL=="vcs",                 OWNER="vcsa", GROUP="tty"
KERNEL=="vcs[0-9]*",           OWNER="vcsa", GROUP="tty"
KERNEL=="vcsa",                OWNER="vcsa", GROUP="tty"
KERNEL=="vcsa[0-9]*",          OWNER="vcsa", GROUP="tty"
KERNEL=="vcc/*",               OWNER="vcsa", GROUP="tty"
KERNEL=="pty[pqrstuvwxyzabcdef][0123456789abcdef]", GROUP="tty",
MODE="0660", OPTIONS="last_rule"
KERNEL=="tty[pqrstuvwxyzabcdef][0123456789abcdef]", GROUP="tty",
MODE="0660", OPTIONS="last_rule"
KERNEL=="ptmx",                 GROUP="tty", MODE="0666",
OPTIONS="last_rule"
KERNEL=="tty",                  GROUP="tty", MODE="0666",
OPTIONS="last_rule"
KERNEL=="tty[0-9]*",            GROUP="tty", MODE="0620",
OPTIONS="last_rule"
KERNEL=="vcs|vcs[0-9]*|vcsa|vcsa[0-9]*", GROUP="tty",
OPTIONS="last_rule"
KERNEL=="tty0",                 SYMLINK+="systty"
KERNEL=="tty[A-Z]*|pppox*|ircomm*|noz*", GROUP="uucp"

Αυτό που έχει να κάνει με το ttyS0 είναι το τελευταίο, το οποίο δεν έχει
ούτε := ούτε last_rule.

Το δικό μου rule αρχικά ήταν:

KERNEL=="ttyS0", SUBSYSTEM=="tty", OWNER="nut", GROUP="nut", MODE="0600"

το οποίο ήταν στο τέλος. Το ttyS0 δεν έπαιρνε σωστά owner/group (nut),
αλλά άλλαζε μόνο το mode.

> > Οπότε, τώρα έχουμε 2 τρόπους να κάνουμε αυτό που θέλουμε και άρα υποθέτω
> > είμαστε διπλά πιο ελεύθεροι, δημιουργικοί και καινοτόμοι από ό,τι θα
> > ήμαστε αν υπήρχε μόνον ένας τρόπος.
> 
> Πάμε στοίχημα ότι εάν το ψάξουμε θα βρούμε και τρίτο;

Ευτυχώς, δεν φαίνεται να υπάρχει 3ος. :)

> 
> <just a bait>
> 
> Πάντως ήταν ενδιαφέρον ένα πέρασμα μέσα από τις διάφορες εντολές του
> udev. Γέμισα με ένα ανυπέρβλητο αίσθημα ικανοποίησης που τις
> χρησιμοποίησα μετά από τόσο καιρό.
> 
> Είμαι βαριά ασθενής γιατρέ;
> 
> </just a bait>

Είναι και για μένα ενδιαφέρον, αλλά νομίζω ότι η ενασχόληση με το udev
είναι κάπως άσκοπη.

Τελικά, νομίζω ότι το Σωστό(ΤΜ) για την ώρα είναι να μπουν τα custom
rules σε ένα αρχείο πρώτο στην ιεραρχία και, επιπλέον, σε κάθε rule να
προστίθεται το OPTIONS="last_rule" ή να χρησιμοποιείται το ':='
operator.

Αν έχει κανείς αντίρρηση, ένσταση, τεκμηριωμένη αντίθετη άποψη, ας την
πει τώρα! :P






More information about the Linux-greek-users mailing list