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

sudo เป็นเครื่องมือที่อนุญาตให้ผู้ใช้เรียกใช้คำสั่งในฐานะผู้ใช้อื่น (โดยปกติคือผู้ใช้รูท)

7
Sudo เป็นผู้ใช้ที่แตกต่างกันและหน้าจอทำงาน
ค้นพบในวันนี้ว่าหน้าจอที่ใช้งานในฐานะผู้ใช้อื่นที่ฉัน sudo ลงไปจะไม่ทำงาน! กล่าวคือ ssh bob@server # ssh into server as bob sudo su "monitor" - screen # fails: Cannot open your terminal '/dev/pts/0' ฉันมีสคริปต์ที่ทำงานเป็นผู้ใช้ "ตรวจสอบ" เรารันในเซสชันหน้าจอเพื่อดูผลลัพธ์บนหน้าจอ ปัญหาคือเรามีผู้ใช้จำนวนมากที่เข้าสู่ระบบด้วยบัญชีของตัวเอง (เช่น bob, james, susie, etc ... ) จากนั้นพวกเขา sudo ลงในผู้ใช้ "monitor" การให้พวกเขาเข้าถึงผู้ใช้ "มอนิเตอร์" นั้นไม่อยู่ในคำถาม
167 sudo  gnu-screen 

6
วิธีการตั้งค่ารหัสผ่าน `sudo 'บน Linux ได้อย่างไร
การsudoเข้าถึงแบบไม่ใช้รหัสผ่านสามารถตั้งค่าบน RHEL (Fedora, CentOS, ฯลฯ ) หรือ Ubuntu ได้อย่างไร? (ถ้าเป็นแบบเดียวกันกับ distros ก็จะดีกว่า!) การตั้งค่า: อุปกรณ์ส่วนบุคคลและ / หรือห้องปฏิบัติการ / ฝึกอบรมโดยไม่ต้องกังวลกับการเข้าถึงที่ไม่ได้รับอนุญาต (เช่นอุปกรณ์นั้นอยู่ในเครือข่ายที่ไม่ใช่สาธารณะและ / / ผู้ใช้ทุกคนมีความน่าเชื่อถืออย่างเต็มที่และเนื้อหาของอุปกรณ์นั้นคือ "วานิลลาธรรมดา") .
156 linux  password  sudo 

10
การส่งต่อ ssh-agent และ sudo ไปยังผู้ใช้รายอื่น
หากฉันมีเซิร์ฟเวอร์ A ซึ่งฉันสามารถเข้าสู่ระบบด้วยคีย์ ssh ของฉันและฉันมีความสามารถในการ "sudo su - otheruser" ฉันจะสูญเสียการส่งต่อคีย์เนื่องจากตัวแปร env ถูกลบและซ็อกเก็ตสามารถอ่านได้โดยผู้ใช้ดั้งเดิมของฉันเท่านั้น มีวิธีที่ฉันสามารถเชื่อมโยงคีย์การส่งต่อผ่าน "sudo su - otheruser" ดังนั้นฉันสามารถทำสิ่งต่าง ๆ บนเซิร์ฟเวอร์ B ด้วยคีย์การส่งต่อของฉัน (git clone และ rsync ในกรณีของฉัน)? วิธีเดียวที่ฉันคิดได้ก็คือการเพิ่มกุญแจของฉันไปที่ authorized_keys ของ otheruser และ "ssh otheruser @ localhost" แต่นั่นเป็นเรื่องยุ่งยากที่จะทำสำหรับผู้ใช้และชุดเซิร์ฟเวอร์ที่ฉันมี ในระยะสั้น: $ sudo -HE ssh user@host (success) $ sudo -HE -u otheruser ssh …

6
ฉันจะใช้ ansible ด้วยรหัสผ่านสำหรับโฮสต์ได้อย่างปลอดภัยได้อย่างไร
ฉันต้องการใช้ansibleเพื่อจัดการกลุ่มของเซิร์ฟเวอร์ที่มีอยู่ ฉันสร้างansible_hostsไฟล์และทดสอบสำเร็จแล้ว (พร้อม-Kตัวเลือก) ด้วยคำสั่งที่กำหนดเป้าหมายไปยังโฮสต์เดียวเท่านั้น ansible -i ansible_hosts host1 --sudo -K # + commands ... ปัญหาของฉันตอนนี้คือรหัสผ่านผู้ใช้ในแต่ละโฮสต์นั้นแตกต่างกัน แต่ฉันไม่สามารถหาวิธีจัดการกับสิ่งนี้ได้ใน Ansible ใช้-Kฉันได้รับพร้อมท์สำหรับรหัสผ่าน sudo เดียวล่วงหน้าซึ่งดูเหมือนว่าจะพยายามสำหรับโฮสต์ที่ตามมาทั้งหมดโดยไม่ต้องแจ้ง: host1 | ... host2 | FAILED => Incorrect sudo password host3 | FAILED => Incorrect sudo password host4 | FAILED => Incorrect sudo password host5 | FAILED => Incorrect sudo …
108 security  sudo  ansible 

16
เหตุใดคำสั่ง sudo จึงใช้เวลานานในการดำเนินการ
ฉันได้รับลีนุกซ์ (Fedora 10, จากนั้น 11) ในช่วงไม่กี่เดือนที่ผ่านมา (และสนุกกับมันอย่างมหาศาล - มันเหมือนกับการค้นพบคอมพิวเตอร์อีกครั้ง, เรียนรู้มากมาย) ฉันได้เพิ่มผู้ใช้ของฉันในบรรทัดสุดท้ายของไฟล์ / etc / sudoers ดังที่แสดงไว้ด้านล่างเพื่อที่ฉันจะไม่ถูกถามรหัสผ่านเมื่อฉันใช้คำสั่ง sudo: MyUserName ALL = (ALL) NOPASSWD: ALL ตอนนี้ทุกครั้งที่ฉันรันคำสั่งโดยใช้ sudo มันจะหยุดช่วงเวลาที่สังเกตได้ยากก่อนที่จะทำงานจริง (~ 10 วินาที) เหตุใดจึงเป็นเช่นนี้และฉันจะแก้ไขได้อย่างไร ฉันใช้ Sudo เวอร์ชั่น 1.7.1 บน Fedora 11 x86 64

12
ฉันจะเรียกใช้คำสั่งที่ซับซ้อนตามอำเภอใจโดยใช้ sudo over ssh ได้อย่างไร
ฉันมีระบบที่สามารถเข้าสู่ระบบภายใต้ชื่อผู้ใช้ของฉัน (myuser) แต่ฉันต้องเรียกใช้คำสั่งในฐานะผู้ใช้อื่น (scriptuser) จนถึงตอนนี้ฉันได้พบกับสิ่งต่อไปนี้เพื่อเรียกใช้คำสั่งที่ฉันต้องการ: ssh -tq myuser@hostname "sudo -u scriptuser bash -c \"ls -al\"" หาก แต่เมื่อฉันพยายามเรียกใช้คำสั่งที่ซับซ้อนมากขึ้นเช่น[[ -d "/tmp/Some directory" ]] && rm -rf "/tmp/Some directory"ฉันประสบปัญหากับการอ้างอิงอย่างรวดเร็ว ฉันไม่แน่ใจว่าฉันจะส่งคำสั่งที่ซับซ้อนตัวอย่างนี้ไปได้bash -cอย่างไรเมื่อ\"จำกัด ขอบเขตของคำสั่งที่ฉันส่งไปแล้ว (และฉันไม่รู้วิธีการอ้างอิง / tmp / บางไดเร็กทอรีซึ่งรวมถึงช่องว่างด้วย มีวิธีการแก้ปัญหาทั่วไปที่ช่วยให้ฉันสามารถส่งคำสั่งใด ๆ ไม่ว่าจะมีความซับซ้อน / บ้าอ้างถึงหรือเป็นข้อ จำกัด บางอย่างที่ฉันได้มาถึง? มีวิธีแก้ปัญหาอื่น ๆ
80 ssh  bash  scripting  sudo 


7
บันทึกคำสั่งทั้งหมดที่รันโดยผู้ดูแลระบบบนเซิร์ฟเวอร์ที่ใช้งานจริง
เป็นนโยบายของ บริษัท สำหรับผู้ดูแลระบบในการเข้าสู่เซิร์ฟเวอร์ผ่านชื่อผู้ใช้ส่วนบุคคลแล้วเรียกใช้sudo -iเพื่อกลายเป็นราก เมื่อเรียกใช้sudo -isudo จะสร้างตัวแปรสภาพแวดล้อมที่เรียกว่าSUDO_USERซึ่งมีชื่อผู้ใช้ดั้งเดิมของผู้ใช้ มีวิธีการบันทึกคำสั่งทั้งหมดใน syslog ด้วยสิ่งที่คล้ายกับไวยากรณ์ต่อไปนี้: ${TIME/DATE STAMP}: [${REAL_USER}|${SUDO_USER}]: ${CMD} รายการตัวอย่างจะเป็น: Sat Jan 19 22:28:46 CST 2013: [root|ksoviero]: yum install random-pkg เห็นได้ชัดว่ามันไม่จำเป็นต้องเป็นไวยากรณ์ข้างต้นอย่างแน่นอน แต่ก็ต้องมีผู้ใช้จริงขั้นต่ำ (เช่น root), ผู้ใช้ sudo (เช่น ksoviero) และคำสั่งทั้งหมดที่ถูกเรียกใช้ (เช่น yum ติดตั้งแบบสุ่ม -pkg) ฉันได้ลองsnoopyไปแล้วแต่ไม่ได้รวมSUDO_USERตัวแปร
70 centos  bash  logging  sudo 

9
ตกลงเพื่อตั้งค่ารหัสผ่าน `sudo 'บนเซิร์ฟเวอร์คลาวด์หรือไม่?
ฉันชอบความคิดในการเข้าถึงเซิร์ฟเวอร์ผ่านกุญแจดังนั้นฉันไม่จำเป็นต้องพิมพ์รหัสผ่านทุกครั้งที่ฉันsshใส่กล่องฉันยังล็อคrootรหัสผ่านของผู้ใช้ (ไม่ใช่) ( passwd -l username) ดังนั้นจึงไม่สามารถเข้าสู่ระบบได้โดยไม่ต้องใช้รหัส แต่ตัวแบ่งทั้งหมดนี้ถ้าฉันต้องป้อนรหัสผ่านสำหรับsudoคำสั่ง ดังนั้นฉันอยากจะตั้งค่ารหัสผ่านsudoเพื่อทำสิ่งต่าง ๆ ให้สอดคล้องกับการเข้าสู่ระบบแบบไม่มีรหัสผ่าน อย่างไรก็ตามฉันยังคงมีความรู้สึกว่ามันอาจย้อนกลับมาที่ฉันในทางที่ไม่คาดคิดมันก็ดูเหมือนจะไม่ปลอดภัยอย่างใด มีคำเตือนใด ๆ ในการตั้งค่าเช่นนี้หรือไม่? คุณจะแนะนำ / ไม่แนะนำให้ทำเช่นนี้กับบัญชีผู้ใช้บนเซิร์ฟเวอร์หรือไม่? ชี้แจง ฉันกำลังพูดถึงการใช้งานsudoในเซสชันผู้ใช้แบบโต้ตอบที่นี่ไม่ใช่สำหรับบริการหรือสคริปต์การดูแลระบบ ฉันกำลังพูดถึงการใช้คลาวด์เซิร์ฟเวอร์ (ดังนั้นฉันจึงไม่สามารถเข้าถึงเครื่องที่มีอยู่จริงในเครื่องและสามารถล็อกอินจากระยะไกลเท่านั้น) ฉันรู้ว่าsudoมีการหมดเวลาระหว่างที่ฉันไม่ต้องป้อนรหัสผ่านอีกครั้ง แต่คอนเสิร์ตของฉันไม่ได้เกี่ยวกับการสูญเสียเวลาพิเศษในการพิมพ์รหัสผ่าน ความคิดของฉันแม้ว่าจะไม่ต้องจัดการกับรหัสผ่านเลยเพราะฉันคิดว่า: ถ้าฉันต้องจดจำได้ทั้งหมดมันสั้นเกินไปที่จะปลอดภัยหรือนำกลับมาใช้ใหม่ ถ้าฉันสร้างรหัสผ่านที่ยาวและไม่ซ้ำกันสำหรับบัญชีระยะไกลของฉันฉันจะต้องเก็บไว้ที่ใดที่หนึ่ง (โปรแกรมจัดการรหัสผ่านท้องถิ่นหรือบริการคลาวด์) sudoและเรียกมันเวลาที่ฉันต้องการที่จะใช้ทุก ฉันหวังว่าฉันจะสามารถหลีกเลี่ยงได้ ดังนั้นด้วยคำถามนี้ฉันต้องการเข้าใจความเสี่ยงข้อแม้และข้อตกลงการแลกเปลี่ยนที่เป็นไปได้ของการกำหนดค่าที่เป็นไปได้มากกว่าข้ออื่น ติดตาม 1 คำตอบทั้งหมดบอกว่ารหัสผ่านsudoไม่มีความปลอดภัยเนื่องจากจะช่วยให้เพิ่มสิทธิ์ "ง่าย" หากบัญชีผู้ใช้ส่วนบุคคลของฉันถูกบุกรุก ฉันเข้าใจ. แต่ในทางกลับกันถ้าฉันใช้รหัสผ่านเรามีความเสี่ยงแบบคลาสสิกทั้งหมดกับรหัสผ่าน (สั้นเกินไปหรือสตริงทั่วไปซ้ำในบริการต่าง ๆ ฯลฯ ) แต่ฉันเดาว่าถ้าฉันปิดใช้งานการพิสูจน์ตัวตนด้วยรหัสผ่าน/etc/ssh/sshd_configเพื่อให้คุณยังต้องมีกุญแจในการเข้าสู่ระบบฉันสามารถใช้รหัสผ่านsudoที่ง่ายกว่าเพื่อให้พิมพ์ได้ง่ายขึ้นใช่ไหม นั่นเป็นกลยุทธ์ที่ถูกต้องหรือไม่? ติดตาม 2 หากฉันมีรหัสเพื่อเข้าสู่ระบบrootผ่านทาง ssh หากใครบางคนสามารถเข้าถึงคอมพิวเตอร์ของฉันและขโมยกุญแจของฉันได้ (พวกเขายังคงได้รับการป้องกันด้วยรหัสผ่านของระบบปฏิบัติการ!) …

4
ฉันจะอนุญาตให้ผู้ใช้หนึ่งรายไปยังอีกคนหนึ่งโดยไม่อนุญาตการเข้าถึงรูทได้อย่างไร
ฉันต้องการอนุญาตให้ผู้ใช้บางรายใช้บัญชีผู้ใช้อื่นโดยไม่ต้องรู้รหัสผ่านของบัญชีนั้น แต่ไม่อนุญาตให้เข้าถึงบัญชีผู้ใช้อื่น (เช่นรูท) ตัวอย่างเช่นฉันต้องการอนุญาตให้ Tom the DBA เป็นผู้ใช้ oracle แต่ไม่ใช่ผู้ใช้ Tomcat หรือรูท ฉันคิดว่าสามารถทำได้ด้วยไฟล์ / etc / sudoers - เป็นไปได้ไหม ถ้าเป็นเช่นนั้นได้อย่างไร
53 linux  security  sudo 

4
Linux: ตั้งค่าสำหรับดูแลระบบระยะไกล
ทุกครั้งที่ฉันได้รับคำขอแปลก ๆ เพื่อให้การสนับสนุนระยะไกลการแก้ไขปัญหาและ / หรือการปรับแต่งประสิทธิภาพในระบบ Linux บริษัท ขนาดใหญ่มักมีขั้นตอนที่กำหนดไว้แล้วอย่างดีในการให้การเข้าถึงระยะไกลแก่ผู้ขาย / ซัพพลายเออร์และฉันต้องปฏิบัติตามนั้น (ให้ดีขึ้นหรือแย่ลง.) ในทางกลับกัน บริษัท ขนาดเล็กและบุคคลทั่วไปหันมาหาฉันเพื่อสอนพวกเขาด้วยสิ่งที่พวกเขาต้องทำเพื่อจัดตั้งฉันขึ้นมา โดยทั่วไปแล้วเซิร์ฟเวอร์ของพวกเขาจะเชื่อมต่อโดยตรงกับอินเทอร์เน็ตและมาตรการรักษาความปลอดภัยที่มีอยู่ประกอบด้วยค่าเริ่มต้นสำหรับการแจกจ่าย Linux ของพวกเขา เกือบทุกครั้งที่ฉันจะต้องเข้าถึงระดับรูทและใครก็ตามที่จะตั้งค่าการเข้าถึงสำหรับฉันไม่ใช่ผู้เชี่ยวชาญระบบ ฉันไม่ต้องการรหัสผ่านรูทของพวกเขาและฉันก็ค่อนข้างแน่ใจว่าการกระทำของฉันจะไม่เป็นอันตราย แต่ฉันควรให้คำแนะนำง่ายๆอะไรกับ: ตั้งค่าบัญชีและแลกเปลี่ยนข้อมูลรับรองอย่างปลอดภัย ตั้งค่าการเข้าถึงรูท (sudo) จำกัด การเข้าถึงบัญชีของฉัน ให้หลักฐานการตรวจสอบ (และใช่ฉันรู้และเตือนลูกค้าเหล่านั้นเสมอว่าเมื่อฉันมีการเข้าถึงของผู้ดูแลระบบการซ่อนการกระทำที่เป็นอันตรายใด ๆ เป็นเรื่องเล็กน้อย แต่สมมติว่าฉันไม่มีอะไรจะซ่อนและมีส่วนร่วมในการสร้างหลักฐานการตรวจสอบ) สิ่งที่สามารถปรับปรุงได้ในขั้นตอนด้านล่าง ชุดคำสั่งปัจจุบันของฉัน: ตั้งค่าบัญชีและแลกเปลี่ยนข้อมูลรับรองอย่างปลอดภัย ฉันให้แฮชรหัสผ่านและขอให้บัญชีของฉันได้รับการตั้งค่าด้วยรหัสผ่านที่เข้ารหัสดังนั้นเราไม่จำเป็นต้องส่งรหัสผ่านแบบข้อความที่ชัดเจนฉันเป็นคนเดียวที่รู้รหัสผ่านและเราไม่ได้เริ่มด้วย รหัสผ่านที่คาดเดาได้ยาก sudo useradd -p '$1$********' hbruijn ฉันให้คีย์สาธารณะ SSH (คู่คีย์เฉพาะต่อลูกค้า) และขอให้พวกเขาตั้งค่าบัญชีของฉันด้วยคีย์นั้น: sudo su - hbruijn mkdir -p …
51 linux  security  sudo  root  audit 

2
ทำไมฉันต้องแก้ไข / etc / sudoers ด้วย visudo
ฉันสังเกตเห็นว่าไฟล์ sudoers และไฟล์ cron config ทำงานในลักษณะพิเศษเมื่อเทียบกับไฟล์ config อื่น ๆ บน Linux พวกเขาจะต้องแก้ไขด้วยเสื้อคลุมพิเศษแทนที่จะแก้ไขข้อความใด ๆ ทำไมนี้

10
วิธีใช้ xauth เพื่อรันแอปพลิเคชั่นแบบกราฟิกผ่านผู้ใช้รายอื่นบน linux
บัญชีผู้ใช้ปกติของฉันคือสมมุติว่า user1 ฉันสร้าง user2 แยกต่างหากสำหรับแอปพลิเคชั่น x บางตัวที่ฉันต้องการเรียกใช้ขณะที่ล็อกอินเป็น x ในฐานะผู้ใช้ 1 แต่ในทางที่จะป้องกันไม่ให้ผู้ใช้เข้าถึง / อ่านข้อมูล user1 ฉันคิดว่าฉันสามารถใช้ xauth และ sudo / su กับ user2 จาก user1 เพื่อเรียกใช้แอปพลิเคชันนี้ ฉันจะทำสิ่งนี้ได้อย่างไร ฉันไม่แน่ใจวิธีกำหนดค่า xauth
48 linux  sudo 

8
su ไม่ทำงานบน mac os x?
ฉันได้รับสิ่งนี้: Macintosh:8.4 TAmoyal$ su Password: su: Sorry Macintosh:8.4 TAmoyal$ ฉันพิมพ์รหัสผ่านที่ใช้สำหรับ sudo ทำไมถึงไม่ทำงาน ขอบคุณ!
41 mac-osx  sudo 

1
ความแตกต่างระหว่าง sudo su - postgres และ sudo -u postgres คืออะไร
การพิสูจน์ตัวตนผู้ใช้ PostgreSQL บนซ็อกเก็ต unix โดยค่าเริ่มต้นโดยผู้ใช้ unix จะต้องเหมือนกับผู้ใช้ PostgreSQL ดังนั้นคนมักจะใช้suหรือsudoกลายเป็นpostgressuperuser ฉันมักจะเห็นคนใช้โครงสร้างเช่น: sudo su - postgres ค่อนข้างมากกว่า sudo -u postgres -i และฉันสงสัยว่าทำไม ฉันได้เห็น: sudo su - postgres -c psql แทน sudo -u postgres psql โดยไม่ต้องนำรุ่นจะทำให้ความรู้สึกบางอย่างถ้าคุณอยู่บนแพลตฟอร์มเก่าโดยไม่ต้อง แต่ทำไมคุณจะใช้ยูนิกซ์หรือลีนุกซ์ที่น้อยกว่ายุคก่อนประวัติศาสตร์?sudosusudosudo su
35 postgresql  shell  sudo  su 

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