คำถามติดแท็ก sudo

sudo - ดำเนินการคำสั่งด้วยสิทธิ์ superuser

8
ทำไมจึงมีความเสี่ยงที่จะให้สิทธิ์การเข้าถึง sudo vim แก่ผู้ใช้ทั่วไป?
ฉันต้องการสร้างผู้ใช้ใหม่และให้สิทธิ์การเข้าถึง sudo แก่เขา โดยเฉพาะฉันต้องการให้เขาใช้sudo vimและแก้ไข httpd.conf ฉันเขียนสิ่งนี้ใน sudoers: user ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.conf อย่างไรก็ตามฉันได้ยินว่าอาจมีความเสี่ยง เหตุใดจึงเป็นปัญหานี้ ปัญหาร้ายแรงเพียงใด?
30 security  vim  sudo 

3
ถ้าฉัน sudo เรียกใช้ไฟล์สคริปต์ Bash คำสั่งทั้งหมดภายในสคริปต์ Bash จะถูกเรียกใช้งานเป็น sudo ด้วยหรือไม่
ฉันต้องการเขียนสคริปต์หลังการติดตั้งอัตโนมัติใน Bash ( post-install.shเช่นชื่อ) สคริปต์จะเพิ่มและอัปเดตที่เก็บติดตั้งและอัพเดทแพ็คเกจโดยอัตโนมัติแก้ไขไฟล์กำหนดค่า ฯลฯ ตอนนี้ถ้าฉันรันสคริปต์นี้เช่นsudo post-install.shฉันจะได้รับแจ้งให้ป้อนsudoรหัสผ่านครั้งเดียวเท่านั้นหรือฉันจะต้องป้อนsudoรหัสผ่านในแต่ละการเรียกใช้คำสั่งภายในสคริปต์ซึ่งต้องsudoได้รับอนุญาตหรือไม่ กล่าวอีกนัยหนึ่งคำสั่งภายในสคริปต์ทุบตี 'สืบทอด' สิทธิ์การดำเนินการดังนั้นจะพูดหรือไม่ และถ้าพวกเขาทำจริง ๆแล้วยังมีความเป็นไปได้ไหมที่sudoสิทธิ์จะหมดเวลา (ตัวอย่างเช่นคำสั่งเฉพาะใช้เวลานานพอที่จะsudoหมดเวลา) หรือการป้อนsudoรหัสผ่านครั้งแรกจะมีอายุการใช้งานตลอดช่วงเวลาของสคริปต์ทั้งหมดหรือไม่


1
ทำไม cron จึงไม่สามารถเรียกใช้เนื้อหา sudo ในสคริปต์ของฉันได้อย่างเงียบ ๆ
ฉันมีเรียกใช้สคริปต์จาก crontab sudoผู้ใช้ที่ไม่ได้รับสิทธิพิเศษที่จะเรียกใช้คำสั่งบางอย่าง ยกเว้นว่ามันจะไม่ สคริปต์ทำงานได้ดี แต่คำสั่ง sudo'ed ล้มเหลวอย่างเงียบ ๆ สคริปต์ทำงานอย่างสมบูรณ์แบบจากเชลล์ในฐานะผู้ใช้ที่เป็นปัญหา Sudo ไม่ต้องการรหัสผ่าน ผู้ใช้ในคำถามได้เข้าถึงที่ได้รับใน(root) NOPASSWD: ALL/etc/sudoers Cron กำลังทำงานและเรียกใช้งานสคริปต์ การเพิ่มdate > /tmp/logผลผลิตอย่างง่ายในเวลาที่เหมาะสม ไม่ใช่ปัญหาสิทธิ์ สคริปต์จะถูกเรียกใช้งานอีกครั้งไม่ใช่คำสั่ง sudo'ed มันไม่ใช่ปัญหาของเส้นทาง การรันenvจากภายในสคริปต์ที่กำลังรันแสดง$PATHตัวแปรที่ถูกต้องซึ่งรวมถึงพา ธ ไปยัง sudo การเรียกใช้โดยใช้เส้นทางแบบเต็มไม่ได้ช่วยอะไร คำสั่งที่กำลังดำเนินการจะได้รับชื่อพา ธ เต็ม การพยายามดักจับเอาต์พุตของคำสั่ง sudo รวมถึง STDERR จะไม่แสดงสิ่งใดที่มีประโยชน์ การเพิ่มsudo echo test 2>&1 > /tmp/logสคริปต์สร้างบันทึกเปล่า sudo binary เองนั้นทำงานได้ดีและรับรู้ว่ามันมีสิทธิ์แม้เมื่อเรียกใช้จาก cron ภายในสคริปต์ การเพิ่มsudo -l …
29 sudo  cron 

6
ตั้งรหัสผ่าน sudo แตกต่างจากการเข้าสู่ระบบหนึ่ง
ในฐานะผู้ใช้ที่มีสิทธิ์ฉันกำลังพยายามตั้งsudoรหัสผ่านเป็นรหัสอื่นจากนั้นเป็นรหัสผ่านที่ใช้ในการเข้าสู่ระบบ ฉันได้ทำการวิจัยแล้ว แต่ยังไม่พบคำตอบ ไม่sudoสนับสนุนการกำหนดค่าชนิดที่? หากคุณทำรหัสผ่านหายคุณจะสูญเสียทุกอย่าง ใครบางคนสามารถเข้าสู่ระบบและส่งเสริมตัวเองrootด้วยรหัสผ่านเดียวกัน sudoมีตัวเลือกในการขอrootรหัสผ่านแทนรหัสผ่านของผู้ใช้เรียก ( rootpw) แต่การแชร์รหัสผ่านแน่นอนไม่ได้ตัวเลือกนั่นคือเหตุผลที่เราตั้งขึ้นrootsudo ฉันทำconfig 2FAในอดีตมันใช้งานได้ดี แต่ยังเอาชนะวัตถุประสงค์อัตโนมัติ ตัวอย่างเช่นหากคุณต้องการดำเนินการคำสั่งพิเศษผ่านเซิร์ฟเวอร์หนึ่งโหลด้วยexpectสคริปต์การเพิ่ม2FAไม่อนุญาตให้คุณทำเช่นนั้น ทางออกที่ใกล้เคียงที่สุดที่ฉันพบคืออนุญาตให้ใช้คีย์ส่วนตัว SSH และการตั้งค่าวลีรหัสผ่านด้วยคีย์ที่แตกต่างจากsudoรหัสผ่าน (เข้าสู่ระบบ) ถึงกระนั้นก็ยังไม่สะดวกสบายเพราะในสถานการณ์ฉุกเฉินคุณไม่สามารถเข้าสู่ระบบด้วยพีซีที่ไม่มีรหัสนั้น
29 sudo 

3
บันทึกเหตุการณ์ sudo อยู่ที่ไหน
เมื่อมีคนไม่อยู่ในกลุ่ม sudoers และพยายามใช้ sudo ให้รับข้อความแสดงข้อผิดพลาดเช่นนี้: yzT is not in the sudoers file. This incident will be reported. ฉันพยายามที่จะบันทึกว่าข้อมูลนี้ถูกบันทึกไว้เพื่อตรวจสอบว่าใครพยายามเรียกใช้คำสั่งด้วย sudo เช่น แต่หาไม่พบ การค้นหาของ Google ครั้งแรกบอกว่า/var/log/syslogแต่ฉันไม่เห็นข้อมูลใด ๆ ที่เกี่ยวข้องกับ sudo
29 logs  sudo 


2
sudo จำได้อย่างไรว่าคุณป้อนรหัสผ่านของรูทแล้ว?
เมื่อใช้ sudo บน Linux จะขอรหัสผ่านรูท แต่เฉพาะครั้งแรกที่คุณเรียกใช้ หากคุณเรียกใช้คำสั่ง sudo อีกครั้งก็จะจำได้ว่าคุณได้ป้อนรหัสผ่านก่อนหน้านี้และไม่ได้ขอ: thomas@ubuntu:~$ sudo id [sudo] password for thomas: ****** uid=0(root) gid=0(root) groups=0(root) thomas@ubuntu:~$ sudo id uid=0(root) gid=0(root) groups=0(root) sudo ทำอย่างไร ข้อมูลนี้ถูกเก็บไว้ที่ไหน? ความคิดของฉันคือมันจำเทอร์มินัล id (เช่น pts / 1) แต่สิ่งนี้ถูกเก็บไว้ที่ไหน กระบวนการ sudo แรกจะสิ้นสุดลงเมื่อทำกับคำสั่งใช่ไหม ฉันรู้ว่า sudo เป็นโปรแกรม setuid ดังนั้นจึงมีสิทธิ์ของรูทตลอดเวลา แต่ฉันก็ยังนึกถึงสถานที่ที่ดีในการเก็บข้อมูลที่ผู้ใช้ป้อนรหัสผ่านไปแล้ว มีกระบวนการภูตบ้างไหม?
27 linux  sudo 

3
`: w! sudo tee %` ทำงานอย่างไร
หากคุณเปิดไฟล์ที่คุณไม่ได้รับอนุญาตให้เขียนเป็นกลุ่มแล้วตัดสินใจว่าคุณจำเป็นต้องเปลี่ยนไฟล์คุณสามารถเขียนการเปลี่ยนแปลงของคุณได้โดยไม่ต้องออกจาก vim โดยที่:w !sudo tee % ฉันไม่เข้าใจวิธีการทำงานนี้ คุณช่วยกรุณาตัดออกได้ไหม ฉันเข้าใจ:wส่วนมันเขียนบัฟเฟอร์ปัจจุบันไปยังดิสก์โดยสมมติว่ามีชื่อไฟล์ที่เชื่อมโยงอยู่ใช่ไหม ฉันยังเข้าใจ!ว่าsudo teeคำสั่งใดที่เรียกใช้งานและ%แสดงถึงเนื้อหาบัฟเฟอร์ปัจจุบันใช่ไหม แต่ก็ยังไม่เข้าใจว่ามันใช้งานได้อย่างไร
27 vim  sudo  tee 

3
คำสั่ง sudo ไม่ได้มา /root/.bashrc
ฉันได้เพิ่มพา ธ ที่กำหนดเองไปยังPATHตัวแปรในไฟล์ /root/.bashrc ของฉัน เมื่อฉันทำsudo su; echo $PATHมันจะแสดงรายการ '/ path / to / custom / bins' แต่ฉันทำsudo sh -c 'echo $PATH'มันแสดงให้เห็นว่า /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin เส้นทางโฟลเดอร์ที่เพิ่มในไฟล์. bashrc จะมองไม่เห็น คำสั่ง sudo ไม่มีสภาพแวดล้อมเดียวกันกับผู้ใช้รูทหรือไม่?
27 sudo  bashrc 

7
ควรสคริปต์ที่ต้องใช้ sudo ล้มเหลวหากไม่มีหรือใช้ sudo และพรอมต์?
ฉันมีสคริปต์ที่ให้การควบคุมความสว่างแบ็คไลท์ของฉันอย่างละเอียดและต้องsudoดำเนินการ เป็นหลักนี้: backlight="/sys/class/backlight/acpi_video0/brightness" echo $1 | tee $backlight ~/bin/backlight-adjustและชีวิตที่ สคริปต์ต้องการsudoสิทธิ์เนื่องจากtee $backlightกำลังเขียนไปยังตำแหน่งที่มีสิทธิ์ sudoดังนั้นมันจะล้มเหลวถ้ามันไม่ได้ทำงานด้วย วิธีการนี้มีปัญหาเพราะฉันไม่สามารถวิ่งsudo backlight-adjustได้เพราะ~/binไม่ได้อยู่$PATHในsudoสภาพแวดล้อม แต่ในสภาพแวดล้อมของฉันเท่านั้น ดังนั้นฉันต้องวิ่งsudo env "PATH=$PATH" backlight-adjustหรืออะไรทำนองนั้น หรือฉันอาจจะเขียนมันแบบนี้ backlight="/sys/class/backlight/acpi_video0/brightness" echo $1 | sudo tee $backlight และแจ้งรหัสผ่านให้ฉัน วิธีที่สองใช้งานได้ดีกว่าสำหรับฉันเพราะฉันไม่ต้องจำให้พิมพ์ sudo; มันจะทำให้ฉัน และฉันสามารถรักษา$PATHเหมือนเดิม โดยรวมแล้วรู้สึกสะดวกกว่า แต่มีเหตุผลใดที่ฉันไม่ควรทำอย่างที่สอง? (ฉันใช้ Xubuntu 14.04 และเชลล์ของฉันคือ GNU ทุบตี 4.2.45 ถ้านั่นสร้างความแตกต่าง)

4
sudo สากลเป็นอย่างไร
ฉันกำลังเขียนคำแนะนำเกี่ยวกับวิธีการติดตั้งบางอย่าง (เกี่ยวข้องกับ TeX - ถ้าคุณไม่ถามฉันจะไม่ทำลายวันของคุณด้วยการให้รายละเอียดเพิ่มเติม) และใช้sudoในการติดตั้งทั้งระบบ มีคนแสดงความคิดเห็นว่าพวกเขาไม่คิดว่าsudoมีให้ใน Linux (หรือ Unix) ทั้งหมด มีการแจกแจงแบบ Unix ที่ไม่มีsudoและถ้าเป็นเช่นนั้น มีคำสั่ง "Get me superuser privilege" ที่เป็นที่ยอมรับในระดับสากลที่อยู่ในระบบทั้งหมดหรือไม่?

2
บังคับให้ sudo แจ้งให้ใส่รหัสผ่าน
ถ้าฉันทำต่อไปนี้: sudo su - //enter password exit exit //login again straight away sudo su - การร้องขอ sudo ครั้งที่สองไม่ได้ร้องขอรหัสผ่านเพราะแม้ว่าฉันจะออกจากระบบอีกครั้งฉันยังอยู่ในช่วงเวลาที่ จำกัด ซึ่งหมายความว่าฉันไม่จำเป็นต้องได้รับพร้อมท์ให้ใส่รหัสผ่านอีกครั้ง เนื่องจากฉันกำลังทดลองใช้ privs ใหม่เพื่อให้แน่ใจว่ามันทำงานได้นี่ทำให้ฉันช้าลงในขณะที่รอให้หมดเวลา มีคำสั่งที่ฉันสามารถเรียกใช้เพื่อรีเซ็ตการหมดเวลาหรือไม่ ฉันไม่ต้องการเปลี่ยนการหมดเวลาหรือส่งผลกระทบต่อผู้ใช้รายอื่น!
26 sudo  password 

3
ผู้ใช้ที่ไม่มีรหัสผ่าน - ผู้ใช้หนึ่งคนสามารถลงชื่อเข้าใช้บัญชีดังกล่าวจากบัญชีที่ไม่ใช่รูทได้อย่างไร
ฉันเพิ่งเริ่มใช้ Scientific Linux (7.0) (แม้ว่าฉันคิดว่าคำถามนี้อาจเป็นกลางการกระจาย .. ) รุ่นเคอร์เนลคือ 3.10.0-123.20.1.el7.x86_64 กลับมาที่คำถามของฉัน ผมเปลี่ยนrootบัญชีและจากที่นั่นสร้างบัญชีผู้ใช้ใหม่โดยใช้คำสั่งtest-account adduser test-accountรหัสผ่านไม่ได้แจ้งให้ฉันทราบฉันไม่ได้ใช้ตัวเลือกเพื่อระบุรหัสผ่าน ดังนั้นฉันคิดว่ามันเป็นบัญชี "ไม่มีรหัสผ่าน" ฉันสามารถลงชื่อเข้าใช้บัญชีนี้จากบัญชีรูท - ซึ่งฉันคิดว่าฉันสามารถทำได้โดยไม่ต้องให้รหัสผ่านแม้ว่าบัญชีทดสอบจะมีรหัสผ่าน อย่างไรก็ตามเมื่อฉันพยายามเข้าสู่ระบบนี้ (ทดสอบบัญชี) จากบัญชีที่สาม - มันพร้อมท์ให้ฉันใส่รหัสผ่าน และเพียงแค่กดEnterไม่ทำงาน เป็นไปได้หรือไม่ที่จะลงชื่อเข้าใช้บัญชีนี้จากบัญชีที่ไม่ใช่รูท มีวิธี (โดยไม่ต้องเปลี่ยนเป็นรูทหรือใช้sudo)?

3
อยู่ในไดเรกทอรีการทำงานเดียวกันเมื่อเปลี่ยนเป็น sudo
sudo -iเมื่อทำงานในบรรทัดคำสั่งผมมักจะเปลี่ยนไปใช้ sudo /rootอย่างไรก็ตามไดเรกทอรีการทำงานของฉันเปลี่ยนแปลงโดยอัตโนมัติ ฉันไม่ต้องการไปที่นั่น ฉันต้องการที่จะอยู่ในที่ที่ฉันอยู่! ฉันจะบรรลุสิ่งนี้ได้อย่างไร
25 shell  directory  sudo 

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