จะสร้างแอปพลิเคชั่นที่ไม่มีสิทธิ์ sudo ได้อย่างไร?


15

ฉันจะต้องติดตั้งอะไรบนเซิร์ฟเวอร์ Ubuntu 9.10 เพื่อให้ผู้ใช้สามารถสร้างแอปพลิเคชันที่มีตัวเลือก (เช่น. / กำหนดค่า, ติดตั้ง && ทำการติดตั้ง) โดยไม่จำเป็นต้องใช้สิทธิ์ sudo / admin

ฉันแค่รู้สึกว่ามันมีความเสี่ยงด้านความปลอดภัยที่ต้องให้ผู้ใช้เข้าถึงส่วนต่าง ๆ ของระบบที่พวกเขาอาจไม่ต้องการเพื่อสร้างแอพ

คำตอบ:


40

หากผู้ใช้ของคุณใช้

./configure --prefix=/home/user/opt/

หรือสำหรับโครงการ cmake

cmake -D CMAKE_INSTALL_PREFIX:PATH=/home/user/opt/ ../source/

สิ่งนี้จะติดตั้งโปรแกรมในคำนำหน้านั้น (แทนค่าเริ่มต้น / usr / local /) และผู้ใช้ของคุณควรจะสามารถเรียกใช้โปรแกรมดังนี้:

/home/user/opt/bin/program

หากคุณต้องการให้พวกเขาสามารถเรียกใช้โปรแกรมโดยใช้ชื่อ (ไม่มีพา ธ เต็ม) คุณต้องเพิ่ม/home/user/opt/binตัวแปรสภาพแวดล้อมของเส้นทางแก้ไขผู้ใช้. profile และเพิ่มบรรทัดต่อไปนี้:

export PATH=/home/user/opt/bin:$PATH

โปรดทราบว่าโปรแกรมที่ติดตั้งในลักษณะนี้จะเป็นส่วนตัวสำหรับผู้ใช้ที่ระบุ แต่เป็นวิธีที่ทำได้


ผู้ใช้รายอื่นจะสามารถใช้โปรแกรมที่ติดตั้งเช่นนี้หากพวกเขาจัดหาเส้นทางแบบเต็มและมีการตั้งค่าการอนุญาตอย่างเหมาะสม และปรากฏว่า umask เริ่มต้นอนุญาตให้ใช้สิ่งนี้ในการติดตั้งเดสก์ทอปของฉัน
Alistair Buxton

codebase ที่ฉันรวบรวมมีMakefileแต่ไม่มีการกำหนดค่าฉันเพิ่งเข้าไปและเปลี่ยนprefix = /some/pathบรรทัดไปที่โฮมไดเร็กตอรี่ของฉันเอง (ไม่มีสแลชต่อท้าย) จากนั้นก็วิ่งmake installโดยไม่ต้อง sudo - ทั้งหมดใช้งานได้แล้วขอบคุณมาก
Big Rich

8

ผู้ใช้สามารถสร้างแอปพลิเคชันโดยไม่มีสิทธิ์ sudo ครั้งเดียวที่คุณต้องการสิทธิ์ sudo คือเมื่อคุณต้องการติดตั้งบางอย่างลงในไดเรกทอรีระบบ

./configureและmakeทำงานตลอดเวลาโดยไม่มีสิทธิ์ sudo make installมักจะต้องการสิทธิ sudo เพราะมันจะติดตั้งโปรแกรมไป/usr/localหรือ/usr(บางครั้ง/opt)

แต่ถ้าคุณเปลี่ยนคำนำหน้าสำหรับเส้นทางการติดตั้ง (คือ./configure --prefix=~/usr/local) ในทางที่ติดตั้งจะได้รับการดำเนินการภายในต้นไม้ไดเรกทอรีบ้านของผู้ใช้ที่ไม่มีสิทธิ sudo make installมีความจำเป็นสำหรับ


ฉันยังคิดว่าคำตอบของคุณไม่ได้รับการสำรองอย่างสมบูรณ์ ทำไม./configureและmakeการทำงานอยู่เสมอโดยไม่sudo? ฉันควรจัดให้คนที่ดำเนินการsudo make installต่อไปเป็นตัวอย่าง?
Nikos Alexandris

0

การเพิ่มสิ่งที่txwikingerได้กล่าวไว้คุณอาจต้องการตรวจสอบfakerootซึ่งให้โอกาสในการสร้างแพ็คเกจ. deb ด้วยdpkgโดยไม่จำเป็นต้องมีสิทธิ์สูง แน่นอนการติดตั้งเหล่านั้นโดยทั่วไปจะต้องเข้าถึง sudo

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