Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2015-05-07 13:55:40

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

[Solved] Dostęp do sprzętu na bazie ACL

Sprawa dokładnie jest opisana tutaj pod tym linkiem: http://enotty.pipebreaker.pl/2012/05/23/linux-automatic-user-acl-management/ i generalnie rzecz biorąc można się z niego dowiedzieć, że prawa dostępu do części sprzętu są dynamicznie nadawane użytkownikom w zależności od tego czy ich sesja jest aktywna. I tak jak na tym filmiku w powyższym linku można zaobserwować, jeśli przełączymy się na inne TTY albo zmienimy usera na jakiegoś innego, to nasza sesja staje się nieaktywna i np. dźwięk zamiera. Może i to chroni tam przed szeregiem podsłuchów ale to ma jedną wadę -- jeśli chcę sobie wygasić monitor i zwyczajnie go zablokować, to wtedy moja sesja staje się nieaktywna i nagle nie mogę słuchać muzyki. xD  Tam w linku gość gada by demony dodawać do odpowiednich grup i to załatwi sprawę, a co w przypadku amaroka? Jak go odpalić by miał dostęp do dźwięku cały czas? Da się w ogóle tak?

Ostatnio edytowany przez morfik (2015-05-19 10:55:06)

Offline

 

#2  2015-05-07 14:03:43

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: [Solved] Dostęp do sprzętu na bazie ACL

1931

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:17:42)

Offline

 

#3  2015-05-07 14:51:05

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [Solved] Dostęp do sprzętu na bazie ACL

No właśnie to robi logind -- nadaje uprawnienia do sprzętu aktywnej sesji użytkownika. Gdy ten się zmienia i jego sesja staje się nieaktywna, to odbiera te uprawnienia czego efektem jest brak dźwięku. Przykład:

Kod:

$ loginctl list-seats
SEAT
seat0

1 seats listed.

$ loginctl list-sessions
   SESSION        UID USER             SEAT
        c6        108 lightdm          seat0
         6       1000 morfik           seat0

2 sessions listed.

$ loginctl show-session 6
Id=6
Name=morfik
Timestamp=Thu 2015-05-07 13:52:55 CEST
TimestampMonotonic=2498471184
VTNr=7
Display=:0
Remote=no
Service=lightdm
Desktop=openbox
Scope=session-6.scope
Leader=19711
Audit=6
Type=x11
Class=user
Active=yes
State=active
IdleHint=no
IdleSinceHint=0
IdleSinceHintMonotonic=0

Można się dodać do grupy audio by mieć cały czas dźwięk ale mi generalnie by zależało aby tylko niektóre procesy miały dostęp na stałe do określonych urządzeń, np. amarok do dźwięku, smplayer/mpv/vlc do dźwięku i video, itp.

Offline

 

#4  2015-05-07 16:17:57

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [Solved] Dostęp do sprzętu na bazie ACL

Grupa Audio to dla pacjenta, a per-program to raczej Apparmor, Tomoyo albo SELinux na standardowym jaju, i jest jeszcze Grsecurity-RBAC - ale do tego trzeba łatać jajko i kompilować.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2015-05-12 15:52:30

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [Solved] Dostęp do sprzętu na bazie ACL

Na dobrą sprawę to nie mam zielonego pojęcia o czym ty do mnie rozmawiasz — przydałby się jakiś przykład. xD Póki co wrzuciłem ogłoszenie na [url=http://unix.stackexchange.com/questions/202059/is-there-a-way-to-set-permissions-so-a-process-could-use-a-specific-device]stack exchange[/url] — warte 150 expa. xD

Offline

 

#6  2015-05-19 10:54:41

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [Solved] Dostęp do sprzętu na bazie ACL

Udało mi się rozwiązać ten problem i wcale nie trzeba było się posługiwać jakimś nieznanym mi bliżej jeżykiem. xD

W katalogu ~/.config/autostart/ jest plik pulseaudio.desktop i to on startuje pulseaudio wraz z sesją użytkownika. Tam w nim jest linijka z exec i przepisałem ją do tej postaci poniżej:

Kod:

Exec=/usr/bin/sg audio -c "pulseaudio -D"

Teraz pulseaudio jest odpalany z takimi prawami:

Kod:

$ ps -eo user,group,args | grep pulse
morfik   audio    pulseaudio -D
morfik   audio    /usr/lib/pulseaudio/pulse/gconf-helper

I już dźwięk nie gaśnie przy blokowaniu sesji. Przy czym warto zaznaczyć, że nie trzeba przeprowadzać tak nierozważnych działań jak dodawanie użytkowników do grupy audio czy też odpalanie pulseaudio w system mode, czy innych jeszcze bardziej godzących w bezpieczeństwo czynności. xD

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.011 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00097 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.4.54' WHERE u.id=1
0.00063 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.144.4.54', 1732523816)
0.00044 SELECT * FROM punbb_online WHERE logged<1732523516
0.00093 DELETE FROM punbb_online WHERE ident='18.188.59.124'
0.00231 DELETE FROM punbb_online WHERE ident='57.141.0.30'
0.00063 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=27370 AND t.moved_to IS NULL
0.00007 SELECT search_for, replace_with FROM punbb_censoring
0.00173 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=27370 ORDER BY p.id LIMIT 0,25
0.00084 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27370
Total query time: 0.00868 s