วิธีการเรียกใช้แอปพลิเคชันในฐานะผู้ใช้รายอื่น


17

ฉันใช้ krusader สำหรับจัดการไฟล์ ปัญหาคือว่าของ Apache ควรอยู่ภายใต้DocumentRoot chown www-data:www-data /path/to/wwwดังนั้นการใช้ krusader (ซึ่งทำงานภายใต้บัญชีของฉัน) ฉันไม่ได้เขียนการเข้าถึง/path/to/wwwในขณะที่ฉันต้องการจริงๆ ฉันไม่รู้ว่านักพัฒนาคนอื่นสามารถทำสิ่งต่าง ๆ ต่อไปได้ด้วยข้อ จำกัด เช่นนี้!

ฉันสงสัยว่าฉันสามารถเรียกใช้ krusader ได้ไหมwww-dataจากนั้นฉันจะสามารถเล่นไฟล์ได้อย่างง่ายดาย แต่ใช้su - www-dataถามwww-dataรหัสผ่านของฉันด้วย !!

ดังนั้นฉันจะเรียกใช้แอปพลิเคชัน (เช่น krusader) ในฐานะผู้ใช้รายอื่น (เช่น www-data) ใน Gnome ได้อย่างไร

หรือมีวิธีอื่นในกรณีของฉันหรือไม่ (แกร่งฉันอยากรู้คำตอบจริงๆ!)

โปรดจำไว้ว่าฉันรู้ว่าฉันสามารถเรียกใช้มันเป็นราก ! แต่สิ่งนี้จะทำให้เกิดปัญหาการอนุญาตเมื่อใช้งานcpและmkdirคุณรู้

PS: sudoและgksudoไม่ได้ช่วย:

$ gksudo -u -www-data krusader
No protocol specified
krusader: cannot connect to X server :0.0

หมายเหตุสุดท้าย: ตามคำตอบที่ดีที่สุดฉันทำchmod u+w /path/to/wwwและปัญหาของฉันได้รับการแก้ไข แต่ฉันก็ยังไม่ประสบความสำเร็จในการเปิด krusader ในฐานะผู้ใช้รายอื่น!

คำตอบ:


4

ทบทวนคำถามนี้ (ฉันหวังว่าจะเข้าใจปัญหาของคุณถูกต้อง แต่แก้ไขให้ฉันถ้าฉันผิด) ฉันพบวิธีแก้ไขปัญหาอื่นและฉันคิดว่าคุณไม่จำเป็นต้องเรียกใช้แอปพลิเคชันเป็น www-data หรือเล่นด้วยสิทธิ์ . คุณพูดว่า:

DocumentRoot ของ Apache ควรอยู่ภายใต้ chown www-data: www-data / path / to / www

แต่จริงๆแล้วมันไม่เป็นความจริงทั้งหมด: Apache DocumentRootต้องอ่านได้www-dataแต่ไม่จำเป็นต้องเป็นเจ้าของ ตามค่าเริ่มต้นใน Ubuntu Desktop ไฟล์และไดเรกทอรีทั้งหมดที่คุณสร้างสามารถอ่านได้โดยทุกคนดังนั้นคุณสามารถตั้งค่า DocumentRoot ของคุณเป็นไดเรกทอรีภายในโฟลเดอร์บ้านของคุณตัวอย่างเช่น

DocumentRoot /home/user/my-project/my-document-root

ขอบคุณ! มันเพิ่งได้ผล และคำอธิบายของคุณว่าทำไมสิ่งนี้ถึงได้ผลมีประโยชน์มาก เช่นนี้แก้ปัญหาของฉัน แต่ฉันยังอยากรู้ว่าฉันจะเปิด krusader อย่างไรในฐานะผู้ใช้รายอื่น โซลูชันอื่น ๆ ใช้งานไม่ได้
Alexar

8
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

โดยที่ uname = ชื่อของผู้ใช้ที่แอบอ้างบุคคลอื่น เห็นมี: http://ubuntuforums.org/showthread.php?p=10399617

ทำงานได้ในกล่องไม่ฝักใฝ่ฝ่ายใดของฉันไม่มีเสียงใน skype ที่แยกส่วนและ ~ / .profile.d จะไม่ถูกดำเนินการตามที่ควรจะเป็น


5

หากคุณเรียกใช้สิ่งนี้จากระบบเมนูคุณจะต้องใช้alacarte(ระบบ> การตั้งค่า> เมนูหลัก) และเปลี่ยนรายการสำหรับ krusader และเพิ่มไว้ด้านหน้า: gksudo -u www-dataซึ่งควรสร้างสิ่งที่ชอบ:

gksudo -u www-data krusader

นี่จะเปิดหน้าต่างแจ้งเตือนผู้ดูแลระบบซึ่งตามGKSudo Manpageนั้นจะเป็น

GTK + Frontend สำหรับ su และ sudo

การใช้เพียง gksudo โดยไม่มี-uสวิตช์จะเรียกใช้คำสั่งในฐานะรูท


ขอบคุณ แต่มันกลับมา: ไม่มีโพรโทคอลที่ระบุ
krusader

2
ก่อนที่จะเรียกใช้คำสั่ง gksudo ในเทอร์มินัลภายใต้การเรียกใช้บัญชีของคุณ:xhost +
jet

4

เช่นเดียวกับ Marco ที่กล่าวถึงคุณสามารถใช้gksudo -u www-data <command>เพื่อเรียกใช้คำสั่งในฐานะผู้ใช้รายอื่น ฉันใช้สิ่งนี้เพื่อเรียกใช้คำสั่งเป็นประจำgdmและจนถึงตอนนี้มันไม่เคยถามอะไรนอกเหนือจากรหัสผ่านของฉัน

หากคุณกำลังใช้ KDE เทียบเท่าเป็นkdesu -u www-data krusader.i คิดตั้งแต่ Krusader เป็นโปรแกรม KDE kdesuก็อาจทำงานได้ดีขึ้นด้วย รายละเอียดเพิ่มเติมเกี่ยว kdesu ที่นี่

ฉันเคยใช้gksudoคำสั่งในฐานะผู้ใช้ "คน" คนอื่น ๆ ในระบบและเมื่อฉันได้รับแจ้งให้ใส่รหัสผ่านฉันจะพิมพ์รหัสของฉัน


ขอบคุณ แต่ผลลัพธ์ก็คือ gksudo: ไม่มีโปรโตคอลที่ระบุตัวจัดการรหัส: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ X: 0.0
Alexar

อาจเป็นไปได้สำหรับ krusader (แอป KDE) kdesuเป็นตัวเลือกที่ดีกว่า ฉันได้อัพเดตคำตอบแล้ว ลองดูไหม
koushik

4

หากต้องการเป็น www-data ด้วยรหัสผ่านของคุณเองให้ใช้สิ่งนี้:

$ sudo su www-data
[sudo] password for <your username>: [enter your password]
$ whoami
(you should see www-data here)

แต่ฉันไม่คิดว่าคุณจะสามารถเรียกใช้แอป GUI ได้จากที่นั่น ..

ฉันมักจะเป็นเจ้าของทุกอย่างใน/var/wwwแต่อนุญาตให้ทุกคนเข้าถึงการอ่าน:

/var/www$ sudo chown -R [your-username]\:[your-group] *
/var/www$ find . -type d -exec chmod a+rx {} \;
/var/www$ find . -type f -exec chmod a+r {} \;

ฉันหวังว่าจะช่วยบรรเทาความเจ็บปวดของคุณ :)


อย่างที่คุณคิดว่าฉันไม่สามารถเรียกใช้แอพ GUI ได้ มันบอกว่าNo protocol specified krusader: cannot connect to X server :0.0
Alexar

ทางออกที่สองไม่ใช่ตัวเลือกสำหรับคุณหรือไม่? ข้อมูลของคุณไม่จำเป็นต้องเป็นของ www-data ถึงแม้ว่าฉันเดาว่ามันจะเป็นที่ต้องการ
ดร. Hannibal Lecter

3

ฉันเชื่อว่าคุณต้องเรียกใช้สิ่งต่อไปนี้ที่เทอร์มินัล:

xhost +SI:localuser:<user-to-run-as>

จากนั้นคุณสามารถทำได้:

sudo su - <user-to-run-as>

และสุดท้ายเรียกใช้แอปของคุณ:

krusader

ควรทำเช่นนั้นให้แน่ใจว่าได้แทนที่<user-to-run-as>ด้วยชื่อผู้ใช้ของคุณแน่นอน


0

ทั้ง 'gksu' และ 'kdesu' เป็นส่วนหน้าแบบกราฟิกสำหรับ 'sudo' ซึ่งเป็นเครื่องมือที่คุณควรใช้เมื่อคุณอยู่ในสภาพแวดล้อมแบบข้อความเท่านั้น เครื่องมือ 'gksu' และ 'kdesu' ต้องการให้คุณอยู่ในโหมดกราฟิกซึ่งอธิบายถึงข้อผิดพลาด "ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ X"

หากคุณต้องการรันคำสั่งคอนโซลในฐานะผู้ใช้อื่นคุณสามารถใช้คำสั่ง 'sudo -u username command'


ขอบคุณฉันใช้และบอกว่าสิ่ง[1] 12100ที่ดูเหมือนว่าจะเป็นกระบวนการ id; แต่ไม่มีอะไรที่ฉันเห็นในการกระทำ
Alexar

0

การรันแอปพลิเคชั่นแบบกราฟิกภายใต้ www-data จะทำให้คุณมีปัญหาหลายอย่าง สิ่งที่คุณสามารถทำได้คือการเพิ่มตัวคุณเองลงในกลุ่ม www-data ดังนั้นคุณจะสามารถเปลี่ยนไฟล์ทั้งหมดที่คุณต้องการ:

sudo adduser $USER www-data

หมายเหตุ: อาจคุณจะต้องออกจากระบบเพื่อให้การเปลี่ยนแปลงมีผล

หากหลังจากคำสั่งนี้คุณยังคงไม่สามารถเปลี่ยนแปลงไฟล์บางไฟล์ได้ให้ตรวจสอบให้แน่ใจว่าคุณได้รับอนุญาตให้เขียนไฟล์:

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file

อย่างไรก็ตามมันไม่ได้เป็นทางออกสำหรับปัญหาทั่วไป แต่ดูเหมือนว่าจะทำงานกับกรณีของฉัน; ฉันจะลองและรายงาน
Alexar

0

ได้รับแรงบันดาลใจจาก Anton S. Kraievoy ฉันใช้โซลูชันที่คล้ายกันซึ่งใช้งานได้สำหรับฉัน ในผู้ใช้ซึ่งใช้ Krusader ฉันได้เพิ่มผู้ใช้ใหม่ใน xhhost:

xhost +SI:localuser:username

กว่ากรุณาเข้าสู่ระบบ:

su - username

กว่า krusader เริ่มทำงานอย่างถูกต้องในฐานะอินสแตนซ์ใหม่ในผู้ใช้ใหม่:

krusader

โปรดสังเกตว่าการกำหนดค่าใหม่จะถูกสร้างขึ้นใน ~ / .kde / share / config / krusaderrc

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