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
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.007 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00118 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.141.2.191' WHERE u.id=1
0.00069 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.141.2.191', 1732531242)
0.00048 SELECT * FROM punbb_online WHERE logged<1732530942
0.00043 SELECT topic_id FROM punbb_posts WHERE id=286803
0.00004 SELECT id FROM punbb_posts WHERE topic_id=27370 ORDER BY posted
0.00045 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.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00097 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.00075 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27370
Total query time: 0.00519 s