ดำเนินการ sudo โดยไม่มีรหัสผ่านหรือไม่


292

แรงบันดาลใจจากคำถามนี้....

ฉันเป็นคนเดียวที่ใช้ระบบของฉันกับ 12.04
ทุกครั้งที่ฉันออกsudoคำสั่ง ระบบขอรหัสผ่านผู้ใช้ (ซึ่งเป็นวิธีที่ดีในตัวเอง)
อย่างไรก็ตามฉันกำลังคิด โดยไม่ต้องเปิดใช้งานบัญชีรูท ฉันจะรันคำสั่ง sudo ซึ่งจะไม่ขอรหัสผ่านผู้ใช้ในการตรวจสอบ

หมายเหตุ: ฉันต้องการรันคำสั่ง sudo โดยไม่ต้องพิสูจน์ตัวตนด้วยรหัสผ่าน เฉพาะเมื่อมีการดำเนินการผ่านเทอร์มินัล
ฉันไม่ต้องการลบการรักษาความปลอดภัยเลเยอร์พิเศษนี้จากฟังก์ชั่นอื่น ๆ ในขณะที่ใช้ 'ศูนย์ซอฟต์แวร์อูบุนตู' หรือรันสคริปต์ทุบตีโดยการลากไฟล์ something.sh ไปยังเทอร์มินัล


2
ดังนั้นคุณเพียงแค่ต้องการขอรหัสผ่านในเครื่องเทอร์มินัลและสิ่งอื่น ๆ ที่ไม่ได้หรือวิธีอื่น ๆ ! ในทั้งสองวิธีฉันคิดว่ามันเป็นการละเมิดความปลอดภัยที่สูง
Dr_Bunsen

ฉันต้องการให้ระบบไม่สามารถถามรหัสผ่านเมื่ออยู่ในเครื่องเทอร์มินัล ... เพื่อจุดประสงค์อื่นใดระบบจะต้องถามรหัสผ่าน ข้อกำหนดนี้เป็นเพียงชั่วคราวและจะใช้ในขณะที่กำหนดค่าการติดตั้งเซิร์ฟเวอร์ใหม่ .. ในระหว่างการติดตั้งเซิร์ฟเวอร์ใหม่จะต้องใช้เวลาหลายชั่วโมงในการกำหนดค่าด้วยคำสั่ง sudo .. การออกรหัสผ่านทุก 15 นาที ปวดหัว ฉันไม่ต้องการใช้บัญชีรูท
Bhavesh Diwan

คุณต้องอ่านการสนทนาใน: askubuntu.com/questions/135428/…
david6

1
แน่นอนคุณสามารถยืดเวลาหมดเวลาได้ นอกจากนี้หากคุณติดตั้งเซิร์ฟเวอร์ใหม่บ่อยครั้งคุณควรคิดถึงกระบวนการอัตโนมัติ คุณไม่ได้รับค่าจ้างในการพิมพ์คุณจะได้รับเงินเพื่อแก้ไขปัญหาและเพื่อให้ได้ผลสำเร็จ *
MauganRa

คำตอบ:


82

sudo -i เป็นวิธีที่จะไปหากคุณไม่ต้องการพิมพ์รหัสผ่านทุก ๆ 10 นาทีขณะทำการแก้ไขในระบบของคุณ (หรือระบบอื่น ๆ ) และคุณไม่ต้องการแก้ไขไฟล์ระบบใด ๆ

มันจะสลับคุณไปที่รูทโดยsudoใช้รหัสผ่านผู้ใช้ของคุณเมื่อคุณปิดคอนโซลหรือพิมพ์exitคุณจะกลับไปที่ผู้ใช้ปกติของคุณ


2
สิ่งนี้จะเป็นจริงหรือไม่ที่ฉันจะป้อนรหัสผ่านเพียงครั้งเดียว ... และจนกว่าจะถึงเวลาที่ฉันจะไม่ออก สภาพอากาศ 5 ชม. หรือ 15 .... ระบบจะไม่ขอการพิสูจน์ตัวตนด้วยรหัสผ่านเมื่อมีการใช้คำสั่ง sudo
Bhavesh Diwan

2
@ Z9iT จนกว่าคุณจะพิมพ์exitหรือจนกว่าคุณจะปิดหน้าต่างเทอร์มินัลอีมูเลเตอร์
Bruno Pereira

2
ขอบคุณ .. ยอมรับคำตอบนี้เพราะมันเป็นจุดประสงค์ในการออกคำสั่ง sudo โดยไม่ต้องมีการพิสูจน์ตัวตนด้วยรหัสผ่านเป็นเวลา n-ชั่วโมงจนถึงเวลาที่เราจะไม่ออก .. ไม่แก้ไขไฟล์ระบบเป็นข้อดี
Bhavesh Diwan

3
สิ่งนี้ไม่ได้ตอบคำถามจริงๆเพราะคุณยังต้องป้อนรหัสผ่านเพื่อเป็นรูท ณ จุดนั้น
Adam F

2
ไม่ใช่ถ้าคุณใช้เครื่องเสมือนในสภาพแวดล้อมที่ปลอดภัยและคุณเพียงต้องการให้ทำอะไรบางอย่างทันทีและคุณไม่ต้องการจัดการกับรหัสผ่าน คำตอบนี้ไม่ได้ตอบคำถามในขณะที่มันเป็นข้อมูลที่เป็นประโยชน์ ฉันเห็นด้วยกับ Adam F
Jonathan Komar

573

คุณสามารถกำหนดค่าsudoให้ไม่ขอรหัสผ่านของคุณ

เปิดหน้าต่าง Terminal และพิมพ์:

sudo visudo

ที่ด้านล่างของไฟล์เพิ่มบรรทัดต่อไปนี้:

$USER ALL=(ALL) NOPASSWD: ALL

$USERชื่อผู้ใช้ของคุณอยู่ที่ไหนในระบบของคุณ บันทึกและปิดไฟล์ sudoers (หากคุณยังไม่ได้เปลี่ยนเทอร์มินัลเริ่มต้นของคุณ (คุณจะรู้ว่าคุณมี) กด ctl + x เพื่อออกnanoและมันจะแจ้งให้คุณบันทึก)

ในฐานะของ Ubuntu 19.04 ตอนนี้ไฟล์ควรมีหน้าตาเป็นอย่างไร

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

YOUR_USERNAME_HERE ALL=(ALL) NOPASSWD: ALL

หลังจากนี้คุณสามารถพิมพ์sudo <whatever you want>ในหน้าต่าง Terminal โดยไม่ต้องใส่รหัสผ่าน

สิ่งนี้ใช้ได้เฉพาะกับการใช้sudoคำสั่งในเทอร์มินัล คุณจะยังคงได้รับแจ้งให้ใส่รหัสผ่านหากคุณ (เช่น) ลองติดตั้งแพคเกจจากศูนย์ซอฟต์แวร์

พรอมต์รหัสผ่าน gui


15
ขอแนะนำให้ใช้sudo visudoแทนการแก้ไขโดยตรง นอกจากนี้การเปลี่ยนการอนุญาตของ sudoers อาจล็อคตัวเองออกไป เมื่อแก้ไขด้วยvimให้ใช้:wq!เพื่อเขียนไปยังไฟล์แบบอ่านอย่างเดียวและออกจากโปรแกรมแก้ไข ด้วยวิธีนี้การอนุญาต 644 ไม่จำเป็น
Lekensteyn

8
นี่เป็นความเสี่ยงด้านความปลอดภัยที่ร้ายแรงใครก็ตามที่ยึดครองบัญชีใด ๆ ที่มีสิทธิ์ sudo สามารถควบคุมระบบที่สมบูรณ์และล็อคการเข้าถึงคอมพิวเตอร์เครื่องนี้ต่อไปไม่แนะนำอย่างจริงจัง
Bruno Pereira

6
@ wil93 คุณหายไป: สคริปต์ที่เรียกร้องsudo install crapwareจะไม่ขอรหัสผ่านในกรณีนี้และอาจทำให้ทุกอย่างที่คุณมีมีอยู่และคุณไม่จำเป็นต้องอยู่ติดกับเครื่องเพื่อเผยแพร่สคริปต์ครั้งล่าสุดที่ฉันตรวจสอบ .. นี่เป็นเพียงตัวอย่าง
Bruno Pereira

12
@BrunoPereira หากคุณวางแผนที่จะเรียกใช้สคริปต์ที่ไม่น่าเชื่อถือนั่นคือความเสี่ยงด้านความปลอดภัย (แม้ว่า sudo จะขอรหัสผ่านสคริปต์ที่เป็นอันตรายอาจทำrm -rf ~สิ่งต่าง ๆ ได้เสมอ) โดยรวมแล้วฉันจะไม่เรียก«ความเสี่ยงด้านความปลอดภัยที่ร้ายแรง»การลบรหัสผ่านง่าย ๆ จาก sudo
wil93

5
เห็นด้วยกับ @ wil93 เมื่อใช้งานสคริปต์ที่ไม่น่าเชื่อถือรหัสผ่านสำหรับการป้อนข้อมูลนั้นไม่มีโอกาสที่จะยกเลิกกระบวนการในขณะที่ฉันสงสัยว่าคนส่วนใหญ่ไม่มีประโยชน์ ประเด็นก็คือคุณรู้ว่าสคริปต์มาจากไหนและทำอะไร
ชาด

36

รูท sudo timeouts เป็นวิธีที่ง่ายและปลอดภัยที่สุดในการทำเช่นนี้ ฉันจะวางเค้าโครงตัวอย่างทั้งหมด แต่ได้รับการเตือนว่ามีความเสี่ยงมาก ๆ ไม่ว่าคุณจะทำอย่างไรแม้ว่าวิธีนี้จะปลอดภัยกว่ามาก:

sudo visudo

นี่เป็นการเปิดตัวแก้ไขและชี้ไปที่ไฟล์ sudoers - อูบุนตูใช้ค่าเริ่มต้นเป็นนาโน, ระบบอื่น ๆ ใช้ Vi ตอนนี้คุณเป็นผู้ใช้ขั้นสูงในการแก้ไขไฟล์ที่สำคัญที่สุดในระบบของคุณ ไม่มีความเครียด!

(คำแนะนำเฉพาะ Vi ที่บันทึกด้วย(vi!) ให้ข้ามสิ่งเหล่านี้หากคุณใช้นาโน)

ใช้ปุ่มลูกศรเพื่อเลื่อนไปยังจุดสิ้นสุดของDefaultsบรรทัด

(vi!)กดปุ่ม A (ตัวใหญ่ "a") เพื่อย้ายที่ท้ายบรรทัดปัจจุบันและเข้าสู่โหมดแก้ไข (ต่อท้ายอักขระตัวสุดท้ายในบรรทัด)

ตอนนี้พิมพ์:

,timestamp_timeout=X

โดยที่ X คือการหมดเวลาหมดอายุในหน่วยนาที หากคุณระบุ 0 คุณจะถูกถามรหัสผ่านเสมอ หากคุณระบุค่าลบการหมดเวลาจะไม่หมดอายุ Defaults env_reset,timestamp_timeout=5เช่น

(vi!)กดปุ่ม Escape เพื่อกลับสู่โหมดคำสั่ง ตอนนี้ถ้าคุณพอใจกับการแก้ไขของคุณแล้วให้พิมพ์:w Enterเพื่อเขียนไฟล์และ:q Enterออกจาก vi หากคุณทำผิดอาจเป็นวิธีที่ง่ายที่สุดคือทำซ้ำตั้งแต่เริ่มต้นเพื่อออกโดยไม่บันทึก (กดEscapeเพื่อเข้าสู่โหมดคำสั่ง) แล้วพิมพ์: q! Enter.

กดปุ่มCtrl+ XจากYนั้นEnterบันทึกไฟล์ของคุณและออกจากนาโน

คุณอาจต้องการอ่านหน้า sudoers และ vi ด้วยตนเองสำหรับข้อมูลเพิ่มเติม

man sudoers
man vi

รีเซ็ตค่าการหมดเวลาโดยใช้:

sudo -k

คำแนะนำเหล่านี้คือการลบพรอมต์สำหรับรหัสผ่านเมื่อใช้คำสั่ง sudo คำสั่ง sudo จะยังคงต้องใช้สำหรับการเข้าถึงรูท

แก้ไขไฟล์ sudoers

เปิดหน้าต่าง Terminal sudo visudoพิมพ์ เพิ่มบรรทัดต่อไปนี้ในตอนท้ายของไฟล์ (หากไม่ใช่ตอนท้ายไฟล์นั้นอาจถูกทำให้เป็นโมฆะโดยรายการในภายหลัง):

<username> ALL=NOPASSWD: ALL

แทนที่<username>ด้วยชื่อผู้ใช้ของคุณ (ไม่มี<>) นี่คือสมมติว่า Ubuntu ได้สร้างกลุ่มที่มีชื่อเดียวกับชื่อผู้ใช้ของคุณซึ่งเป็นเรื่องปกติ คุณสามารถเลือกใช้ผู้ใช้กลุ่มหรือกลุ่มอื่น ๆ ที่คุณอยู่เพียงแค่ให้แน่ใจว่าคุณอยู่ในกลุ่มนั้น สามารถตรวจสอบได้โดยไปที่ระบบ -> การบริหาร -> ผู้ใช้และกลุ่ม

ตัวอย่าง:

michael ALL=NOPASSWD: ALL

พิมพ์ ^ X ( Ctrl+ X) เพื่อออกจาก สิ่งนี้ควรถามตัวเลือกในการบันทึกไฟล์พิมพ์ใน Y เพื่อบันทึก

ออกจากระบบแล้วกลับเข้าสู่ระบบในตอนนี้ควรอนุญาตให้คุณเรียกใช้คำสั่ง sudo โดยไม่ต้องใส่รหัสผ่าน

บัญชีรูท

เปิดใช้งานบัญชีรูท

การเปิดใช้งานบัญชีรูทไม่ค่อยจำเป็น เกือบทุกสิ่งที่คุณต้องทำในฐานะผู้ดูแลระบบ Ubuntu สามารถทำได้ผ่าน sudo หรือ gksudo หากคุณต้องการการล็อกอินรูทแบบถาวรอย่างถาวรทางเลือกที่ดีที่สุดคือการจำลองเชลล์ล็อกอินรูทโดยใช้คำสั่งต่อไปนี้:

sudo -i

อย่างไรก็ตามหากคุณต้องเปิดใช้งานการเข้าสู่ระบบรูทคุณสามารถทำได้ดังนี้:

sudo passwd root

ปิดใช้งานบัญชีรูทของคุณอีกครั้ง

หากด้วยเหตุผลบางอย่างที่คุณเปิดใช้งานบัญชีรูทของคุณและต้องการปิดใช้งานอีกครั้งให้ใช้คำสั่งต่อไปนี้ในเทอร์มินัล:

sudo passwd -dl root

กลุ่ม sudo ทั่วทั้งระบบ

root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

ออกจากระบบแล้วกลับเข้ามาใหม่

รีเซ็ตการหมดเวลาของ sudo

คุณสามารถมั่นใจได้ว่า sudo ขอรหัสผ่านครั้งต่อไปโดยการเรียกใช้

sudo -k

ฉันโพสต์สิ่งนี้ก่อนที่ฉันจะเพิ่มสำหรับวิธีการที่กว้างในการทำสิ่งนี้และอื่น ๆ อ่านได้ที่นี่:
user209328

นี่เป็นคำตอบที่ล่าช้า แต่ครอบคลุมมากที่สุดในแง่ของตัวเลือกที่ให้คุณ
jenming

1
อืมบน Ubuntu 18.04 MATE นี้ทำงานได้อย่างสมบูรณ์ในขณะที่ทำเช่นเดียวกันกับ Ubuntu 18.04 GNOME ทำให้ฉันมีริ้วรอยด้วย "ชื่อผู้ใช้ไม่ได้อยู่ในไฟล์ sudoers ... " ตอนนี้นี่คือเหตุผลว่าทำไมผู้คนจำนวนมากเกลียดชังลินุกซ์ - เพราะมันไม่ค่อย "สาเหตุ": D ในกรณีที่คุณเจอ
Peter

ตัวแปรสภาพแวดล้อมของ EDITOR สามารถตั้งค่าตัวแก้ไขที่ใช้ ... เช่นsudo env EDITOR=/bin/nano visudoเพื่อแก้ไขsudoersในนาโนได้อย่างน่าเชื่อถือ (สามารถใช้ตัวเลือกอัปเดตเพื่อตั้งค่าตัวแก้ไขได้)
Gert van den Berg

29

วิธีที่ต้องการให้สิทธิ์บุคคล (หรือกลุ่ม) การอนุญาตจะเพิ่มไฟล์ภายใต้ /etc/sudoers.d

สิ่งนี้แยกการเปลี่ยนแปลงในเครื่องออกจากนโยบายเริ่มต้นและประหยัดเวลาในกรณีที่ไฟล์ sudoers แจกจ่ายเปลี่ยนไป

ในการทำให้ผู้ใช้ที่เข้าสู่ระบบในปัจจุบันเป็น sudoer และsudoไม่ได้แจ้งให้ใส่รหัสผ่านให้ใช้

echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$USER

สิ่งนี้จะสร้างไฟล์ชื่อ/etc/sudoers.d/$USER(ซึ่ง$USERเป็นชื่อผู้ใช้ของผู้ใช้ที่คุณเข้าสู่ระบบเหมือนตอนที่คุณรันคำสั่งนั้น) ทำให้ชัดเจนว่าผู้ใช้รายใดได้รับอนุญาต

หากคุณต้องการทำเช่นนั้นกับผู้ใช้รายอื่นเพียงแค่แทนที่ทั้งสองอินสแตนซ์$USERด้วยชื่อผู้ใช้อื่นในคำสั่งด้านบน

echo "otheruser ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/otheruser

ในทำนองเดียวกันไฟล์เดียวสามารถใช้ในการจัดการหลายคำสั่ง:

echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/local

ดู/etc/sudoers.d/READMEและman sudoersสำหรับข้อมูลเพิ่มเติม


คำสั่ง echo ล้มเหลวแม้ว่าฉันจะรูตก็ตาม แต่ฉันเพิ่มไฟล์และแก้ไขโดยตรงและสิ่งนี้ทำงานบน Ubuntu ล่าสุด (ในขณะที่การเพิ่มผู้ใช้ไปยัง sudoers โดยตรงไม่ได้!)
scape

1
วิธีที่ถูกต้องคือการใช้teeคำสั่ง
woto

1
นี่เป็นวิธีที่ดีกว่าที่ใช้งานได้sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)'ตาม:sudo chmod 440 /etc/sudoers.d/$(logname)
พาราไดซ์

ในการsudo ... >fileเปลี่ยนเส้นทางเชลล์จะดำเนินการในเชลล์เดิมดังนั้นจึงสามารถทำงานได้ในเชลล์รูทเท่านั้น
Konstantin Pelepelin

วิธีการทีได้รับอนุญาตโดยไม่มีปัญหา:echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/username
คาร์สัน Ip

7

ดีหนึ่งซับเพื่อลบ sudo แจ้งให้ผู้ใช้ปัจจุบัน

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'

2
ฉันคิดว่าคุณสามารถทำได้: echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudoเพียงvisudoต้องการsudoหลังจากทั้งหมด (และยังenvไม่จำเป็นต้องใช้ในการกำหนดค่าเริ่มต้น IIRC)
muru

มีหลายอย่างที่อาจผิดพลาดได้ที่นี่ (แน่นอนว่าผู้ใช้ทุกคนมีข้อผิดพลาด) ซึ่งเป็นที่ต้องการในความเห็นที่ถ่อมตนของฉันเพื่อแก้ไขไฟล์ sudoer โดยตรง ( sudo visudo) ในขณะที่ทดสอบผลลัพธ์ (ขณะที่เครื่องมือแก้ไขยังคงเปิดอยู่) สำหรับผู้ใช้ใหม่ที่อาจถูกทดลองให้ใช้ "หนึ่งซับ" นี้
ไมเคิล

ขอบคุณสำหรับความคิดเห็น! ฉันเพิ่งพยายามสคริปต์อย่างรวดเร็วการลบพรอมต์รหัสผ่าน sudo ใน VMs การทดสอบแบบระเหย อย่าลังเลที่จะแนะนำการปรับปรุง :)
Eric Landry

คุณยังต้องsudo chmod 440 /etc/sudoers.d/$(logname)แก้ไขสิทธิ์ของไฟล์ตามที่ระบุใน README ในไดเรกทอรีนั้น
Paradroid

6

แน่นอนว่าสิ่งที่คุณต้องการจะทำไม่แนะนำ หลังจากผ่านไปครู่หนึ่งถึงแม้ว่าการป้อนsudoจะกลายเป็นอัตโนมัติจนความมีประโยชน์ลดลง

อีกวิธีหนึ่งคือการปล่อย sudoers sudo bashไฟล์ของคุณเป็นและในขณะที่ทำบางสิ่งบางอย่างซับซ้อนมากมายร้อยเซิร์ฟเวอร์ของคุณป้อน ที่จะให้เปลือกที่จะรับรองความถูกต้องเป็น root จนกว่าคุณจะออกจากมัน


12
sudo -sหรือsudo -iอาจเป็นทั้งความคิดที่ดีกว่าsudo bashเพราะพวกเขามั่นใจว่าสภาพแวดล้อมนั้นมีสติและสิ่งต่าง ๆ
Darael

2
"สติและสิ่งต่าง ๆ " โดยทั่วไปไม่ได้อยู่ในขอบเขตของ "ความคิดที่ดีกว่า" ใครบางคนสามารถให้คำอธิบายทางเทคนิคว่าทำไม sudo-s หรือ sudo -i ดีกว่า sudo bash หรือไม่ (แก้ไข: นี่คือคำถามที่เกี่ยวข้องaskubuntu.com/questions/376199/… )
Nuzzolilo

2
จำนวนsudoคำสั่ง (คิดโดยเฉพาะsudo pip ...) ต้องการsudo -H(ตั้งค่า HOME) เพื่อให้คำสั่งทำงานได้อย่างถูกต้อง ในกรณีอื่น ๆsudo -E(env) อาจจำเป็นต้องใช้ การทำงานsudo bashอาจจะใช้งานได้ในกรณีส่วนใหญ่ แต่ไม่ใช่ในทุกกรณีและเมื่อไม่เป็นเช่นนั้นจะไม่ชัดเจนว่าทำไม
ไมเคิล

1
sudo su เป็นวิธีดั้งเดิมในการสลับบทบาทและเริ่มทำหน้าที่ดูแลระบบ sys
user1656671

3

จากผู้ใช้ขั้นสูงเป็นคำตอบที่ดี:

ใช้สวิตช์ -S ซึ่งอ่านรหัสผ่านจาก STDIN:

echo <password> | sudo -S <command>

แทนที่<password>ด้วยรหัสผ่านของคุณ


2
ไม่แนะนำให้ทำเช่นนี้เนื่องจากรหัสผ่านยังคงอยู่ในรูปแบบที่ชัดเจนในไฟล์ประวัติเชลล์ ใช้โซลูชันอื่นใดแทน
HappyCactus

1
@HappyCactus คุณสามารถวางที่ด้านหน้าหนึ่งครั้งechoเพื่อไม่ให้ปรากฏในประวัติศาสตร์ได้หรือไม่?
WinEunuuchs2Unix

ใช่สิ่งนี้จะหลีกเลี่ยงการเปิดเผยรหัสผ่าน cleartext ไปที่ไฟล์ประวัติ แต่คุณอย่าลืมเพิ่มไว้เสมอ? :-)
HappyCactus

@ HappyCactus ฉันมักจะเพิ่มช่องว่างนำโดยไม่ตั้งใจแล้วรู้สึกรำคาญเมื่อไม่สามารถเรียกคืนประวัติศาสตร์ได้ :) ผู้ใช้ Super มี 129 upvotes ดังนั้นฉันคิดว่ามันเป็นคำตอบที่ดีที่จะออกจากที่นี่ ผู้คนจะอ่านความคิดเห็นของเราและทราบถึงความเสี่ยงและขั้นตอนการหลีกเลี่ยงความเสี่ยง
WinEunuuchs2Unix

ฉันเห็นด้วยอย่างยิ่ง ขอให้มีความสุขมาก ๆ ในวันนี้!
HappyCactus


2

นี่เป็นโซลูชันบรรทัดเดียวที่เปลี่ยนแปลงการอนุญาตให้ใช้ไฟล์ตามที่ระบุใน/etc/sudoer.d/README:

sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' & sudo chmod 440 /etc/sudoers.d/$(logname)

0
  • การขยายแนวคิด @upteryx

  • นี่คือวิธีที่ฉันใช้ผู้ใช้ที่ไม่ใช่รูทและไม่มีรหัสผ่านในอิมเมจ Docker ชั่วคราวสำหรับใช้ใน CICD ไปป์ไลน์:

RUN \
    groupadd -g 999 foo && useradd -u 999 -g foo -G sudo -m -s /bin/bash foo && \
    sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
    sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
    sed -i /etc/sudoers -re 's/^#includedir.*/## **Removed the include directive** ##"/g' && \
    echo "foo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
    echo "Customized the sudoers file for passwordless access to the foo user!" && \
    echo "foo user:";  su - foo -c id
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.