xauth'un Linux uygulamasını diğer kullanıcı aracılığıyla linux'ta çalıştırmak için nasıl kullanılacağı


48

Düzenli kullanıcı hesabım, diyelim ki kullanıcı1. X kullanıcısı1 olarak oturum açarken çalıştırmak istediğim bazı x uygulamaları için ancak user1 verilerine okuma / yazma erişimini önleyecek şekilde ayrı user2 oluşturdum. Bu uygulamayı çalıştırmak için user1'den user2'ye xauth ve sudo / su kullanabileceğimi düşündüm. Bunu nasıl yaparım? Xauth'u nasıl yapılandıracağımdan emin değilim.

Yanıtlar:


32

Xauth'u kullanıcı1 çalıştırmasıyla seçici olarak kullanmak için :

xauth list|grep `uname -n`

Bu sizin için hexkey yetkilendirme girişlerini yazdırır. Bu ana bilgisayarlarla ilişkilendirilmiş farklı ekranlarınız da olabilir .

User2 ekranınızı ayarlarken (varsayılan durum varsayılarak):

DISPLAY=:0; export DISPLAY

O zaman koş:

xauth add $DISPLAY . hexkey

$ DISPLAY'den sonra ve hexkey'den önceki noktaya dikkat edin.

Erişim artık gerekli olmadığında, user2 olarak çalıştırabilirsiniz:

xauth remove $DISPLAY

Sorun 1: user2, .Xauthorityuser2'nin ana dizininde dosya yok . Sorun 2: Her nasılsa ve nedense anlamıyorum, sonra su, XAUTHORITY filepath'i user1'ine tutuyor. Ancak bu dosya user2 tarafından okunamaz.
Otheus

Görünüşe göre, unset XAUTHORITY user2 altında unuttun
socketpair

olduğu hexkeyiçinde xauth addgelen aynı komutla xauth listyoksa rastgele yeni bir tane oluşturun gerekiyor?
bonanza

bonanza: xauth listesinden bir çıktı.
John Eikenberry

1
Bunu yapmanın başka bir yolu da ... "xauth özü - $ DISPLAY | sudo -iu steam xauth birleştirme -" gibi bir şey olabilir. Bu durumda .profile içinde ayarlanmış XAUTHORITY var, bu yüzden 'sudo -i' doğru ayarladı.
John Eikenberry

12

Ben .zshrcbir çizgiye yazdım export XAUTHORITY=~/.Xauthorityve şimdi yürütebiliyorum sudo -E xcommand. Çok fazla googling yaptıktan sonra, bu benim için en kolay yoldu.


1
Bu prosedürün normalde kullanmanızı gerektirmez sudo -E(ve -Eçoğu varsayılan sudoerskurulumda kullanım devre dışıdır), çünkü normalde varsayılan konfigürasyon XAUTHORITYçevre değişkeninin sudo'ya geçmesine izin verir .
Guss

@Guss Bu gerektirmez -E . Geçirilebilecek bir değişken olarak ayarlanabilir ve Red Hat ya da Debian bunu önerir.
Daniel C. Sobral

@ DanielC.Sobral - Ben de öyle demiştim :-)
Guss

@Guss Oh, özür dilerim. Bir şekilde yazdığın her cümleyi ters çevirdim. :-)
Daniel C. Sobral

Hala benim için işe yaramadı, Mac OS X'te zsh ile
Sridhar Sarnobat

9

Debian veya ubuntu varsayarak (Red Hat / SUSE’de benzer olmalıdır).

sudo apt-get install sux
sux user -c 'command'

+1 iyi cevap, tekerleği yeniden icat etmenin anlamı yok. Bu arada, sux çoğunlukla benim cevabımın önerdiği şeyi yapar. Elbette kullanımı daha güçlü ve kolaydır.
sleske

'Sux'un da' basit bir kabuk betiği olduğunu unutmayın .
Martin Mächler

5
suxkorumasız (ve Debian / Ubuntu'nun depolarından kaldırıldı): packages.qa.debian.org/s/sux/news/20140101T172633Z.html
Rob

9

İlk: Kullanmayın xhost +, oldukça güvensiz (battaniye izin verir / reddeder).

Daha çok X-Cookie mekanizmasını kullanın:

su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority 
export DISPLAY=:0

Alternatif olarak, suxyüklediyseniz, bunu kullanın (bkz. Ehempel'in cevabı).

Her iki durumda da user2, X sunucusuna yetki vermek için .Xauthority'deki gizli çerezi kullanır ve başka hiç kimse erişemez.

Notlar:

  • Dosya izinlerinize bağlı olarak .Xauthority'yi başka bir şekilde kopyalamanız gerekebilir.
  • Kopyalama yerine , yetkilendirme anahtarını çıkartmak ve kopyalamak için .Xauthorityde kullanabilirsiniz xauth(Randall'ın cevabına bakınız). .XauthorityDosyada birden fazla anahtarınız varsa, bu daha seçicidir; Aksi halde, bir zevk meselesidir.

evet, o makineye root erişimim var
Phil

Bu, yalnızca xauth çerezlerini kök erişimi yoluyla el ile kopyalamaktır. Bu, xauth kullanmaktan farklı değildir; Randall, (şimdiki) en üst cevabında açıkladığı gibi, 'xauth list' in göstereceği her çerezi kopyalar. Yani bu, yalnızca seçtiğiniz çerezleri ekleyebilecek en iyi xauth yanıtından daha az güvenlidir.
John Eikenberry

@JohnEikenberry: Doğru, bunu gösterdiğiniz için teşekkürler. Cevabımı güncelledim.
sleske

7

Bu, tüm kullanıcılar için sorunu çözecektir:

cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF

Bu temelde ne yaptım ve harika çalışıyor, teşekkürler!
Guss

3

Kök olarak:

xhost local:yourusername

Kullanıcı adınız kullanıcı adınızdır :)

Öyleyse, xclockeğer yüklü ise , kullanıcının çalışması gerektiği için su yapın


2

Bunlar sadece kesmek:

  • xauth + (güvensiz)
  • ssh -X user2 @ localhost (çirkin)

Yukarıdaki sleske, bence uygun bir çözüm var.


ssh -Xkullanımdan kaldırılmış / denetlenmemiş gtk / kde öğelerine (SUID biti ile daha fazla ikili dosya kurulmasını gerektirmez) bağlı olmayan, çok basit ve zarif bir çözümdür.
Stefan,

2

KDE'de benim için harika olan bir şey buldum

kdesu -u username /path/to/program

Debian'ın parçası kde-cli-toolsve içinde değil $PATHama içinde /usr/lib/x86_64-linux-gnu/libexec/kf5/kdesu(açıkça mimariye bağlı olarak).
Stefan,

0

Suse / opensuse'da yapılan bu yol: http://www.novell.com/support/kb/doc.php?id=7003743

/Etc/pam.d/su dosyasını değiştirerek, seçeneği (kalın) ekleyin:

oturum isteğe bağlı pam_xauth.so systemuser = 1

Ardından su olmadan - ile geçiş yapabilirsiniz:

su kullanıcısı2

ve uygulamayı grafik olarak çalıştırın.


-1

GNOME için (ve herhangi bir masaüstü ortamı olmadan, sadece icewm ile kullanıyorum) gksu:

gksu -u username program

"gksu yıllardır itiraz edildi
Stefan,

@Stefan, bu Debian böceğinin, tüm program için ayrıcalıkları yükseltmenin kötü bir fikir olduğuna ve bunun yerine programın yalnızca ayrıcalıklı ayrıcalıklara sahip asgari yardımcıları çalıştırmak için (PolicyKit kullanarak) değiştirilmesi gerektiğini belirtmektedir. Bu soru (ve cevabım) ayrıcalıkları azaltmakla ilgili , bu da tamamen başka bir şey ve aslında iyi bir fikir (örneğin, rastgele tarama için, firefox'u daha az ayrıcalıklı bir hesap altında çalıştıran kısayolum var, bu yüzden herhangi bir istismar olabilir.) verilerime dokunma - ve gksu (8) bunun için gayet iyi)
Matija Nalis

Her şey yolunda, ancak kullanımdan kaldırılmış ve bakımsız bir SUID ikili dosyası kullanmak yanlış. Bu cevap geçmişte faydalı olmuş olabilir, fakat artık değil.
Stefan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.