Ubuntu'nun XRDP oturumu üzerinden erişildiğinde farklı bir PATH'si var


9

Noob burada: Bir sorunum var, sunucuma SSH üzerinden eriştiğimde $ PATH doğru

root@ks391320:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Ama sunucumu XRDP oturumu ile açıp terminale gittiğimde yanlış bir PATH gösteriyor :

root@ks391320:~# echo $PATH
/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin

Her ikisinin ekran görüntüsü: Ekran görüntüsü

Ve bu bir sorun yaratır çünkü "Paket Yükleyici" kullanarak bir şey yüklemeye çalıştığımda bu hatayı gösterir (diğerleri arasında)

dpkg: warning: 'ldconfig' not found in PATH

Yanıtlar:


7

Ubuntu-18.04 için, /etc/pam.d/xrdp-sesman başlangıçta aşağıdaki satırları düzenleyin ve girin:

session       required   pam_env.so readenv=1 envfile=/etc/environment
session       required   pam_env.so readenv=1 envfile=/etc/default/locale

Evet, bu olmadan, xrdp oturumlarımda tanımlanan tüm değişkenler eksikti /etc/environment!
wisbucky

5

1

Sistem genelinde varsayılan PATH, içinde tanımlanır /etc/environment. İlk olarak, bunun aklı başında bir değere ayarlandığını doğrulayın. Referans olarak, varsayılan yüklemeyle aynı olan benimdir:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

2

Eğer /etc/environmentaklı başında ve hâlâ sorun yaşıyorsanız, size varsayılan PATH geçersiz kılabilir ~/.bashrc. Örneğin, bu var ve sadece varsa ve zaten benim PATH değilse PATH için bir dizin ekleyen benim .bashrc var:

if [ -d "$HOME/bin" ]; then
    if [[ $PATH =~ $HOME/bin ]]; then :
    else export PATH="$HOME/bin:$PATH"
    fi
fi

Ekran görüntünüzden kök girişlerini etkinleştirdiğiniz göründüğünden, root'un .bashrc ayarını da yaptığınızdan emin olun. (Bu arada, root Ubuntu'da varsayılan olarak giriş yapamadığından, bu yapılandırma muhtemelen daha az test edilmiştir ve muhtemelen sorununuzla ilgili olabilir.)

3

İlk iki yöntem başarısız olursa, XRDP istemcinizin egzotik bir şey yapıp yapmadığını kontrol edin. Öyleyse, normal şekilde çalışacak şekilde yapılandırmanız veya etrafında çalışmanın bir yolunu tanımlamanız gerekir.

Güncelleme

Sistemin etrafına biraz bakıyorum. Aşağıdaki komutla sisteminizde bir PATH belirten tüm yerleri bulabilirsiniz ( sudoaltında bazı dosyalar /etcnormal kullanıcılar tarafından okunamıyor çünkü oradadır ):

sudo egrep -nr '\bPATH' /etc | less

Bu komutların çoğunu görmezden gelmenin güvenli olduğunu düşünüyorum ve aşağıdaki komutla sonuçlandı:

sudo egrep -nr '\bPATH' /etc | egrep -v '^/etc/(init|rc|ppp|bash_c)' | egrep -v '^Binary' | less

Mümkün olan bir dosya (gerçekten çok fazla bilmiyorum) /etc/login.defs. Buna bir göz atabilirsiniz.

Ayrıca, dotfiles dosyalarınızı da kullanabilirsiniz:

egrep -nr '\bPATH' $HOME/.* | less

"Ortam" dosyası normaldir, ~ / .bashrc dosyasına doğru yollar eklenmesi komutların terminalde çalışmasını sağlar ancak yine de Ubuntu "Package Installer" üzerinde çalışmaz. Sorunun kökünü bulamadım ama şimdi bir çözümüm var, / bin / içinde gerekli her programa (ldconfig, vb.) Sembolik bir bağlantı oluşturdum ... bu muhtemelen bir güvenlik ihlalidir, bu yüzden bu soruyu bırakacağım Herkesin daha iyi bir çözüm bulması durumunda açın.
Ivan Castellanos

@IvanCastellanos: AFAIK adında bir program olmadığı için "paket yükleyici" ile ne demek istediğinizden emin değilim. Paketleri yüklemek için attığınız adımları açıklayabilir misiniz? Ve bu bir GUI veya komut satırı yükleyicisi mi?
Scott Severance

Üzgünüm, demek istediğim "GDebi Packpage Installer" (GUI).
Ivan Castellanos

@IvanCastellanos: Başlatıyor musunuz gksudo gdebi-gtk /full/path/to/package.deb? Biraz seçici buldum. Öyleyse, başlatıldığı ortamı miras almalıdır.
Scott Severance

3

Tam açıklama: Ubuntu kullanmıyorum ... ama Debian ile aynı sorunu yaşadım.

xrdp /etc/xrdp/startwm.sh uygulamasını başlatır (Ubuntu bu konumu değiştirmedikçe). Bu satırı ekledim:

. /etc/profile

/etc/xrdp/startwm.sh dosyasının en üstüne gidin ve PATH artık doğru şekilde ayarlandı.

Ubuntu için,

. /etc/environment

/etc/xrdp/startwm.sh sayfasının en üstüne aynı şeyi yapabilir.


2

Bu beni de bir süre boğdu. /etc/environmentbir kabuk komut dosyası değildir, bu yüzden bir komut dosyası diyemezsiniz. Benim için işe yarayan pam xrdp oturum yöneticisi "sesman" komut dosyasını düzenlemek oldu. Dosyama "oturum" satırını ekledim /etc/pam.d/sesman:

#%PAM-1.0
session required pam_env.so readenv=1 user_readenv=0
@include common-auth
@include common-account
@include common-session
@include common-password

Bu, oturum yöneticisinin /etc/environmentoturum açma sırasında dosyayı yüklemesini sağlar .


1

Teoride ekleme

. /etc/environment

ama işe yaramaz. Sorunu düzeltmek için sadece .bashrc'nin üstüne koydum


1

Önceki cevaplar sayesinde böyle bir çözüme geldim:

cat /etc/xrdp/startwm.sh | sed "s/. \/etc\/X11\/Xsession/. \/etc\/environment/" > ./startwm.sh && echo ". /etc/X11/Xsession" >> ./startwm.sh && sudo mv ./startwm.sh /etc/xrdp/startwm.sh && sudo chmod 755 /etc/xrdp/startwm.sh

En uygun değil çalışan olabilir (Ubuntu 12.04).


1

@ John: /etc/xrdpstartwm.sh adresinizi kontrol etmeniz gerektiğine inanıyorum - benimki ilk satırlar okuyor,

if [ -f /etc/X11/xinit/xinitrc ]
then
    . /etc/X11/xinit/xinitrc
    exit 0
fi**

Bu, / etc / X11xinit / xinitrc varsa, bunun yerine o dosyanın yürütüleceği anlamına gelir - ve

. /etc/environment

/etc/xrdpstartwm.sh adresine gidin. :-)

/ Hertz Başına

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.