Desktop on the Linux (and *BSD of course) ::
Transcript of Desktop on the Linux (and *BSD of course) ::
![Page 1: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/1.jpg)
Desktop on the Linux(and *BSD of course). . .you’re doing it confused? weird? strange? wrong?
Who? Wolfgang ’datenwolf’ Draxinger
When? 27c3, 2010-12-27
![Page 2: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/2.jpg)
DISCLAIMER
This talk is:
highly opinionated
biased
born out of frustration
. . . and anger
![Page 3: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/3.jpg)
DISCLAIMER II
Linux is not Unix.
Nevertheless I’ll mix the terms because I’mjust to lazy to distiguish everytime.
I hope you’re okay with that.
![Page 4: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/4.jpg)
DISCLAIMER II
Linux is not Unix.
Nevertheless I’ll mix the terms because I’mjust to lazy to distiguish everytime.
I hope you’re okay with that.
![Page 5: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/5.jpg)
DISCLAIMER II
Linux is not Unix.
Nevertheless I’ll mix the terms because I’mjust to lazy to distiguish everytime.
I hope you’re okay with that.
![Page 6: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/6.jpg)
The situation
I work as a systems administrator:
University’s physics student computers.
≥ 3500 users!
I’m the “problem solver” there.
My pleasure hacking projects are about:realtime graphicsrealtime simulationsystems programminga.k.a. game engines.⇒ highly optimized, resource awarecode.
![Page 7: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/7.jpg)
The situation
I work as a systems administrator:
University’s physics student computers.
≥ 3500 users!
I’m the “problem solver” there.
My pleasure hacking projects are about:realtime graphicsrealtime simulationsystems programminga.k.a. game engines.⇒ highly optimized, resource awarecode.
![Page 8: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/8.jpg)
The situation
I work as a systems administrator:
University’s physics student computers.
≥ 3500 users!
I’m the “problem solver” there.
My pleasure hacking projects are about:realtime graphicsrealtime simulationsystems programminga.k.a. game engines.⇒ highly optimized, resource awarecode.
![Page 9: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/9.jpg)
The situation
I work as a systems administrator:
University’s physics student computers.
≥ 3500 users!
I’m the “problem solver” there.
My pleasure hacking projects are about:realtime graphicsrealtime simulationsystems programminga.k.a. game engines.⇒ highly optimized, resource awarecode.
![Page 10: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/10.jpg)
The situation
I work as a systems administrator:
University’s physics student computers.
≥ 3500 users!
I’m the “problem solver” there.
My pleasure hacking projects are about:realtime graphicsrealtime simulationsystems programminga.k.a. game engines.⇒ highly optimized, resource awarecode.
![Page 11: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/11.jpg)
Linux desktop distributions have become evil!
With each and every new version of OpenSuSE, Ubuntu,Fedora problems got worse.
Most of the problems we encounter are attributed toautomatisms.
It’s no longer “set and forget”.
![Page 12: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/12.jpg)
Linux desktop distributions have become evil!
With each and every new version of OpenSuSE, Ubuntu,Fedora problems got worse.
Most of the problems we encounter are attributed toautomatisms.
It’s no longer “set and forget”.
![Page 13: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/13.jpg)
Linux desktop distributions have become evil!
With each and every new version of OpenSuSE, Ubuntu,Fedora problems got worse.
Most of the problems we encounter are attributed toautomatisms.
It’s no longer “set and forget”.
![Page 14: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/14.jpg)
Modern Desktops haveMultimedia!
![Page 15: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/15.jpg)
Your typical Multimedia Framework
Playback Module Graph
Input Demuxer
Decoder Filter Output
Decoder Filter Output
...
filehttprtmprtsp...
aviwavmp4mkvoggmov...
MP3VorbisAACFLACh264XviD...
downmixreplaygaindeinterlaceingbrightnescontrast...
X11/XVideoVDPAUOpenGLALSAPulseAudioOSS...
![Page 16: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/16.jpg)
Provides huge number of modules."Fire and Forget" graph generator included.unfortunately not quite stable.
![Page 17: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/17.jpg)
Provides huge number of modules."Fire and Forget" graph generator included.unfortunately not quite stable.
![Page 18: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/18.jpg)
PhononMultimedia-Meta-API – abstraction layer to accessdifferent multimedia frameworks through a single API.Part of the KDE projectBuilds filter graphs using capabilitiesof the current backend.Designed to allow switching the backend in mid-operation(why?)Available backends (Linux)
XineVLCGStreamer (unmantained)
Filter graph building logic must be providedfor every backend!
![Page 19: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/19.jpg)
PhononMultimedia-Meta-API – abstraction layer to accessdifferent multimedia frameworks through a single API.Part of the KDE projectBuilds filter graphs using capabilitiesof the current backend.Designed to allow switching the backend in mid-operation(why?)Available backends (Linux)
XineVLCGStreamer (unmantained)
Filter graph building logic must be providedfor every backend!
![Page 20: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/20.jpg)
PhononMultimedia-Meta-API – abstraction layer to accessdifferent multimedia frameworks through a single API.Part of the KDE projectBuilds filter graphs using capabilitiesof the current backend.Designed to allow switching the backend in mid-operation(why?)Available backends (Linux)
XineVLCGStreamer (unmantained)
Filter graph building logic must be providedfor every backend!
![Page 21: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/21.jpg)
PhononMultimedia-Meta-API – abstraction layer to accessdifferent multimedia frameworks through a single API.Part of the KDE projectBuilds filter graphs using capabilitiesof the current backend.Designed to allow switching the backend in mid-operation(why?)Available backends (Linux)
XineVLCGStreamer (unmantained)
Filter graph building logic must be providedfor every backend!
![Page 22: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/22.jpg)
PhononMultimedia-Meta-API – abstraction layer to accessdifferent multimedia frameworks through a single API.Part of the KDE projectBuilds filter graphs using capabilitiesof the current backend.Designed to allow switching the backend in mid-operation(why?)Available backends (Linux)
XineVLCGStreamer (unmantained)
Filter graph building logic must be providedfor every backend!
![Page 23: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/23.jpg)
Designed as a better ESD:mix soundprovide audio capture to multiple clients simultanouslysound over network (e.g. alongside remote X11)
Became sort of a media framework of it’s own:Things like transferring the audio to a different
machine, changing the sample format or channelcount and mixing several sounds into one are easilyachieved using a sound server.
–[PulseAudio homepage]
![Page 24: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/24.jpg)
Designed as a better ESD:mix soundprovide audio capture to multiple clients simultanouslysound over network (e.g. alongside remote X11)
Became sort of a media framework of it’s own:Things like transferring the audio to a different
machine, changing the sample format or channelcount and mixing several sounds into one are easilyachieved using a sound server.
–[PulseAudio homepage]
![Page 25: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/25.jpg)
Functionality Matrix
![Page 26: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/26.jpg)
Let’s hear some music
supports 96kHz 24bps 6 channels
Vorbis22.05kHz16bps2 channels
![Page 27: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/27.jpg)
Let’s hear some music
supports 96kHz 24bps 6 channels
Vorbis22.05kHz16bps2 channels
Phonon
file
GStreamer
![Page 28: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/28.jpg)
Let’s hear some music
supports 96kHz 24bps 6 channels
Vorbis22.05kHz16bps2 channels
Phonon
file
GStreamer
PulseAudioClient
![Page 29: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/29.jpg)
Let’s hear some music
supports 96kHz 24bps 6 channels
Vorbis22.05kHz16bps2 channels
Phonon
file
GStreamer
PulseAudioClient
PulseAudioServer
![Page 30: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/30.jpg)
Let’s hear some music
supports 96kHz 24bps 6 channels
Vorbis22.05kHz16bps2 channels
Phonon
file
GStreamer
PulseAudioClient
PulseAudioServer
gst-ffmpeg
libavcodec
libsamplerate
![Page 31: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/31.jpg)
Let’s hear some music
supports 96kHz 24bps 6 channels
Vorbis22.05kHz16bps2 channels
Phonon
file
GStreamer
PulseAudioClient
PulseAudioServer
gst-ffmpeg
libavcodec
libsamplerate
![Page 32: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/32.jpg)
Let’s hear some music
supports 96kHz 24bps 6 channels
Vorbis22.05kHz16bps2 channels
Phonon
file
GStreamer
PulseAudioClient
PulseAudioServer
gst-ffmpeg
libavcodec
libsampleratehere be sample-rate filters, too
![Page 33: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/33.jpg)
Let’s hear some music
supports 96kHz 24bps 6 channels
Vorbis22.05kHz16bps2 channels
Phonon
file
GStreamer
PulseAudioClient
PulseAudioServer
gst-ffmpeg
libavcodec
libsamplerate
![Page 34: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/34.jpg)
Logins Complicated
![Page 35: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/35.jpg)
Tasks of a X Display Manager
Start X11 server, setup MIT-Cookie (XAUTHORITY)Show Greeter, Login Dialog(optional) Allow for choosing desktop environment andlocalization options(historically) provide XDMCP – don’t use this nowadays(insecure)
![Page 36: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/36.jpg)
Tasks of a X Display Manager
Start X11 server, setup MIT-Cookie (XAUTHORITY)Show Greeter, Login Dialog(optional) Allow for choosing desktop environment andlocalization options(historically) provide XDMCP – don’t use this nowadays(insecure)
![Page 37: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/37.jpg)
User Interaction
enter usernameenter passwordmaybe set session type and localization
All in all a very short experience.The less interaction, the better.
![Page 38: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/38.jpg)
User Interaction
enter usernameenter passwordmaybe set session type and localization
All in all a very short experience.The less interaction, the better.
![Page 39: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/39.jpg)
User Interaction
enter usernameenter passwordmaybe set session type and localization
All in all a very short experience.The less interaction, the better.
![Page 40: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/40.jpg)
User Interaction
enter usernameenter passwordmaybe set session type and localization
All in all a very short experience.The less interaction, the better.
![Page 41: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/41.jpg)
GDM ≥ 2.21
It’s modal (users tend to mistake it for a screen lock).Starts a full blown Gnome session for a simple login.Offers less configuration options than older versions.
![Page 42: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/42.jpg)
GDM ≥ 2.21
It’s modal (users tend to mistake it for a screen lock).Starts a full blown Gnome session for a simple login.Offers less configuration options than older versions.
![Page 43: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/43.jpg)
GDM ≥ 2.21
It’s modal (users tend to mistake it for a screen lock).Starts a full blown Gnome session for a simple login.Offers less configuration options than older versions.
![Page 44: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/44.jpg)
GDM ≥ 2.21
It’s modal (users tend to mistake it for a screen lock).Starts a full blown Gnome session for a simple login.Offers less configuration options than older versions.
![Page 45: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/45.jpg)
GDM ≥ 2.21 – A Gnome session
![Page 46: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/46.jpg)
GDM ≥ 2.21 – A Gnome session highlighted
![Page 47: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/47.jpg)
GDM ≥ 2.21 – Sideshow Dependees
![Page 48: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/48.jpg)
GDM ≥ 2.21 – Why a Gnome session?
By default, GDM is shipped with files which willautostart the gdm-simple-greeter login GUI greeter itself,the gnome-power-manager application, thegnome-settings-daemon, and the metacity windowmanager. These programs are needed for the greeterprogram to work.
– [GDM documentation]
![Page 49: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/49.jpg)
After utmp and wtmp, we proudly present. . .
ConsoleKit
![Page 50: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/50.jpg)
What is ConsoleKit
ConsoleKit is a framework for keeping track of thevarious users, sessions, and seats present on a system. Itprovides a mechanism for software to react to changes ofany of these items or of any of the metadata associatedwith them.
–[ConsoleKit documentation (2010-12-25)]
![Page 51: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/51.jpg)
Why do we need it?
Defining the ProblemTo be written.
Relevant artTo be written.
–[ConsoleKit documentation (2010-12-25)]
http://www.freedesktop.org/software/ConsoleKit/doc/ConsoleKit.html
![Page 52: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/52.jpg)
So what does it do?
It’s a Seat aware session manager.A Seat:
Input DevicesOutput DevicesPermissions per User (Alice may play music, Bob may burnDVDs)
Tracks the userGrants permissions dynamicallyIt uses D-Bus!
![Page 53: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/53.jpg)
So what does it do?
It’s a Seat aware session manager.A Seat:
Input DevicesOutput DevicesPermissions per User (Alice may play music, Bob may burnDVDs)
Tracks the userGrants permissions dynamicallyIt uses D-Bus!
![Page 54: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/54.jpg)
So what does it do?
It’s a Seat aware session manager.A Seat:
Input DevicesOutput DevicesPermissions per User (Alice may play music, Bob may burnDVDs)
Tracks the userGrants permissions dynamicallyIt uses D-Bus!
![Page 55: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/55.jpg)
So what does it do?
It’s a Seat aware session manager.A Seat:
Input DevicesOutput DevicesPermissions per User (Alice may play music, Bob may burnDVDs)
Tracks the userGrants permissions dynamicallyIt uses D-Bus!
![Page 56: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/56.jpg)
So what does it do?
It’s a Seat aware session manager.A Seat:
Input DevicesOutput DevicesPermissions per User (Alice may play music, Bob may burnDVDs)
Tracks the userGrants permissions dynamicallyIt uses D-Bus!
![Page 57: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/57.jpg)
I’m sorry to tell you, but it’s broken!
Unix Philosophy: “Something’s either a process, or a file”.File permissions and ACLs only applied upon open.Once you got an FD, permissions and ACL don’t applyanymore.ConsoleKit is easily circumventedOh, and when it fails, you’re borked.
(Live Demo)
![Page 58: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/58.jpg)
I’m sorry to tell you, but it’s broken!
Unix Philosophy: “Something’s either a process, or a file”.File permissions and ACLs only applied upon open.Once you got an FD, permissions and ACL don’t applyanymore.ConsoleKit is easily circumventedOh, and when it fails, you’re borked.
(Live Demo)
![Page 59: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/59.jpg)
I’m sorry to tell you, but it’s broken!
Unix Philosophy: “Something’s either a process, or a file”.File permissions and ACLs only applied upon open.Once you got an FD, permissions and ACL don’t applyanymore.ConsoleKit is easily circumventedOh, and when it fails, you’re borked.
(Live Demo)
![Page 60: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/60.jpg)
I’m sorry to tell you, but it’s broken!
Unix Philosophy: “Something’s either a process, or a file”.File permissions and ACLs only applied upon open.Once you got an FD, permissions and ACL don’t applyanymore.ConsoleKit is easily circumventedOh, and when it fails, you’re borked.
(Live Demo)
![Page 61: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/61.jpg)
I’m sorry to tell you, but it’s broken!
Unix Philosophy: “Something’s either a process, or a file”.File permissions and ACLs only applied upon open.Once you got an FD, permissions and ACL don’t applyanymore.ConsoleKit is easily circumventedOh, and when it fails, you’re borked.
(Live Demo)
![Page 62: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/62.jpg)
My Advice:Stick with pam_console and groups.
![Page 63: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/63.jpg)
D-Bus
![Page 64: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/64.jpg)
Applications sharing a desktop shall work together.
Several IPC methods over the years
Inter Client Exchange
Bonobo/CORBA (Gnome)
dcop (KDE ≤ 3.x). . . and some more.
Lightweight things, like music player remote control.
![Page 65: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/65.jpg)
Applications sharing a desktop shall work together.
Several IPC methods over the years
Inter Client Exchange
Bonobo/CORBA (Gnome)
dcop (KDE ≤ 3.x). . . and some more.
Lightweight things, like music player remote control.
![Page 66: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/66.jpg)
A unified IPC mechanism
D-Bus was originally intended to serve as a unifiedDesktop IPC.
Was soon expanded to serve as a system wide messagepassing system.
![Page 67: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/67.jpg)
A unified IPC mechanism
D-Bus was originally intended to serve as a unifiedDesktop IPC.
Was soon expanded to serve as a system wide messagepassing system.
![Page 68: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/68.jpg)
So, everything is fine, rainbows and unicorns, right?!
To me, the whole thing doesn’t look right.
![Page 69: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/69.jpg)
So, everything is fine, rainbows and unicorns, right?!
To me, the whole thing doesn’t look right.
![Page 70: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/70.jpg)
Java-esque naming
D-Bus uses names likeorg.freedesktop.Hal.Manager
/com/mycompany/TextFileManager
– recommended to use domain name.
![Page 71: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/71.jpg)
Java-esque naming
D-Bus uses names likeorg.freedesktop.Hal.Manager
/com/mycompany/TextFileManager
– recommended to use domain name.
![Page 72: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/72.jpg)
Narcistic Namespacing
Names don’t reveal the functionWithout functional grouping each servicedefines it’s very own interfaceWhat if a Name get’s changed?
Ethereal→WiresharkwxWindows→ wxWidgets
Just take a short look at Linux’ SysFS foran example of usefull namespacing.
![Page 73: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/73.jpg)
Narcistic Namespacing
Names don’t reveal the functionWithout functional grouping each servicedefines it’s very own interfaceWhat if a Name get’s changed?
Ethereal→WiresharkwxWindows→ wxWidgets
Just take a short look at Linux’ SysFS foran example of usefull namespacing.
![Page 74: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/74.jpg)
Narcistic Namespacing
Names don’t reveal the functionWithout functional grouping each servicedefines it’s very own interfaceWhat if a Name get’s changed?
Ethereal→WiresharkwxWindows→ wxWidgets
Just take a short look at Linux’ SysFS foran example of usefull namespacing.
![Page 75: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/75.jpg)
Narcistic Namespacing
Names don’t reveal the functionWithout functional grouping each servicedefines it’s very own interfaceWhat if a Name get’s changed?
Ethereal→WiresharkwxWindows→ wxWidgets
Just take a short look at Linux’ SysFS foran example of usefull namespacing.
![Page 76: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/76.jpg)
No transparent networking
Yes, D-Bus has TCP transport, but:no authenticationno authorizationno encryptionSrsly? A network transport no older than 5years, without any means for security?And it’s quite a mess to get to work nevertheless.
![Page 77: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/77.jpg)
No transparent networking
Yes, D-Bus has TCP transport, but:no authenticationno authorizationno encryptionSrsly? A network transport no older than 5years, without any means for security?And it’s quite a mess to get to work nevertheless.
![Page 78: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/78.jpg)
No transparent networking
Yes, D-Bus has TCP transport, but:no authenticationno authorizationno encryptionSrsly? A network transport no older than 5years, without any means for security?And it’s quite a mess to get to work nevertheless.
![Page 79: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/79.jpg)
Must be setup additionall to X11
session bus is independent from X11⇒ every GUI program has to do multiple bookkeeping
X11D-Bus
ssh -X . . ., what about that?
Nothing particularily difficult to implement, butthat would add complexity, for only little gain.
![Page 80: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/80.jpg)
Must be setup additionall to X11
session bus is independent from X11⇒ every GUI program has to do multiple bookkeeping
X11D-Bus
ssh -X . . ., what about that?
Nothing particularily difficult to implement, butthat would add complexity, for only little gain.
![Page 81: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/81.jpg)
Must be setup additionall to X11
session bus is independent from X11⇒ every GUI program has to do multiple bookkeeping
X11D-Bus
ssh -X . . ., what about that?
Nothing particularily difficult to implement, butthat would add complexity, for only little gain.
![Page 82: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/82.jpg)
Must be setup additionall to X11
session bus is independent from X11⇒ every GUI program has to do multiple bookkeeping
X11D-Bus
ssh -X . . ., what about that?
Nothing particularily difficult to implement, butthat would add complexity, for only little gain.
![Page 83: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/83.jpg)
Must be setup additionall to X11
session bus is independent from X11⇒ every GUI program has to do multiple bookkeeping
X11D-Bus
ssh -X . . ., what about that?
Nothing particularily difficult to implement, butthat would add complexity, for only little gain.
![Page 84: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/84.jpg)
D-Bus is FreeDesktop’s Hammer
Each and everything done by FreeDesktopis tied to D-Bus somehow.
Even things where D-Bus makes no sense.
Case in Point: Status Notifier Items You know, SysTray.
![Page 85: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/85.jpg)
D-Bus is FreeDesktop’s Hammer
Each and everything done by FreeDesktopis tied to D-Bus somehow.
Even things where D-Bus makes no sense.
Case in Point: Status Notifier Items You know, SysTray.
![Page 86: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/86.jpg)
D-Bus is FreeDesktop’s Hammer
Each and everything done by FreeDesktopis tied to D-Bus somehow.
Even things where D-Bus makes no sense.
Case in Point: Status Notifier Items You know, SysTray.
![Page 87: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/87.jpg)
D-Bus is FreeDesktop’s Hammer
Each and everything done by FreeDesktopis tied to D-Bus somehow.
Even things where D-Bus makes no sense.
Case in Point: Status Notifier Items You know, SysTray.
![Page 88: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/88.jpg)
XSystemTray
Old method: SysTray is a special kind of sub-windowmanager.Each item a own X11 window⇒ one could use everythingX11 provides to draw it – serverside. (GPU accelerationFTW)It works for every X11 client, independent of host,transport and connection.
![Page 89: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/89.jpg)
Status Notifier
Status Notifier uses D-Bus for transport, graphical itemsare transported as raw pixmaps or SVG. (dynamicupdates?)Status Notifier only available to programs having access tothe D-Bus (remember, remote X11 vs. D-Bus).
![Page 90: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/90.jpg)
If you care about common look and feel: Define userinterface guidelies, provide a common library.
That’s actually done by GTK+ and Qt (the library thing).
![Page 91: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/91.jpg)
If you care about common look and feel: Define userinterface guidelies, provide a common library.
That’s actually done by GTK+ and Qt (the library thing).
![Page 92: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/92.jpg)
That horse can carry only so much.
D-Bus doesn’t scale!
There’s actually been made the suggestion to give Linux anew special D-Bus socket type, to overcome routingbottlenecks.
![Page 93: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/93.jpg)
That horse can carry only so much.
D-Bus doesn’t scale!
There’s actually been made the suggestion to give Linux anew special D-Bus socket type, to overcome routingbottlenecks.
![Page 94: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/94.jpg)
There are better tools
Instead of D-Bus we could use IPv6 * Local Multicast.scales wellcan be versatilely routed (address rewriting)cryptographic batteries included (IPv6 mandates IPSec –Unicast)no single point of failure (D-Bus daemon) – well, the kernelmay crash, but then you’ve got other problems.
This idea courtesy by Fefe.
![Page 95: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/95.jpg)
There are better tools
Instead of D-Bus we could use IPv6 * Local Multicast.scales wellcan be versatilely routed (address rewriting)cryptographic batteries included (IPv6 mandates IPSec –Unicast)no single point of failure (D-Bus daemon) – well, the kernelmay crash, but then you’ve got other problems.
This idea courtesy by Fefe.
![Page 96: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/96.jpg)
There are better tools
Instead of D-Bus we could use IPv6 * Local Multicast.scales wellcan be versatilely routed (address rewriting)cryptographic batteries included (IPv6 mandates IPSec –Unicast)no single point of failure (D-Bus daemon) – well, the kernelmay crash, but then you’ve got other problems.
This idea courtesy by Fefe.
![Page 97: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/97.jpg)
There are better tools
Instead of D-Bus we could use IPv6 * Local Multicast.scales wellcan be versatilely routed (address rewriting)cryptographic batteries included (IPv6 mandates IPSec –Unicast)no single point of failure (D-Bus daemon) – well, the kernelmay crash, but then you’ve got other problems.
This idea courtesy by Fefe.
![Page 98: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/98.jpg)
There are better tools
Instead of D-Bus we could use IPv6 * Local Multicast.scales wellcan be versatilely routed (address rewriting)cryptographic batteries included (IPv6 mandates IPSec –Unicast)no single point of failure (D-Bus daemon) – well, the kernelmay crash, but then you’ve got other problems.
This idea courtesy by Fefe.
![Page 99: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/99.jpg)
There are better tools
Instead of D-Bus we could use IPv6 * Local Multicast.scales wellcan be versatilely routed (address rewriting)cryptographic batteries included (IPv6 mandates IPSec –Unicast)no single point of failure (D-Bus daemon) – well, the kernelmay crash, but then you’ve got other problems.
This idea courtesy by Fefe.
![Page 100: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/100.jpg)
There are better tools
Instead of D-Bus we could use IPv6 * Local Multicast.scales wellcan be versatilely routed (address rewriting)cryptographic batteries included (IPv6 mandates IPSec –Unicast)no single point of failure (D-Bus daemon) – well, the kernelmay crash, but then you’ve got other problems.
This idea courtesy by Fefe.
![Page 101: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/101.jpg)
PolicyKit
![Page 102: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/102.jpg)
What is PolicyKit
PolicyKit is an application-level toolkit for defining andhandling the policy that allows unprivileged processes tospeak to privileged processes: It is a framework forcentralizing the decision making process with respect togranting access to privileged operations for unprivilegedapplications. PolicyKit is specifically targeting applicationsin rich desktop environments on multi-user UNIX-likeoperating systems.
–[PolicyKit homepage]
![Page 103: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/103.jpg)
PolicyKit
Oftenly compared to sudosudo escalatesPolicyKit authorizes
Uses D-Bus. . .
![Page 104: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/104.jpg)
Authorizing means
A program capable of privileged action iscommaned to perform a task.Before this task is performed, PolicyKit isused to ask the user for permission
If the user itself has no permission⇒ DenyIf the user authenticates the action⇒ Execute it.
⇒ The privileged programm is runningall the time, or started by pkexec
To me this sounds prone to logic errorson the privileged side..Could we attack the privileged programthrough the action request?
![Page 105: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/105.jpg)
Authorizing means
A program capable of privileged action iscommaned to perform a task.Before this task is performed, PolicyKit isused to ask the user for permission
If the user itself has no permission⇒ DenyIf the user authenticates the action⇒ Execute it.
⇒ The privileged programm is runningall the time, or started by pkexec
To me this sounds prone to logic errorson the privileged side..Could we attack the privileged programthrough the action request?
![Page 106: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/106.jpg)
Authorizing means
A program capable of privileged action iscommaned to perform a task.Before this task is performed, PolicyKit isused to ask the user for permission
If the user itself has no permission⇒ DenyIf the user authenticates the action⇒ Execute it.
⇒ The privileged programm is runningall the time, or started by pkexec
To me this sounds prone to logic errorson the privileged side..Could we attack the privileged programthrough the action request?
![Page 107: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/107.jpg)
Asking per task is a bad idea anyway
The whole thing is much like Windows UAC: The user getsnagged about authorizing this and that everytime.
Entering privileged realms itself should be protected.
Privileged stuff should not be required to be set so oftenly,that a convenient way to ask the user is required at all.
![Page 108: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/108.jpg)
Asking per task is a bad idea anyway
The whole thing is much like Windows UAC: The user getsnagged about authorizing this and that everytime.
Entering privileged realms itself should be protected.
Privileged stuff should not be required to be set so oftenly,that a convenient way to ask the user is required at all.
![Page 109: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/109.jpg)
Asking per task is a bad idea anyway
The whole thing is much like Windows UAC: The user getsnagged about authorizing this and that everytime.
Entering privileged realms itself should be protected.
Privileged stuff should not be required to be set so oftenly,that a convenient way to ask the user is required at all.
![Page 110: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/110.jpg)
Automatisms
6=
Things Just Work
![Page 111: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/111.jpg)
NetworkManager
I think I invented it, or at least came up with that idea:http://forums.gentoo.org/viewtopic-t-163808-highlight-.html
Looking for program. . . that is automatically settingthe network interfaces, depending on the devicesconnected to. E.g. I’d like to configure my eth0 connectionto either DHCP if it find’s a certain host via MAC or to astatic IP if it detects another host. Also I need somethingsimilair for WLAN, depending on the found ESSID and/orthe strongest signal.
Also it should work as a daemon, so that it a physicalconnection gets lost automatically the route tables andresolv.conf are adjusted, and vice versa. –[I in Gentooforums 2004-04-20]
![Page 112: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/112.jpg)
Sorry about that
Today’s situationEither you’re constantly roaming networks, then thenetwork should provide the configuration and you don’tcare.Or your system is statically bound to a certain network, butthen a user must not change anything.GSM/UMTS/LTE? Similary: About every 3G modem canbe configured to act as a network interface. The rest, seeabove.
![Page 113: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/113.jpg)
Sorry about that
Today’s situationEither you’re constantly roaming networks, then thenetwork should provide the configuration and you don’tcare.Or your system is statically bound to a certain network, butthen a user must not change anything.GSM/UMTS/LTE? Similary: About every 3G modem canbe configured to act as a network interface. The rest, seeabove.
![Page 114: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/114.jpg)
Sorry about that
Today’s situationEither you’re constantly roaming networks, then thenetwork should provide the configuration and you don’tcare.Or your system is statically bound to a certain network, butthen a user must not change anything.GSM/UMTS/LTE? Similary: About every 3G modem canbe configured to act as a network interface. The rest, seeabove.
![Page 115: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/115.jpg)
Sorry about that
Today’s situationEither you’re constantly roaming networks, then thenetwork should provide the configuration and you don’tcare.Or your system is statically bound to a certain network, butthen a user must not change anything.GSM/UMTS/LTE? Similary: About every 3G modem canbe configured to act as a network interface. The rest, seeabove.
![Page 116: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/116.jpg)
Ubuntu Desktop + NetworkManager
Your network connection will only come up,after you log on. WTF?! . . . can be configured otherweise.
This doesn’t just work.
![Page 117: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/117.jpg)
Ubuntu Desktop + NetworkManager
Your network connection will only come up,after you log on. WTF?! . . . can be configured otherweise.
This doesn’t just work.
![Page 118: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/118.jpg)
Ubuntu Desktop + NetworkManager
Your network connection will only come up,after you log on. WTF?! . . . can be configured otherweise.
This doesn’t just work.
![Page 119: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/119.jpg)
Removeable Storage Media
USB Thumb drive get’s plugged in:
Many methods so far:automounters (until ca. 2002)fstab adjusters (I still prefer this)ivman (ca. 2004)pmounthal-mountCurrently: UDisks
![Page 120: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/120.jpg)
Removeable Storage Media
USB Thumb drive get’s plugged in:
Many methods so far:automounters (until ca. 2002)fstab adjusters (I still prefer this)ivman (ca. 2004)pmounthal-mountCurrently: UDisks
![Page 121: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/121.jpg)
None of these tackles the problem itself
It boils down to:A storage medium must be mounted to be accessible(easy)After its use it must be cleanly synched and unmountedbefore disconnecting, otherwise data is lost (hard).Users don’t really understand about the need forsynching/unmounting, they did click the “Save”button, so why’d not saved yet?
I understand my audience, or at least the majorityunderstand the problem though, right?
mount -o sync not such a good solution, either.
![Page 122: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/122.jpg)
None of these tackles the problem itself
It boils down to:A storage medium must be mounted to be accessible(easy)After its use it must be cleanly synched and unmountedbefore disconnecting, otherwise data is lost (hard).Users don’t really understand about the need forsynching/unmounting, they did click the “Save”button, so why’d not saved yet?
I understand my audience, or at least the majorityunderstand the problem though, right?
mount -o sync not such a good solution, either.
![Page 123: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/123.jpg)
None of these tackles the problem itself
It boils down to:A storage medium must be mounted to be accessible(easy)After its use it must be cleanly synched and unmountedbefore disconnecting, otherwise data is lost (hard).Users don’t really understand about the need forsynching/unmounting, they did click the “Save”button, so why’d not saved yet?
I understand my audience, or at least the majorityunderstand the problem though, right?
mount -o sync not such a good solution, either.
![Page 124: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/124.jpg)
None of these tackles the problem itself
It boils down to:A storage medium must be mounted to be accessible(easy)After its use it must be cleanly synched and unmountedbefore disconnecting, otherwise data is lost (hard).Users don’t really understand about the need forsynching/unmounting, they did click the “Save”button, so why’d not saved yet?
I understand my audience, or at least the majorityunderstand the problem though, right?
mount -o sync not such a good solution, either.
![Page 125: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/125.jpg)
I don’t know of any good solution either.
But just providing nicer looking buttons won’t help.
Maybe this problem will silently go away? Everythingstored in the Cloud . . .→ has it’s own wealth of problems.Discussed on this congress.
![Page 126: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/126.jpg)
I don’t know of any good solution either.
But just providing nicer looking buttons won’t help.
Maybe this problem will silently go away? Everythingstored in the Cloud . . .→ has it’s own wealth of problems.Discussed on this congress.
![Page 127: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/127.jpg)
I don’t know of any good solution either.
But just providing nicer looking buttons won’t help.
Maybe this problem will silently go away? Everythingstored in the Cloud . . .→ has it’s own wealth of problems.Discussed on this congress.
![Page 128: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/128.jpg)
I don’t know of any good solution either.
But just providing nicer looking buttons won’t help.
Maybe this problem will silently go away? Everythingstored in the Cloud . . .→ has it’s own wealth of problems.Discussed on this congress.
![Page 129: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/129.jpg)
I don’t know of any good solution either.
But just providing nicer looking buttons won’t help.
Maybe this problem will silently go away? Everythingstored in the Cloud . . .→ has it’s own wealth of problems.Discussed on this congress.
![Page 130: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/130.jpg)
One API to configurethem all. . .
![Page 131: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/131.jpg)
GConf
Daemon and library providing unified interface toconfiguration data.Hierachical, key structured databaseOpen to various storage backends, but so far
keys structured by directoriesvalues in XML files (may also contain keys)
Single point of failureMuch like the Windows registry
![Page 132: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/132.jpg)
GConf
Daemon and library providing unified interface toconfiguration data.Hierachical, key structured databaseOpen to various storage backends, but so far
keys structured by directoriesvalues in XML files (may also contain keys)
Single point of failureMuch like the Windows registry
![Page 133: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/133.jpg)
GConf
Daemon and library providing unified interface toconfiguration data.Hierachical, key structured databaseOpen to various storage backends, but so far
keys structured by directoriesvalues in XML files (may also contain keys)
Single point of failureMuch like the Windows registry
![Page 134: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/134.jpg)
XSettings
X11 centric configuration systemColours, Mouse PointersInput devices bahaviour
. . . eh, don’t we have Xrm for that?
![Page 135: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/135.jpg)
XSettings
X11 centric configuration systemColours, Mouse PointersInput devices bahaviour
. . . eh, don’t we have Xrm for that?
![Page 136: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/136.jpg)
What are the claimed problems of Xrm?
All settings in one single property of the root window.No fine grained access to settingsChanges to settings not easily detectibleLarge amount of data to process just to retrieve a verysmall subset from it.
![Page 137: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/137.jpg)
Proposal of XSettings
Settings managed by a XSettings daemon, providing a(invisible) settings window (remember, single point offailure).Serial numbers to identify changed settingsData stored in binary format, with no endianess enforced– lolwut? Sounds like fun:
Integer overflowsBuffer overrunsShellcode injection
![Page 138: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/138.jpg)
Proposal of XSettings
Settings managed by a XSettings daemon, providing a(invisible) settings window (remember, single point offailure).Serial numbers to identify changed settingsData stored in binary format, with no endianess enforced– lolwut? Sounds like fun:
Integer overflowsBuffer overrunsShellcode injection
![Page 139: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/139.jpg)
Do these people suffer from schizophrenia?
The Xrm database stores all information in a single textproperty on the root window. This makes it difficult todetermine what settings have changed; it is necessary toparse the property and do string comparisons.
And later on in the very same document:
Why use a single property for all settings?Using a single property has several advantages. First,
retrieving all settings takes only a single round-trip to theserver instead of a round-trip for each settings. Second, itmeans that when multiple settings can be changed atonce, only a single notification is received by clients, andclients will see interrelated properties changed in anatomic fashion.
![Page 140: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/140.jpg)
Do these people suffer from schizophrenia?
The Xrm database stores all information in a single textproperty on the root window. This makes it difficult todetermine what settings have changed; it is necessary toparse the property and do string comparisons.
And later on in the very same document:
Why use a single property for all settings?Using a single property has several advantages. First,
retrieving all settings takes only a single round-trip to theserver instead of a round-trip for each settings. Second, itmeans that when multiple settings can be changed atonce, only a single notification is received by clients, andclients will see interrelated properties changed in anatomic fashion.
![Page 141: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/141.jpg)
Zombies. . . aim for the head.
![Page 142: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/142.jpg)
HAL
Hardware Abstraction LayerA better backronym would beHardware Annotation Library.Huge crapload of unreadable andunmaintainable XML files.Officially deprecated!Though still in use by some Distros– (aim for the. . ., well, you know what to do).
![Page 143: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/143.jpg)
HAL
Hardware Abstraction LayerA better backronym would beHardware Annotation Library.Huge crapload of unreadable andunmaintainable XML files.Officially deprecated!Though still in use by some Distros– (aim for the. . ., well, you know what to do).
![Page 144: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/144.jpg)
HAL
Hardware Abstraction LayerA better backronym would beHardware Annotation Library.Huge crapload of unreadable andunmaintainable XML files.Officially deprecated!Though still in use by some Distros– (aim for the. . ., well, you know what to do).
![Page 145: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/145.jpg)
HAL
Hardware Abstraction LayerA better backronym would beHardware Annotation Library.Huge crapload of unreadable andunmaintainable XML files.Officially deprecated!Though still in use by some Distros– (aim for the. . ., well, you know what to do).
![Page 146: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/146.jpg)
HAL
Hardware Abstraction LayerA better backronym would beHardware Annotation Library.Huge crapload of unreadable andunmaintainable XML files.Officially deprecated!Though still in use by some Distros– (aim for the. . ., well, you know what to do).
![Page 147: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/147.jpg)
HAL
Hardware Abstraction LayerA better backronym would beHardware Annotation Library.Huge crapload of unreadable andunmaintainable XML files.Officially deprecated!Though still in use by some Distros– (aim for the. . ., well, you know what to do).
![Page 148: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/148.jpg)
I don’t want all this crap
![Page 149: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/149.jpg)
In a organization’s network
central software distributioncentral configurationusers have no privileges at allcustom terminal access solutions (provide access to localymounted media on remotely accessed machine)
I, as an administrator, want the full control over my stuff.
![Page 150: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/150.jpg)
In a organization’s network
central software distributioncentral configurationusers have no privileges at allcustom terminal access solutions (provide access to localymounted media on remotely accessed machine)
I, as an administrator, want the full control over my stuff.
![Page 151: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/151.jpg)
You’ll end up creating your own distribution – or use Gentoo
Customly compiled DesktopsAlternate package sources, patched packagesAlso requires maintaining a custom configuration system
![Page 152: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/152.jpg)
See your carefully crafted configurations break
So we were testing Ubuntu 9.04. . .
University maintains a central authentication database forall students and employees
User Database accessed by LDAP/Active DirectoryKerberos-5 for authentication
A carefully maintained set of Kerberos-5, LDAP nsswitchand PAM config files is providedSome of our older maintenance tools require SSH rootaccess by public key, and only if from our IP range – yes,we know, you don’t do this, but this is like using Duct Tape,it somehow works and then lasts.The system passes all automated security tests.
![Page 153: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/153.jpg)
See your carefully crafted configurations break
So we were testing Ubuntu 9.04. . .
University maintains a central authentication database forall students and employees
User Database accessed by LDAP/Active DirectoryKerberos-5 for authentication
A carefully maintained set of Kerberos-5, LDAP nsswitchand PAM config files is providedSome of our older maintenance tools require SSH rootaccess by public key, and only if from our IP range – yes,we know, you don’t do this, but this is like using Duct Tape,it somehow works and then lasts.The system passes all automated security tests.
![Page 154: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/154.jpg)
See your carefully crafted configurations break
So we were testing Ubuntu 9.04. . .
University maintains a central authentication database forall students and employees
User Database accessed by LDAP/Active DirectoryKerberos-5 for authentication
A carefully maintained set of Kerberos-5, LDAP nsswitchand PAM config files is providedSome of our older maintenance tools require SSH rootaccess by public key, and only if from our IP range – yes,we know, you don’t do this, but this is like using Duct Tape,it somehow works and then lasts.The system passes all automated security tests.
![Page 155: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/155.jpg)
See your carefully crafted configurations break
So we were testing Ubuntu 9.04. . .
University maintains a central authentication database forall students and employees
User Database accessed by LDAP/Active DirectoryKerberos-5 for authentication
A carefully maintained set of Kerberos-5, LDAP nsswitchand PAM config files is providedSome of our older maintenance tools require SSH rootaccess by public key, and only if from our IP range – yes,we know, you don’t do this, but this is like using Duct Tape,it somehow works and then lasts.The system passes all automated security tests.
![Page 156: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/156.jpg)
So what’s the problem, then?
Well,ConsoleKit + PolicyKit have a set of ownPAM rules installedThese rules plus those of our Kerberos-5 auth plus theconfig for root-SSH were a bit unlucky
⇒root could SSH into those boxes without requiring apassword, or a public key, but only if not from our IP range.Only good thing was: root doesn’t get Kerberos tokens inour system, so no harm outside those test machines.
![Page 157: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/157.jpg)
So what’s the problem, then?
Well,ConsoleKit + PolicyKit have a set of ownPAM rules installedThese rules plus those of our Kerberos-5 auth plus theconfig for root-SSH were a bit unlucky
⇒root could SSH into those boxes without requiring apassword, or a public key, but only if not from our IP range.Only good thing was: root doesn’t get Kerberos tokens inour system, so no harm outside those test machines.
![Page 158: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/158.jpg)
So what’s the problem, then?
Well,ConsoleKit + PolicyKit have a set of ownPAM rules installedThese rules plus those of our Kerberos-5 auth plus theconfig for root-SSH were a bit unlucky
⇒root could SSH into those boxes without requiring apassword, or a public key, but only if not from our IP range.Only good thing was: root doesn’t get Kerberos tokens inour system, so no harm outside those test machines.
![Page 159: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/159.jpg)
So what’s the problem, then?
Well,ConsoleKit + PolicyKit have a set of ownPAM rules installedThese rules plus those of our Kerberos-5 auth plus theconfig for root-SSH were a bit unlucky
⇒root could SSH into those boxes without requiring apassword, or a public key, but only if not from our IP range.Only good thing was: root doesn’t get Kerberos tokens inour system, so no harm outside those test machines.
![Page 160: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/160.jpg)
Morale
Yes, it was a configuration error.But to set proper configurations one needs gooddocumentation – for sysadmins.Distributions don’t properly document their inner workings.This must change.Those convoluted interdependencies ofcurrent desktop systems do no good.
![Page 161: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/161.jpg)
Morale
Yes, it was a configuration error.But to set proper configurations one needs gooddocumentation – for sysadmins.Distributions don’t properly document their inner workings.This must change.Those convoluted interdependencies ofcurrent desktop systems do no good.
![Page 162: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/162.jpg)
Morale
Yes, it was a configuration error.But to set proper configurations one needs gooddocumentation – for sysadmins.Distributions don’t properly document their inner workings.This must change.Those convoluted interdependencies ofcurrent desktop systems do no good.
![Page 163: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/163.jpg)
Morale
Yes, it was a configuration error.But to set proper configurations one needs gooddocumentation – for sysadmins.Distributions don’t properly document their inner workings.This must change.Those convoluted interdependencies ofcurrent desktop systems do no good.
![Page 164: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/164.jpg)
We’ve seen only the tip of the iceberg so far.There’s a lot more to consider:Modern Unix Desktops depend on a numberof system level servicesSome of these services aim at replacing corefunctionality, not even related to desktops
systemd (replaces SysV init, upstart, the like)RealtimeKit (a whole story of its own).
The more direct dependencies are created down to thesystem level, the harder it get’s to install alternatives there.Eventually the whole development process may be onlyabout fixing issues – probably by adding complexityinstead of removing – and come to a standstill.
![Page 165: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/165.jpg)
We’ve seen only the tip of the iceberg so far.There’s a lot more to consider:Modern Unix Desktops depend on a numberof system level servicesSome of these services aim at replacing corefunctionality, not even related to desktops
systemd (replaces SysV init, upstart, the like)RealtimeKit (a whole story of its own).
The more direct dependencies are created down to thesystem level, the harder it get’s to install alternatives there.Eventually the whole development process may be onlyabout fixing issues – probably by adding complexityinstead of removing – and come to a standstill.
![Page 166: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/166.jpg)
Large, complicated set of immutable dependencies =
We’re getting locked in!
![Page 167: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/167.jpg)
Conclusion
![Page 168: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/168.jpg)
Conclusion
Fallacies of contemporary desktop development:
Errection of huge and complex structuresFeatures given more weight than simplicity and stabilityProblems oftenly not properly identifiedProblems tackled by throwing even more code at them,instead of fixing proper cause.
![Page 169: Desktop on the Linux (and *BSD of course) ::](https://reader036.fdocuments.net/reader036/viewer/2022071600/613d1a52736caf36b75957fc/html5/thumbnails/169.jpg)
Quotes of famous people
Simplicity is the highest form of sophistication.– unattributed (Leonardo da Vinci?)
Complexity has nothing to do with intelligence,simplicity does.– Larry Bossidy
Make things as simple as possible – but not simpler.– Albert Einstein
Those who don’t understand Unixare doomed to reinvent it, poorly.– Henry Spencer