Kasım 2014 itibariyle , aslında adlandırılan Cygwin / X sunucusunu başlatmak için en son startxwin
kullanım sürümleri . Süreç böyle bir şeye gider:xinit
XWin.exe
- Sen ara
startxwin
startxwin
yeni bir .Xauthority
dosya ve bir dosya oluşturur .serverauth.1234
( 1234
X'i her başlattığınızda değişir)
startxwin
bazı istemci ve sunucu parametrelerini ayarlar
startxwin
xinit
isteğe bağlı kabuk komut dosyaları ve kimlik doğrulama dosyasına bir başvuru da dahil olmak üzere istemci ve sunucu parametreleriyle çağrı yapar .
xinit
rc sunucusunu çalıştırarak X sunucusunu başlatır
xinit
istemciyi (genellikle xterm
) veya istemci rc komut dosyasını başlatır . Bundan kaçınmak istiyoruz
- İstemciyi kapattığınızda veya istemci rc komut dosyası tamamlandığında,
xinit
X sunucusunu kapatır. 6. adımdan kaçınırsak, bundan da kaçınmamız gerekir
Çalıştırmak mümkündür XWin.exe
çevreleyen görevler olmadan Bash giriş kabuğu içinde doğrudan startxwin
ve xinit
gerçekleştirin. Bunun ana avantajı, istediğimiz gibi davranmasıdır: X sunucusu başlar ve çalışmaya devam eder. Ne yazık ki, .Xauthority
başlatma sırasında herhangi bir dosya geçirilmediğinden, X sunucunuz herhangi bir yerel işlemin ona bağlanmasına izin verir, bu da güvensizdir.
Neyse ki xinit
istemediğimiz şeylerin çoğunu yapıyor. Atlayan xinit
ancak startxwin
sunucunun kendisiyle ilgili kalan öğeleri tutan hızlı bir saldırı var .
TL; DR: İçinde startxwin
, dibine yakın bir satır var:
eval xinit \"$client\" $clientargs -- \"$server\" $display $serverargs
Bu satırı şu şekilde değiştirin:
eval \"$server\" $display $serverargs
Bundan sonra, startxwin
komut dosyası çağırmak XWin.exe
yerine doğrudan arayacaktır xinit
. Açıkçası bu, herhangi bir istemci rc komut dosyasını devre dışı bırakacaktır, ancak ilk başta bunları istemedik. Ayrıca, X'in hayatta kalması için bir istemci sürecine ihtiyaç duymadan çalışmaya devam edeceği anlamına gelir (yani xinit
öldürmekten kaçının).
exec sleep infinity
burada gösterildiği gibi: x.cygwin.com/docs/faq/cygwin-x-faq.html#q-startxwinrc-exit