Ubuntu มีเส้นทางที่แตกต่างเมื่อเข้าถึงผ่านเซสชัน XRDP


9

Noob ที่นี่: ฉันมีปัญหาเมื่อฉันเข้าถึงเซิร์ฟเวอร์ของฉันผ่าน SSH $ PATH นั้นถูกต้อง

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

แต่เมื่อฉันเปิดเซิร์ฟเวอร์ของฉันผ่านเซสชัน XRDP และไปที่เทอร์มินัลจะแสดงPATH ไม่ถูกต้อง :

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

ภาพหน้าจอของทั้งคู่: ภาพหน้าจอ

และสิ่งนี้สร้างปัญหาเพราะเมื่อฉันพยายามติดตั้งบางอย่างโดยใช้ "Package Installer" มันจะแสดงข้อผิดพลาดนี้ (ท่ามกลางคนอื่น ๆ )

dpkg: warning: 'ldconfig' not found in PATH

คำตอบ:


7

สำหรับ Ubuntu-18.04 ให้แก้ไข /etc/pam.d/xrdp-sesman และป้อนบรรทัดต่อไปนี้ที่จุดเริ่มต้น:

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

ใช่ถ้าไม่มีสิ่งนี้เซสชัน xrdp ไม่มีตัวแปรทั้งหมดที่กำหนดไว้ในของฉัน/etc/environment!
wisbucky

5

1

/etc/environmentเส้นทางเริ่มต้นทั้งระบบที่กำหนดไว้ใน ก่อนอื่นให้ตรวจสอบว่ามันถูกตั้งค่าเป็นสติ สำหรับการอ้างอิงนี่คือของฉันซึ่งเหมือนกับการติดตั้งเริ่มต้น:

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

2

หาก/etc/environmentมีสติและคุณยังมีปัญหาอยู่คุณสามารถแทนที่ PATH เริ่มต้น~/.bashrcได้ ตัวอย่างเช่นฉันมีสิ่งนี้ใน. bashrc ของฉันซึ่งผนวกไดเรกทอรีไปยัง PATH ของฉันหากว่ามีอยู่และไม่ได้อยู่ในเส้นทางของฉัน:

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

เนื่องจากปรากฏจากภาพหน้าจอของคุณว่าคุณได้เปิดใช้งานการเข้าสู่ระบบรูทดังนั้นอย่าลืมตั้งค่า. bashrc ของรูทด้วย (อย่างไรก็ตามเนื่องจาก root ไม่สามารถเข้าสู่ระบบได้ตามค่าเริ่มต้นใน Ubuntu การตั้งค่านี้อาจทดสอบน้อยกว่าและอาจเกี่ยวข้องกับปัญหาของคุณ)

3

หากสองวิธีแรกล้มเหลวให้ตรวจสอบว่าไคลเอ็นต์ XRDP ของคุณกำลังทำสิ่งที่แปลกใหม่หรือไม่ ถ้าเป็นเช่นนั้นคุณจะต้องกำหนดค่าให้ทำงานตามปกติหรือระบุวิธีแก้ไข

ปรับปรุง

ฉันทำบางอย่างดูรอบ ๆ ระบบ คุณสามารถค้นหาสถานที่ทั้งหมดในระบบของคุณที่ระบุ PATH ด้วยคำสั่งต่อไปนี้ ( sudoอยู่ที่นั่นเพราะบางไฟล์ภายใต้/etcไม่สามารถอ่านได้โดยผู้ใช้ปกติ):

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

ฉันคิดว่ามันปลอดภัยที่จะเพิกเฉยต่อสถานที่เหล่านั้นจำนวนมากส่งผลให้เกิดคำสั่งต่อไปนี้:

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

ไฟล์หนึ่งที่มีลักษณะที่เป็นไปได้ ( แต่ผมไม่ทราบว่ามากเกินไปเกี่ยวกับเรื่องนี้) /etc/login.defsเป็น คุณอาจจะดูมัน

นอกจากนี้คุณสามารถ grep dotfiles ของคุณได้เช่นกัน:

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

ไฟล์ "environment" เป็นเรื่องปกติการเพิ่มพา ธ ที่ถูกต้องไปยัง ~ / .bashrc ทำให้คำสั่งรันบนเทอร์มินัล แต่ยังไม่สามารถใช้งานได้บน Ubuntu "Package Installer" ฉันไม่พบรากของปัญหา แต่ฉันมีวิธีแก้ไขปัญหาตอนนี้ฉันสร้างลิงก์สัญลักษณ์ใน / bin / ไปยังแต่ละโปรแกรมที่ต้องการ (ldconfig ฯลฯ ) ... นี่อาจเป็นการละเมิดความปลอดภัยดังนั้นฉันจะทิ้งคำถามนี้ไว้ เปิดในกรณีที่ทุกคนมีทางออกที่ดีกว่า
Ivan Castellanos

@IvanCastellanos: ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย "package installer" เนื่องจากไม่มีโปรแกรมที่ใช้ชื่อ AFAIK ที่แน่นอน คุณสามารถอธิบายขั้นตอนการติดตั้งแพ็คเกจได้หรือไม่? และนี่คือตัวติดตั้ง GUI หรือบรรทัดคำสั่งหรือไม่
Scott Severance

ขออภัยฉันหมายถึง "GDebi Packpage Installer" (GUI)
Ivan Castellanos

@IvanCastellanos: คุณเปิดเป็นgksudo gdebi-gtk /full/path/to/package.debหรือไม่ ฉันพบว่ามันค่อนข้างพิถีพิถัน ถ้าเป็นเช่นนั้นก็ควรสืบทอดสภาพแวดล้อมที่เปิดตัวจาก
Scott Severance

3

การเปิดเผยแบบเต็ม: ฉันไม่ได้ใช้ Ubuntu ... แต่ฉันมีปัญหาเดียวกันกับ Debian

xrdp เปิดตัว /etc/xrdp/startwm.sh (เว้นแต่ว่า Ubuntu ได้แก้ไขตำแหน่งนี้แล้ว) ฉันเพิ่มบรรทัดนี้:

. /etc/profile

ไปที่ด้านบนของ /etc/xrdp/startwm.sh และตั้งค่า PATH ไว้อย่างถูกต้อง

สำหรับ Ubuntu เพิ่ม

. /etc/environment

ด้านบนของ /etc/xrdp/startwm.sh อาจทำเช่นเดียวกัน


2

สิ่งนี้ทำให้ฉันนิ่งงันอยู่พักหนึ่ง /etc/environmentไม่ใช่เชลล์สคริปต์ดังนั้นคุณจึงไม่สามารถเรียกมันเป็นหนึ่งเดียวได้ สิ่งที่ใช้ได้ผลสำหรับฉันคือการแก้ไขสคริปต์ "sesman" ผู้จัดการเซสชัน xrdp ใน pam ฉันเพิ่มบรรทัด "เซสชัน" ลงใน/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

สิ่งนี้ทำให้ตัวจัดการเซสชันโหลด/etc/environmentไฟล์เมื่อเข้าสู่ระบบ


1

ในทางทฤษฎีการเพิ่ม

. /etc/environment

จะทำงานได้ แต่มันก็ไม่ได้ ฉันเพิ่งวางไว้ที่ด้านบนของ. bashrc ของฉันเพื่อแก้ไขปัญหา


1

ขอบคุณคำตอบก่อนหน้านี้ฉันมาถึงวิธีแก้ปัญหา:

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

อาจไม่ใช่สิ่งที่ดีที่สุด แต่ทำงานได้ดีที่สุด (Ubuntu 12.04)


1

@ John: ฉันเชื่อว่าคุณต้องตรวจสอบ /etc/xrdpstartwm.sh ของคุณ - บรรทัดแรกในการอ่านของฉัน

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

นั่นหมายความว่าหาก / etc / X11xinit / xinitrc มีอยู่ไฟล์นั้นจะถูกเรียกใช้งานแทน - และจะไม่ช่วยอะไรมากในการเพิ่ม

. /etc/environment

ถึง /etc/xrdpstartwm.sh :-)

/ ต่อเฮิร์ตซ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.