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

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


4
Bash รันคำสั่งหลังจากเรียกใช้เชลล์ใหม่
ฉันพยายามสร้างสคริปต์เช่นนี้: #!/bin/bash sudo -s something... เมื่อฉันรันมันฉันจะได้เชลล์ใหม่ แต่somethingจะถูกรันก็ต่อเมื่อฉันออกจากเชลล์ที่สร้างขึ้นโดยsudo -sไม่ได้อยู่ข้างใน ความช่วยเหลือใด ๆ

1
วิธีรับชื่อของผู้ใช้ที่เปิดตัว `sudo '
ปัญหาของฉัน: sudoฉันมีโปรแกรมหลามและการเปิดตัวของผู้ใช้โดยใช้ บางครั้งฉันต้องกลับบ้านของผู้ใช้และฉันสามารถทำได้โดยรู้ชื่อเท่านั้น: import pwd pwd.getpwnam(username) ดังนั้น: ฉันจะรับชื่อผู้ใช้ที่เปิดตัวโปรแกรมได้อย่างไร
12 users  sudo  python 

1
สามารถใช้ keyfile เป็นรหัสผ่านสำหรับ sudo ได้หรือไม่?
บริบท ฉันชอบที่จะทำงานในที่สาธารณะบนแล็ปท็อปของฉัน แต่ฉันก็ชอบที่จะใช้ sudo โดยไม่ต้องใช้รหัสผ่าน จากสิ่งที่ฉันรู้ตอนนี้ฉันจะใช้NOPASSWDตัวเลือกในsudoersไฟล์ของฉันแต่แน่นอนว่าทุกคนสามารถใช้ sudo ได้ตามที่ต้องการ ความคิดสำคัญอย่างหนึ่งที่อยู่ในใจของฉันคือมีโปรแกรมล็อคอยู่ อย่างไรก็ตามฉันต้องการใช้แฟลชไดรฟ์ (และใช้เพื่อ sudo) เพราะ (1) เร็วกว่า (2) ง่ายกว่าการป้อนรหัสผ่านและ (3) ฉันไม่เกี่ยวข้องกับผู้ที่เข้าถึงเนื้อหาของฉันหรือทำสิ่งชั่วช้าสามานย์ สิ่ง: แล็ปท็อปจะปรากฏต่อสาธารณะรอบ ๆ คนอื่นและทรัพย์สินทางปัญญาเพียงหนึ่งเดียวบนแล็ปท็อปของฉันคือโครงการแองกูลาร์ขั้นพื้นฐาน นอกจากนี้ตัวฉันและคนอื่น ๆ อาจต้องการป้องกันการใช้ sudo ในทางที่ผิดในคอมพิวเตอร์ที่ไม่ได้ใช้สภาพแวดล้อม X หรือ Wayland งานปัจจุบันของฉันต้องการเว็บเบราว์เซอร์ที่ทันสมัย ​​แต่ถ้าฉันมีโอกาสที่จะไม่ใช้ X และใช้มัลติเพล็กเซอร์ฉันทำเช่นนั้น - แล็ปท็อปของฉันค่อนข้างเก่าและช้า คำถาม สิ่งที่ฉันต้องการจะทำคือใส่ keyfile ลงในแฟลชไดรฟ์และเพียงเสียบแฟลชไดรฟ์เมื่อฉันอยู่ที่แล็ปท็อปและนำมันออกไปเมื่อฉันก้าวออกไป ดังนั้นคำถามสามข้อของฉันมาจากปัญหานี้: เป็นไปได้กับ sudo ตามนี้หรือไม่ ถ้าไม่ฉันจะสามารถเขียนโปรแกรมที่ให้ฉันทำสิ่งนี้ได้หรือไม่? ถ้าใช่ภาษาใดที่ดีที่สุดในการเขียนโปรแกรมนี้ (4. [อาจเป็นคำถามที่ไม่เกี่ยวข้อง] แพคเกจนี้สามารถแยกออกจากกันได้หรือจะต้องแยกจาก …
11 sudo  usb  usb-drive 

3
sudo -i ส่งคืนข้อผิดพลาด
เมื่อฉันพยายามที่จะเปลี่ยนเป็นรูทโดยใช้sudo -iฉันได้รับข้อผิดพลาด/var/tmp/sclDvf3Vx: line 8: -i: command not found... อย่างไรก็ตามsu -งานที่ฉันจะใช้ต่อไป ฉันไม่ได้เป็นผู้ดูแลระบบลินุกซ์ดังนั้นสภาพแวดล้อมยังคงมีหมอกหนาสำหรับฉัน ฉันเดาคำถามของฉัน: ทำไมข้อผิดพลาดถูกโยน? ความแตกต่างระหว่างสองคำสั่งคืออะไร? ทำไมคุณถึงใช้อันอื่น? ปรับปรุง: ฉันใช้ CentOS เวอร์ชัน: CentOS รีลีส 6.6 (สุดท้าย) นี่คือผลลัพธ์จากคำสั่งบางคำสั่งที่ฉันถูกขอให้เรียกใช้ในความคิดเห็นด้านล่าง type sudo : sudo is /opt/centos/devtoolset-1.1/root/usr/bin/sudo sudo -V : /var/tmp/sclIU7gkA: line 8: -V: command not found grep'^root:' /etc/passwd : root:x:0:0:root:/root:/bin/bash ปรับปรุง: สิ่งนี้ถูกเพิ่มไปยังผู้ใช้ที่ไม่ใช่รูทของฉัน ~ / .bashrc สักครู่เพราะฉันต้องการการสนับสนุน …

4
ทำไมรหัสผ่าน 'sudo' แตกต่างจากรหัสผ่าน 'su root'
ในเครื่องส่วนตัวของฉันฉันมักจะพิมพ์sudoต่อหน้าคำสั่งบางอย่างเพื่อให้งานการดูแลระบบสำเร็จ ผมหวังที่จะหลีกเลี่ยงการทำเช่นนี้ตลอดทั้งวันโดยการพิมพ์และการให้รหัสผ่านเดียวกันฉันมักจะทำเพื่อsu root sudoอย่างไรก็ตามรหัสผ่านทั้งสองนั้นไม่เหมือนกัน (ฉันไม่ทราบวิธีลงชื่อเข้าใช้su root) การรันคำสั่งที่sudoแตกต่างจากการล็อกอินด้วยsu rootและการรันคำสั่งเดียวกันหรือไม่? ฉันคิดsudoและsu rootเหมือนกันเพราะเมื่อฉันพิมพ์sudo whoamiฉันได้รับrootตรงข้ามกับwhoamiที่ฉันได้รับชื่อผู้ใช้

4
สิทธิ์ sudo ถูกปฏิเสธ แต่ su ได้รับอนุญาต
นี่เป็นเหตุการณ์แรกที่ฉันต้องการให้ su ฉันอ่านบทความเกี่ยวกับการเปลี่ยนค่าใน / sys / อุปกรณ์ / virtual / backlight / acpi_video0 / ความสว่างเพื่อเปลี่ยนความสว่างหน้าจอแล็ปท็อปของฉัน ฉันแรกพบว่าเมื่อฉันจะ$ sudo echo 10 > brightnessฉันจะได้รับอนุญาตถูกปฏิเสธ ฉันเปลี่ยนเป็นรูทโดยใช้ su และ# echo 10 > brightnessเปลี่ยนความสว่างของฉันเกือบจะในทันที สิ่งที่แปลกประหลาดสำหรับฉันเกิดขึ้นเมื่อฉันพยายาม# echo 20 > brightness(ไฟล์ maxbrightness เก็บค่า 15) และฉันได้รับข้อผิดพลาดในการเขียน มีคนอธิบายความแตกต่างระหว่าง sudo กับ su ให้ฉันได้ไหม ทำความเข้าใจกับข้อผิดพลาดในการเขียนจะเป็นโบนัสเพิ่ม ความช่วยเหลือคำแนะนำและ / หรือลิงก์ใด ๆ จะได้รับการชื่นชมมาก
11 permissions  sudo  su 

1
เป็นไปได้ที่จะตรวจสอบความสามารถในการ sudo ก่อน sudo'ing หรือไม่
ฉันกำลังเขียนโปรแกรมอรรถประโยชน์ขนาดเล็ก ฉันต้องการให้พยายามsudoรันบางสิ่งหากจำเป็น นั่นคือ: หากการอนุญาตไฟล์ไม่อนุญาตให้ผู้ใช้ปัจจุบันทำงานกับไฟล์ใดไฟล์หนึ่ง (และsudoกฎจะอนุญาต) ฉันต้องการให้ยูทิลิตี้ของฉันsudoทำงานบางอย่างในฐานะเจ้าของไฟล์ ฉันหวังว่าจะตรวจสอบความสามารถนี้ล่วงหน้าเพราะฉันต้องการให้บันทึกระบบไม่เต็มไปด้วยเสียงรบกวนจากsudoความพยายามที่ล้มเหลว ตามที่sudoรายงานเมื่อเกิดความล้มเหลว: "เหตุการณ์นี้จะถูกรายงาน" ดังนั้นฉันหวังว่าจะตรวจสอบแบบเป็นโปรแกรม: สามารถuser <x>ทำงานcommand <y>ผ่านได้sudoหรือไม่ นี่คือปัญหา: ในขณะที่/etc/sudoersมีการแมปนั้นมันเป็นเจ้าของรากและไม่สามารถอ่านได้โดยผู้ใช้ปกติ ฉันกำลังพิจารณาที่จะวางไข่ subprocess เพื่อให้ทำงานsudo -l(ซึ่งเป็นคำสั่งที่ผู้ใช้ปัจจุบันสามารถเรียกใช้ sudo-run) ฉันจะแยกผลลัพธ์ของสิ่งนี้ อย่างไรก็ตามนี่ดูเหมือนจะเปราะบางเล็กน้อย เอาต์พุตมีข้อมูลที่ฉันต้องการ แต่ดูเหมือนว่ามันถูกออกแบบมาเพื่อให้มนุษย์อ่าน (ไม่ใช่สำหรับการใช้แบบเป็นโปรแกรม) ฉันไม่ทราบว่ามีการรับประกันว่าผลลัพธ์จะเป็นไปตามรูปแบบเดียวกันในอนาคตหรือข้ามแพลตฟอร์มที่แตกต่างกัน การแยกวิเคราะห์ทางโปรแกรมมีการsudo -lพิจารณาว่าปลอดภัยหรือไม่? หากไม่มีมีตัวเลือกที่ดีกว่านี้เพื่อพิจารณาล่วงหน้าว่าคำสั่ง sudo จะประสบความสำเร็จหรือไม่ (พื้นหลังใน X / Y: ยูทิลิตี้นี้ใช้สำหรับบัญชีบทบาทที่ จำกัด การเข้าถึงฉันคาดว่าผู้ใช้รายอื่นบางคนสามารถเลือกที่จะอนุญาตให้บัญชี จำกัด การเข้าถึงสามารถทำงานกับไฟล์ของพวกเขาผ่านกฎ sudo อย่างไรก็ตามฉันชนะ ไม่ทราบล่วงหน้าว่าผู้ใช้รายใดที่มีกฎ sudo ที่เกี่ยวข้องอยู่)
11 sudo 

4
การทำให้เสร็จสิ้นเส้นทาง Bash ทำงานกับ sudo อย่างไร
การทำให้แท็บเสร็จสมบูรณ์ไม่ทำงาน (อย่างน้อยใน Ubuntu และ AFAIK Arch) ด้วย sudo mount <whatever> แฟ้ม ISO /etc/fstabฉันพยายามที่จะติดตั้งไม่ได้อยู่ใน ถ้าฉันพิมพ์ mount <whatever> การทำงานให้เสร็จสมบูรณ์ (แต่แน่นอนว่าคำสั่งล้มเหลวเนื่องจากฉันไม่ใช่รูต) เห็นได้ชัดว่ามันเป็นsudoตัวแบ่งมัน การทำให้เสร็จสมบูรณ์ทำงานกับ sudo ได้อย่างไร มันเป็นเรื่องที่น่าแปลกใจด้วย sudo umount <whatever> งานเสร็จสมบูรณ์ มันประสบความสำเร็จได้อย่างไร? มันดูเป็น/etc/fstabอย่างไร การแก้ไข:ฉันแค่ใส่เชลล์สคริปต์ลงในการ/usr/local/binโทรนั้นsudo mount ...โดยมีการส่งผ่านอาร์กิวเมนต์ไป การดำเนินการให้เสร็จสมบูรณ์เมื่อเรียกสคริปต์นี้เนื่องจากไม่มีsudoในทาง

1
ฉันจะถามรหัสผ่านโดยใช้ GUI ในขณะที่ใช้ sudo ในสคริปต์ได้อย่างไร
ฉันใช้ Trisquel GNU / Linux กับ GNOME Flashback Desktop Environment ฉันต้องการพรอมต์รหัสผ่าน GUI สำหรับผู้ใช้เพื่อดำเนินการคำสั่งด้วยsudoในสคริปต์ ตัวอย่างพิจารณาสคริปต์ต่อไปนี้: zenity --question --text="Do you want to install this package?" if [[ $? -eq 0 ]]; then sudo apt-get install package else zenity --warning fi ซึ่งจะต้องดำเนินการดังต่อไปนี้ (Run) คือไม่ได้อยู่ในอาคาร ดังนั้นจึงจำเป็นต้องขอรหัสผ่านเพื่อที่จะเรียกใช้คำสั่งด้วยsudoมิฉะนั้นจะไม่สามารถทำงานได้ ดังนั้นฉันจะถามรหัสผ่านโดยใช้ GUI ได้อย่างไร

3
sudo ตัดสินใจอย่างไรว่าจะขอรหัสผ่านเมื่อได้รับคำสั่งที่ไม่ต้องการ `sudo 'จริง ๆ
เมื่อใช้sudoคำสั่งซึ่งไม่จำเป็นต้องจริงsudo, บางครั้งมันไม่ถามรหัสผ่าน ตัวอย่างเช่นภายใต้ของฉัน$HOME, sudo ls. แต่ฉันจำได้ว่ามันทำเพื่อคำสั่งอื่น ๆ แม้ว่าฉันจะลืมที่หนึ่ง ดังนั้นฉันสงสัยว่าsudoจะตัดสินใจว่าจะขอรหัสผ่านเมื่อได้รับคำสั่งที่ไม่ต้องการจริงsudoหรือไม่ มีกฎบางอย่างในการ/etc/sudoersระบุว่า? ปัญหาที่แท้จริงของฉันคือเมื่อฉันใช้duบางครั้งก็แสดง "สิทธิ์ถูกปฏิเสธ" สำหรับบางไดเรกทอรีและบางครั้งอาจไม่ใช่เพราะฉันไม่ได้รับอนุญาตในบางไดเรกทอรี ผมใช้sudoไปduโดยไม่คำนึงถึงและคิดว่าฉันจะถามรหัสผ่านโดยไม่คำนึงถึง แต่จริง ๆ แล้วไม่ได้อยู่ในไดเรกทอรีของตัวเอง
10 sudo  password 

2
ในคำสั่ง `sudo find` ฉันจะแน่ใจได้อย่างไรว่าคำสั่ง` -exec` ถูกรันเหมือนผู้ใช้ปกติ?
ฉันกำลังพยายามทำให้คำสั่งต่อไปนี้ทำงานในลักษณะที่process_pathsสคริปต์ไม่ได้ทำงานภายใต้สิทธิ์ระดับสูง มีวิธีทำเช่นนี้หรือไม่? sudo find /path/ -exec process_paths '{}' \+ ที่นี่/path/มีไฟล์บางไฟล์ที่ไม่มีสิทธิ์อ่านสำหรับผู้ใช้ปกติ สคริปต์process_pathsเพียงต้องการเส้นทาง
10 find  sudo  su 

4
“ ไม่พบคำสั่ง” เมื่อฟังก์ชั่น sudo'ing จาก ~ / .zshrc
ฉันมีฟังก์ชั่นใน~/.zshrc: findPort() { lsof -t -i :$1 } findPort 3306ภาวนาตามปกติคือ ฉันต้องการเรียกใช้ด้วยสิทธิ์ระดับสูง แต่ฉันได้รับ "ไม่พบคำสั่ง" ➜ git 🍔 sudo findPort 3306 sudo: findPort: command not found ผมเข้าใจเหตุผลก็คือผู้ใช้รากทั้งวิ่งเป็นเปลือกไม่โต้ตอบ (จึงไม่ได้หมายถึง .zshrc) หรือหมายถึงแตกต่างกัน .zshrc ฉันได้เห็นคำถามที่คล้ายกันเกี่ยวกับaliasแต่ไม่มีคำถามเกี่ยวกับฟังก์ชั่นที่ผู้ใช้กำหนด คำตอบสำหรับปัญหานี้aliasเกี่ยวข้องกับการเพิ่มนามแฝงไปที่~/.zshrc: alias sudo='nocorrect sudo ' หรือบางที: alias sudo='sudo ' ฉันลองทั้งสองวิธีแล้วและปัญหายังคงมีอยู่ (ใช่ฉันเปิดตัวเชลล์ใหม่) ฉันได้ลองใช้งานsudo chshเพื่อให้แน่ใจว่าเชลล์รูทของฉันทำงานzshได้ ไม่มีวิธีการแก้ปัญหาเหล่านี้ลบปัญหา "คำสั่งไม่พบ" มีวิธีเรียกใช้ฟังก์ชันที่ผู้ใช้กำหนดเองภายใต้ sudo หรือไม่
10 sudo  zsh 

3
เป็นกลุ่มสามารถแก้ไขไฟล์ระยะไกลเป็น root ได้หรือไม่?
ฉันพบคำถามนี้ที่อธิบายวิธีแก้ไขไฟล์ระยะไกลด้วย vim โดยใช้: vim scp://user@myserver[:port]//path/to/file.txt เป็นไปได้ไหมที่จะทำเช่นนี้เป็นรูท (ผ่านsudo) บนรีโมตโฮสต์ ฉันได้ลองสร้างไฟล์ด้วยการอนุญาตรูทบนรีโมตโฮสต์แล้วแก้ไขมันด้วยวิธีการข้างต้น เป็นกลุ่มสามารถดูเนื้อหาสามารถแก้ไขและสามารถบันทึกได้ แต่ไม่มีการเปลี่ยนแปลงใด ๆ ในรีโมตโฮสต์ (อาจเป็นเพราะ vim เพิ่งบันทึกไฟล์ temp ของมันแล้วมอบให้กับ scp เพื่อนำกลับมา?) เมื่อทำสิ่งนี้กับไฟล์ที่บันทึกโดยผู้ใช้ของฉันมันจะทำงานตามที่คาดไว้ SSH ของฉันใช้คีย์เพื่อตรวจสอบสิทธิ์และเซิร์ฟเวอร์ระยะไกลมี NOPASSWD สำหรับการเข้าถึง sudo ของฉัน คำถามนี้คล้ายกัน แต่คำตอบเดียวกับการลงคะแนนใช้หุ่นเชิดซึ่งไม่ใช่สิ่งที่ฉันต้องการใช้แน่นอน แก้ไข: เพื่อตอบสนองต่อความคิดเห็นของ @ drewbenn ด้านล่างนี่คือกระบวนการทั้งหมดของฉันสำหรับการแก้ไข: vim scp://nagios//tmp/notouch ในกรณีที่/tmp/notouchเป็นไฟล์ที่เป็นเจ้าของโดยรากผมดูการแสดงได้อย่างรวดเร็วเป็นกลุ่ม :!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0' สิ่งนี้จะหายไปโดยอัตโนมัติเพื่อให้หน้าจอสีดำที่มีข้อความว่างเปล่า "/tmp/vaHhwTl/0" 1L, 12C Press ENTER or type command …
10 vim  sudo  remote 

2
ระบบ Crontab หรือ Root Crontab
ระบบ crontab: /etc/crontab ราก crontab: sudo crontab -u root -e วิธีไหนเป็นที่ต้องการ ตามที่พวกเขาทำงานทั้งหมดภายในสิทธิ์ของผู้ดูแลระบบ
10 sudo  cron  root 

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