Normal kullanıcı hesabım, diyelim ki user1. Ben user1 olarak x oturum açarken çalıştırmak istiyorum bazı x uygulama için ayrı user2 yarattı ama bir şekilde user1 verilere okuma/yazma erişimi engelleyecektir. Ben bu uygulamayı çalıştırmak için user1 gelen user2 için xauth ve Sudo/su kullanabilirsiniz düşündüm. Bunu nasıl yaparım? Xauth'u nasıl yapılandıracağından emin değilim.
KDE'de benim için harika bir şey buldum
kdesu -u username /path/to/program
Xauth selective, öğesini user1 run olarak kullanmak için:
xauth list|grep `uname -n`
Bu, sizin için hexkey yetkilendirme girdilerini yazdırır. Siz bu ana bilgisayarlarla ilişkili farklı ekranlara sahip olabilirsiniz.
User2 ekranınızı ayarladıkça (varsayılan durum varsayılırsa):
DISPLAY=:0; export DISPLAY
O zaman koş:
xauth add $DISPLAY . hexkey
$ DISPLAY sonrasında ve hexkey'den önceki noktaya dikkat edin.
Artık erişim gerekli olmadığında, user2 olarak şunları çalıştırabilirsiniz:
xauth remove $DISPLAY
.zshrc
'A export XAUTHORITY=~/.Xauthority
İçeren bir satır ekledim ve şimdi Sudo -E xcommand
' U yürütebiliyorum. Çok fazla googling yaptıktan sonra, benim için en kolay yol buydu.
Birincisi: xhost +
Kullanmayın, oldukça güvensizdir (battaniye izin ver/reddet).
Bunun yerine X-Cookie mekanizmasını kullanın:
su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority
export DISPLAY=:0
Alternatif olarak, sux
yüklüyse, bunu kullanın (ehempel'in cevabına bakın).
Her iki durumda da user2, X sunucusuna yetki vermek için .Xauthority içindeki gizli çerezi kullanacak ve başka hiç kimse buna erişemeyecektir.
Notlar:
.Xauthority
Kopyalamak yerine, yetki anahtarını çıkarmak ve kopyalamak için xauth
kullanabilirsiniz (Randall'ın cevabına bakın). .Xauthority
Dosyasında birden fazla anahtar varsa, bu daha seçicidir; aksi halde bir tat meselesidir.Debian veya ubuntu varsayarsak (Red Hat/SUSE'de benzer olmalıdır).
Sudo apt-get install sux
sux user -c 'command'
Bu, sorunu tüm kullanıcılar için çözecektir:
cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF
Kök olarak:
xhost local:yourusername
Kullanıcı adınız kullanıcı adınız olduğunda :)
O zaman su kullanıcısı xclock
kurulu ise çalışmalıdır
Bunlar sadece hack'lerdir:
yukarıdaki sleske, bence, doğru çözüm var.
Bu şekilde suse/opensuse içinde yapılmıştır: http://www.novell.com/support/kb/doc.php?id=700374
Basitçe /etc/pam.d/su dosyasını değiştirerek (kalın) seçeneği ekleyin:
oturum isteğe bağlı pam_xauth.so sistem kullanıcısı = 1
Sonra su ile geçiş yapmadan -:
su user2
ve uygulamayı grafik olarak çalıştırın.