Seninle aynı soruyu sordum ama normal bir kullanıcı için. Foo kullanıcı hesabını kullanarak firefox'u başlatmak istediğimi varsayalım. Bar olarak giriş yaptım:
[bar@localhost ~]$ sudo -u foo -H firefox
Maalesef, bu komut sorudakiyle aynı hatayla başarısız oldu (örn. Protokol belirtilmedi ve ekranı açamıyor)
Benim çözümüm kullanıcı foo'yu X sunucusuna izin verilen erişim listesine eklemekti.
xhost si:localuser:foo
Ve öyleyse, daha sonra Firefox'u (ve diğer X uygulamalarını) sudo
ve foo kullanıcısını kullanarak başlatabildim .
Arka plan : X Penceresinde, bir istemci / sunucu mimarisi var. Bir uygulamayı başlattığınızda, X sunucusu tarafından görüntülenmesi için yetki isteyin. Bir oturumu açtığınızda (grafiksel olarak oturum açarsanız), varsayılan olarak, sizin (kullanıcınız) sunucuyla iletişim kurmanıza ve uygulamaları görüntülemenize izin verilir. Siz belirtmedikçe, diğer kullanıcılar bu izne sahip değil. xhost
izin listesini değiştirmek için kullanılan bir araçtır. si
Kural sunucu tarafı olduğunu gösterir ve yerel kullanıcı yetki foo
ekran uygulamalara. X Window bu konuda çok güçlü ve uzaktan DISPLAY
değişkenleri ortam değişkeni ile oynayarak yerel olarak görüntüleyebilir ve xhost
(ancak bunlarla sınırlı değil). Eski zamanlarda, insanlar yazdıklarındaxhost +
ve herkesin X oturumunu kullanmasına izin verilmişse, şakalar için ekranlarında uygulama görüntülemek mümkündü; 10 yıl geçmiş).
Not: Bunu Firefox’u bir tür “hapishanede” başlatmak için yaptım (gelecekte pdf.js gibi bir güvenlik açığından kaçınmak için ). Ancak, Firefox'u sudo ile aramanın ses veya video donanımına erişmesine izin vermediğini çabucak öğrendim. Ancak, Firefox'u sudo aracılığıyla çağırırken video donanım ivmesini ve sesini nasıl etkinleştireceğinizi açık bir şekilde açıklayan bir adam var . Bu talimatlara sahip YMMV, örneğin hala ses reddedilmiş iznim var ancak video gayet iyi (Fedora 22'de SELinux ON ile test edildi).