คำถามติดแท็ก not-root-user

ทำภารกิจการดูแลระบบโดยไม่มีสิทธิ์ผู้ดูแลระบบ

1
วิธีเริ่มต้นโปรแกรมพื้นหลังโดยผู้ใช้ที่ไม่ใช่รูทอัตโนมัติ
ในฐานะผู้ใช้ที่ไม่ใช่รูทฉันต้องการรันงานแบ็คกราวน์เมื่อบูทระบบ เป็นบริการที่ไม่ต้องใช้สิทธิ์รูท มีวิธีทำหรือไม่? วิธีหนึ่งคือการใส่sudo -u user commandในrc.localแต่การแก้ไขrc.localต้องใช้สิทธิ์ราก อีกวิธีหนึ่งคือเริ่มจากcronทุก ๆ นาทีและตรวจสอบอินสแตนซ์ที่กำลังทำงานอยู่ แต่ก่อนอื่นมันจะทำให้ระบบตื่นโดยไม่จำเป็นและอย่างที่สองอาจมีสภาวะการแข่งขันในการตรวจสอบอินสแตนซ์ที่กำลังทำงานอยู่ วิธีที่สามคือเรียกใช้ใน~/.bash_profileแต่ฉันต้องการเริ่มต้นโดยไม่ต้องเข้าสู่ระบบของผู้ใช้

1
เป็นไปได้หรือไม่ที่จะรันโปรแกรมฟิวส์ webdav ที่ไม่มีการเข้าถึงรูท?
ฉันได้เห็นตัวอย่างแสดงวิธีการใช้งานdavfs2ภายใต้ linux แต่แต่ละตัวมีส่วนเกี่ยวข้องกับสิ่งเหล่านี้อย่างใดอย่างหนึ่ง: ทำงานmountเหมือนรูท กำลังเพิ่มรายการไปยัง /etc/fstab กำลังรันmount.davfssetuid ซึ่งอนิจจายังต้องมีรายการ/etc/fstab สามารถหลีกเลี่ยงได้ไหม ถ้าไม่ลักษณะของ webdav ป้องกันได้ดีกว่าเช่น sshfs?

2
ฉันจะติดตั้ง syslinux / extlinux ลงในไฟล์อิมเมจดิสก์ได้อย่างไรโดยไม่ต้องใช้สิทธิ์พิเศษ
ฉันสร้างลินุกซ์ในบ้านและฉันสามารถสร้างไฟล์อิมเมจของดิสก์ที่สมบูรณ์แบบในฐานะผู้ใช้ที่ไม่ใช่รูทด้วยข้อยกเว้นเพียงข้อเดียวนั่นคือการติดตั้งบูตโหลดเดอร์ ฉันใช้ syslinux (extlinux จริง ๆ ) และติดตั้งฉันต้องวนกลับเมานต์พาร์ทิชันบูตซึ่งต้องใช้สิทธิ์ root / sudo คำสั่งถูกเรียกใช้จาก makefile และชื่อตัวแปรควรระบุสิ่งที่จะแทนที่ด้วยอย่างชัดเจน sudo losetup -o $(BOOT_FS_PARTITION_OFFSET) $(LOOP_DEVICE) $(IMAGE_FILE_NAME) sudo mount $(LOOP_DEVICE) $(LOOP_MOUNT_POINT) sudo $(EXTLINUX) -S $(DISK_SECTORS) -H $(DISK_HEADS) -i $(LOOP_MOUNT_POINT) sudo umount $(LOOP_MOUNT_POINT) sudo losetup -d $(LOOP_DEVICE) มีวิธีเขียน syslinux หรือ extlinux ไปยังไฟล์อิมเมจของดิสก์โดยไม่ต้องใช้สิทธิ์ root หรือไม่?

2
จำลอง chroot ด้วย unshare
ฉันพยายามเขียน bootstrapper เพื่อแจกจ่ายลินุกซ์จากแหล่งที่น้อยที่สุด ฉันต้องการที่จะสร้างในสภาพแวดล้อมที่เหมือน chroot สิ่งนี้ควรทำให้บรรจุภัณฑ์ง่ายขึ้น ฉันไม่สนใจเกี่ยวกับความปลอดภัย ณ จุดนี้ bootstrapper ไม่ควรต้องการคำสั่งของบุคคลที่สามที่ไม่ได้มาตรฐาน มันจะดีมากถ้าไม่จำเป็นต้องรูทเช่นกัน นี่คือเหตุผลที่ fakechroot (1) fakeroot (1) chroot (1) ไม่ใช่สิ่งที่ฉันกำลังมองหา เป็นไปได้หรือไม่ที่จะปลอม / ใช้ unshare (1) และ / bin / sh?

3
เข้าสู่ระบบผ่านทาง ssh-key ฉันสามารถรีเซ็ตรหัสผ่านบัญชีของฉันได้หรือไม่
ฉันเข้าสู่ระบบบนเซิร์ฟเวอร์ผ่าน sshkey ( ssh -i /home/me/.ssh/ssh-key me@server) ฉันได้รับสิทธิ์ sudo บนเซิร์ฟเวอร์นั้นจากผู้ดูแลระบบ แต่ฉันไม่สามารถออกกำลังกายได้เพราะฉันลืมรหัสผ่าน Unix จริง (หรือฉันไม่เคยบอก) ฉันเข้าสู่ระบบแล้ว - ฉันสามารถรีเซ็ตรหัสผ่านของฉันผ่านpasswdโดยไม่ทราบรหัสผ่านเก่าของฉันได้หรือไม่

3
บลูทู ธ LE สแกนว่าไม่เป็นรากหรือไม่
ในการสแกนหาอุปกรณ์บลูทู ธ LE hcitoolจะต้องมีสิทธิ์รูท สำหรับผู้ใช้ปกติผลลัพธ์จะเป็นดังนี้: $ hcitool lescan Set scan parameters failed: Operation not permitted ทำไมhcitoolต้องการสิทธิ์รูทสำหรับการสแกน LE เป็นไปได้ไหมที่จะทำการสแกน LE ด้วยวิธีที่ไม่ใช่รูท?

4
การจัดการกลุ่ม cg ต้องการการเข้าถึงรูตหรือไม่?
ฉันพยายามทำงานกับกลุ่มควบคุมในระบบปฏิบัติการสองระบบ (Ubuntu และ CentOS) มีข้อกังวลเล็กน้อยที่ฉันอยากจะถาม ฉันพยายามสร้างกลุ่มควบคุมโดยใช้cgcreateคำสั่งและดูเหมือนว่าต้องมีการเข้าถึงรูทบนเครื่อง ตัวอย่างทั้งหมดที่ฉันเห็นมาแล้วไม่ได้พูดอะไรเกี่ยวกับการเป็นผู้ใช้รูทสำหรับการสร้างหรือแก้ไขกลุ่มควบคุม จำเป็นหรือไม่ที่จะต้องเป็นผู้ใช้รูท? เป้าหมายสุดท้ายคือการเขียนแอปพลิเคชัน C ++ ที่สร้างและจัดการกลุ่มควบคุมเพื่อควบคุมทรัพยากรโดยใช้ libcgroup API แต่แอปพลิเคชัน C ++ จะไม่ถูกเรียกใช้โดยผู้ใช้รูทใด ๆ อาจเป็นผู้ใช้ทั่วไปก็ได้

2
ฉันจะอนุญาตให้ผู้ใช้ที่ไม่ใช่รูทควบคุมเซอร์วิส systemd ด้วยอินสแตนซ์ได้อย่างไร
ฉันต้องการอนุญาตให้ผู้ใช้ในdbaกลุ่มสามารถควบคุมdatabase@บริการได้ คำตอบสำหรับคำถามที่เกี่ยวข้องนี้คือการทำรายการsystemctl"คำกริยา" ทั้งหมดที่ฉันต้องการอนุญาตในsudoersไฟล์อย่างไรก็ตามนั่นไม่ได้ใช้กับกรณีของฉันเพราะฉันไม่รู้ว่าฐานข้อมูลใดที่อาจมีอยู่ในระบบ ตัวอย่างเช่นถ้าฉันแสดง %dba = /usr/bin/systemctl start database@awsesomeapp %dba = /usr/bin/systemctl start database@anotherawsesomeapp %dba = /usr/bin/systemctl start database@yetanotherawsesomeapp %dba = /usr/bin/systemctl start database@wowyetanotherawsesomeapp # ... other "verbs" omitted for brevity ที่ไม่ครอบคลุมอินสแตนซ์ที่อาจมีอยู่ในอนาคตและ dba จะไม่สามารถทำได้ $ sudo systemctl start database@omgwowyetanotherawsesomeapp อย่างไรก็ตามฉันคิดในแง่ของบรรจุภัณฑ์มากกว่าที่คิดกับระบบเฉพาะ โปรดทราบว่าดังที่แสดงในคำตอบที่น่าอัศจรรย์สำหรับคำถามอื่นที่เกี่ยวข้องการใช้ sudo globs สำหรับสิ่งนี้ไม่ปลอดภัยในท้ายที่สุด: %dba ALL = /usr/bin/systemctl start database@[a-z]* …

2
ฉันจะอนุญาตให้ผู้ใช้จัดลำดับความสำคัญของกระบวนการเพื่อลบความดีได้อย่างไร
ฉันต้องการให้ผู้ใช้เรียกใช้กระบวนการเฉพาะบนระบบที่มีค่าลบที่ดี ฉันไม่สามารถแยกกระบวนการเป็นพื้นหลังได้เนื่องจากโปรแกรมเฉพาะนี้เป็นเซิร์ฟเวอร์ minecraft และฉันใช้บรรทัดคำสั่งเพื่อควบคุมเซิร์ฟเวอร์ สคริปต์ทุบตีปัจจุบันของฉันมีลักษณะเช่นนี้ (ส่วนสำคัญ): sleep 10 && \ sudo renice -n $NICENESS $(ps -u $(id -u) -o "%p:%c" | sed -n "s/:java$//p") & \ java -Xmx8G -Xms2G -jar minecraft_server.jar nogui sleepreniceเพียงแค่ความล่าช้าในการดำเนินการของ reniceตัวเองใช้psในการตรวจสอบกระบวนการจาวาโดยใช้ ID ของผู้ใช้ อาจจะมีกรณีอื่น ๆ ของ Java พล่านภายใต้ผู้ใช้งานที่แตกต่างกัน แต่เซิร์ฟเวอร์ Minecraft ทำงานภายใต้ผู้ใช้ของตนเองMinecraft เห็นได้ชัดว่าฉันไม่ต้องการป้อนรหัสผ่านทุกครั้งที่ฉันเริ่มต้นเซิร์ฟเวอร์ จาก/ etc / sudoers : …

2
จะเปลี่ยนเขตเวลาของผู้ใช้ได้อย่างไร?
ฉันรู้ว่า (เช่นใน Debian) สามารถใช้dpkg-reconfigure tzdataเพื่อเปลี่ยนเขตเวลาของระบบแต่ฉันสงสัยว่าจะเปลี่ยนเขตเวลาของผู้ใช้ได้อย่างไร (ถ้า Linux / Unix สนับสนุนแนวคิดดังกล่าว) ปกติฉันทำงานบนเซิร์ฟเวอร์จากระยะไกลผ่าน ssh และเนื่องจากเซิร์ฟเวอร์ทำงานกับ UTC ภายใน (ไฟล์, ... ) และเขตเวลาค่อนข้างตื้นฉันต้องการดูเวลาในเขตเวลาที่ฉันต้องการตามที่ฉันกำลังเชื่อมต่อ เป็นไปได้ไหม

1
ฉันจะรักษา glibc / gcc / … stack ที่แยกต่างหาก (ใหม่กว่า) ได้อย่างไรในรูปแบบที่ไม่ใช่รูทบน Linux
คลัสเตอร์การคำนวณของเรารัน CentOS เวอร์ชันเก่ามากโดยมีเคอร์เนลเก่า (2.6.18) และแน่นอน libs เก่าและไบนารี เนื่องจากการอัปเดตสิ่งทั้งหมดต้องการงานจำนวนมากบนโหนดทั้งหมดนี่ไม่ใช่ตัวเลือก ฉันกำลังพยายามรวบรวมและใช้โปรแกรมที่ต้องการC++11และดังนั้นรุ่นที่ใหม่กว่าของgcc(และ / หรือclang) เนื่องจากฉันไม่ต้องการยุ่งกับระบบเลยฉันต้องการทำสิ่งนี้ในฐานะผู้ใช้ที่ไม่ใช่รูทในทรีไดเรกทอรีในเครื่อง ปัญหาคือที่gccต้องใหม่glibcกว่าที่มีอยู่ในเครื่อง ดังนั้นผมจำเป็นต้องรักษาแยกรุ่นใหม่glibcในท้องถิ่นของฉันlib/ต้นไม้อาจจะเป็นตามที่อธิบายไว้ที่นี่ ที่ฉันหายไปคือวิธีการทำผม "ฝัง" เส้นทางของ libs ท้องถิ่นของฉันในทุกไบนารีที่จำเป็นเช่นgcc, g++ฯลฯ ? การตั้งค่า LD_LIBRARY_PATH กับแผนผังโลคัลของฉันlib/ทำให้ไบนารีระบบทั้งหมดไม่ทำงานอีกต่อไป ( ELF file OS ABI invalid) เพราะพวกเขาต้องการใช้ใหม่libm.so/ libc.soกับที่พวกเขายังไม่ได้รวบรวม ดังนั้นเพื่อตัดมันขึ้น: อะไรคือวิธีการที่เหมาะสมในการรักษาใหม่กองพัฒนาท้องถิ่น (ที่มีglibc, gccฯลฯ ) ในแบบคู่ขนานกับระบบเก่าได้โดยไม่ต้อง messing รอบเป็นราก? ตามคำถามด้านข้าง: การตั้งค่า LD_LIBRARY_PATH จะโพสต์เป็นโซลูชันทั่ว SE เมื่อแยกออกglibcมา สำหรับฉันมันทำให้เกิดข้อผิดพลาดด้านบนเมื่อฉันพยายามรันไบนารีระบบใด ๆ (เช่นls) มาทำไม …

3
วิธีการกำหนดค่าไฟล์ sudoers อย่างถูกต้องบน debian wheezy?
ฉันเคยเห็นบล็อกโพสต์มากมายที่บอกว่าเพียงพอที่จะทำ aptitude install sudo su root adduser USERNAME sudo แต่นั่นก็เป็นเพียงการปกป้องaptitudeในคำอื่น ๆ : aptitude install sendmailจะขอรหัสผ่านคุณจะต้อง sudoเรียกใช้aptitude apt-get install sendmailจะไม่ขอรหัสผ่านไม่sudoจำเป็นต้องใช้สิทธิ์ หากคุณแก้ไขไฟล์ที่มีการป้องกันเช่นไฟล์ที่อยู่ในetcนั้นจะไม่ถามรหัสผ่านไม่sudoจำเป็นต้องใช้สิทธิ์ คุณสามารถเรียกใช้และหยุดบริการเช่นapacheนั้นจะไม่ขอรหัสผ่านไม่sudoจำเป็นต้องใช้สิทธิ์ จะแก้ไขได้อย่างไร? นี่คือไฟล์ sudoers ของฉัน: This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying …

1
ฉันจะกำหนดค่า "ใครก็ได้" ให้เรียกใช้ X ในหนึ่งซับได้อย่างไร
โซลูชันทั่วไปที่โพสต์คือเรียกใช้sudo dpkg-reconfigure x11-commonซึ่งให้พรอมต์กราฟิกอย่างไรก็ตามฉันต้องการใช้สิ่งนี้แบบไม่โต้ตอบ สถานการณ์สมมติว่าฉันเป็น SSH ในเครื่องในฐานะผู้ใช้รูท (ในระหว่างการจัดเตรียม Vagrant) และจำเป็นต้องเรียกใช้startxครั้งเดียวในฐานะผู้ใช้ทั่วไปเพื่อสร้างไฟล์กำหนดค่าบางอย่างก่อนดำเนินการตามขั้นตอนต่อไป ฉันเชื่อว่าเหตุผลที่ฉันไม่สามารถทำได้เพียงsu otheruser startxเพราะ Xauthority / ฉันเชื่อมต่อผ่าน SSH ในฐานะผู้ใช้รายอื่น ...

1
อัพเดตทางเลือกสำหรับผู้ใช้เพียงคนเดียว
ฉันกำลังใช้เซิร์ฟเวอร์ที่ใช้ร่วมกัน ติดตั้ง Java เวอร์ชันต่างๆบนเซิร์ฟเวอร์นั้น: Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode * 1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode 2 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode ฉันต้องการเลือกตัวเลือกที่สอง แต่ถ้าฉันพยายามทำเช่นนั้นจะบ่นว่าฉันไม่มีสิทธิ์ (ฉันไม่รูท) มีวิธีทำใน "พื้นที่ผู้ใช้" หรือไม่? ผู้ใช้รูททำให้การตั้งค่านี้ใช้งานได้สำหรับฉันเท่านั้นหรือไม่

4
การเติมข้อความอัตโนมัติที่ไม่ถูกต้อง
ฉันกำลังเรียกใช้ Debian Wheezy 64 บิต ฉันมีปัญหากับการเติมข้อมูลอัตโนมัติให้ได้ ฉันติดตั้ง bash-เสร็จแล้ว หากฉันเข้าสู่ระบบในฐานะรูทในเชลล์ฉันสามารถใช้การเติมอัตโนมัติสำหรับ apt-get (เช่นapt-get install wicd [tab] [tab ]) และมันจะแสดงแพ็คเกจทั้งหมดที่ตรงกับที่ฉันทำ แต่ถ้าฉันพยายามที่จะใช้การทำให้สมบูรณ์อัตโนมัติสำหรับ apt-get ในผู้ใช้ที่ไม่ใช่รูทคนอื่น (แม้กระทั่ง sudo) มันจะไม่ทำงานเลย ฉันสามารถเติมสิ่งอื่น ๆ โดยอัตโนมัติเช่นชื่อไฟล์ ความช่วยเหลือใด ๆ ฉันมีรหัสต่อไปนี้ใน. bashrc และ / etc / profile if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.