วิธีใช้งาน sudo โดยไม่ต้องใส่รหัสผ่านบน Linux

คุณสามารถเรียกใช้sudo โดยไม่ต้องใส่รหัสผ่านได้โดยการเพิ่มNOPASSWDกฎลงในนโยบาย sudoers วิธีที่ปลอดภัยที่สุดคืออนุญาตเฉพาะคำสั่งการดูแลระบบที่คุณต้องการใช้จริงๆ แทนที่จะปิดใช้งานการขอรหัสผ่านสำหรับทุกคำสั่ง sudo

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

เหตุใด sudo -s จึงไม่ใช่เมธอด sudo ที่ไม่ต้องใช้รหัสผ่าน

คำแนะนำเก่าๆ ที่ให้ลองใช้sudo -ssudo นั้น จริงๆ แล้วไม่ได้ตั้งค่าให้ใช้งาน sudo โดยไม่ต้องใช้รหัสผ่าน-sตัวเลือกนี้จะเริ่มต้นเชลล์ภายใต้ sudo แต่กฎของ sudo อาจยังคงกำหนดให้คุณต้องยืนยันตัวตนก่อน นอกจากนี้ คุณอาจเห็นคำสั่งหลายคำสั่งทำงานโดยไม่ต้องมีการแจ้งเตือนอีกครั้ง เพราะโดยปกติ sudo จะแคชการยืนยันตัวตนที่สำเร็จไว้ในช่วงเวลาสั้นๆ ซึ่งแตกต่างจากNOPASSWDกฎ ถาวร

เรียกใช้คำสั่ง sudo เฉพาะโดยไม่ต้องใส่รหัสผ่าน

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

1. ยืนยันชื่อผู้ใช้และเส้นทางคำสั่งของคุณ

เรียกใช้คำสั่งต่อไปนี้ในฐานะผู้ใช้ปกติของคุณ:

whoami
command -v systemctl

คำสั่งที่สองอาจส่งค่ากลับมาเป็น/usr/bin/systemctl. ใช้เส้นทางที่ระบบของคุณรายงาน กฎของ Sudoers ควรระบุคำสั่งโดยใช้เส้นทางแบบเต็ม

เทอร์มินัล Linux แสดงคำสั่ง whoami และ command -v systemctl เพื่อแสดงชื่อผู้ใช้และเส้นทางคำสั่งแบบเต็ม
ตรวจสอบชื่อบัญชีและเส้นทางแบบเต็มของคำสั่งก่อนเขียนกฎ sudoers

2. สร้างไฟล์ drop-in ของ sudoers โดยเฉพาะ

แทนที่จะแก้ไข/etc/sudoersโดยตรง ให้ใช้visudoไฟล์ในรูปแบบ/etc/sudoers.d:

sudo visudo -f /etc/sudoers.d/alex-nopasswd

โดยปกติคุณจะต้องป้อนรหัสผ่านในขั้นตอนการตั้งค่านี้visudoแนะนำให้ใช้ `visudo` เพราะจะตรวจสอบไวยากรณ์ก่อนยอมรับการเปลี่ยนแปลงคู่มือ visudo ของ Ubuntuยังระบุด้วยว่า ` visudovisudo` จะล็อกไฟล์ระหว่างการแก้ไขและตรวจสอบข้อผิดพลาดในการแยกวิเคราะห์

การเปิดไฟล์ sudoers.d เฉพาะในเทอร์มินัล Linux ด้วยคำสั่ง sudo visudo เพื่อกำหนดค่า sudo โดยไม่ต้องใช้รหัสผ่าน
ให้เปิดไฟล์ sudoers drop-in แยกต่างหากvisudoแทนที่จะแก้ไขไฟล์นโยบายหลักด้วยโปรแกรมแก้ไขข้อความทั่วไป

3. เพิ่มกฎ NOPASSWD ที่แคบที่สุดเท่าที่คุณต้องการ

สำหรับตัวอย่างการรีสตาร์ท Nginx ให้เพิ่ม:

alex ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx

กฎนี้อนุญาตให้เรียกใช้คำสั่งนั้นพร้อมอาร์กิวเมนต์ที่ระบุเท่านั้นในฐานะผู้ใช้ root โดยไม่ต้องมีการตรวจสอบสิทธิ์ หากต้องการอนุญาตคำสั่งเฉพาะหลายคำสั่ง ให้คั่นคำสั่งด้วยเครื่องหมายจุลภาค

หากคุณต้องการให้คำสั่ง sudo ทุกคำสั่งสำหรับผู้ใช้รายใดรายหนึ่งไม่ต้องผ่านการตรวจสอบสิทธิ์ กฎโดยทั่วไปคือ:

alex ALL=(ALL:ALL) NOPASSWD: ALL

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

ตัวอย่างจากโปรแกรมแก้ไข Nano ที่แสดงกฎ sudoers NOPASSWD สำหรับการรีสตาร์ท nginx พร้อมตัวอย่างแบบไม่มีข้อจำกัดที่ถูกใส่คำอธิบายไว้
กฎเฉพาะคำสั่งนั้นปลอดภัยกว่าการอนุญาตโดยNOPASSWD: ALLทั่วไป

4. ตรวจสอบและทดสอบกฎ

หลังจากบันทึกและออกจากโปรแกรมแก้ไขแล้ว โปรดตรวจสอบนโยบาย sudoers ฉบับเต็ม:

sudo visudo -c

อย่าข้ามขั้นตอนการตรวจสอบนี้visudoเอกสารระบุว่านโยบาย sudoers จะถูกประเมินโดยรวม ดังนั้นการตรวจสอบการกำหนดค่าทั้งหมดจะช่วยตรวจจับปัญหาที่อาจเกี่ยวข้องกับไฟล์ที่รวมอยู่ด้วย

จากนั้นให้ยกเลิกสิทธิ์การเข้าถึง sudo ที่แคชไว้ และทดสอบโดยไม่ต้องมีการโต้ตอบใดๆ:

sudo -k
sudo -n /usr/bin/systemctl restart nginx

ตัวเลือก นี้-nบอกให้ sudo ไม่ต้องถามรหัสผ่าน หากตรงตามกฎ คำสั่งจะทำงานโดยไม่ต้องถามรหัสผ่าน หากยังคงต้องการการตรวจสอบสิทธิ์ sudo จะออกจากโปรแกรมพร้อมแสดงข้อผิดพลาดแทนที่จะรอรับข้อมูลป้อนเข้า ตัวเลือกนี้มีsudo -nประโยชน์อย่างยิ่งสำหรับสคริปต์ที่ไม่ควรค้างอยู่ที่หน้าจอขอรหัสผ่าน

เทอร์มินัล Linux ตรวจสอบสิทธิ์ผู้ใช้ sudo ด้วยคำสั่ง visudo -c ล้างข้อมูลรับรองที่แคชไว้ และทดสอบคำสั่ง NOPASSWD ด้วยคำสั่ง sudo -n
ตรวจสอบความถูกต้องของนโยบาย ล้างข้อมูลประจำตัวที่แคชไว้ และใช้sudo -nเพื่อยืนยันว่าคำสั่งนั้นไม่จำเป็นต้องใช้รหัสผ่านอีกต่อไปแล้ว

การแก้ไขปัญหา sudo แบบไม่ต้องใช้รหัสผ่าน

  • คำสั่งนี้ยังคงขอรหัสผ่าน:โปรดตรวจสอบให้แน่ใจว่าชื่อผู้ใช้ เส้นทางคำสั่ง และอาร์กิวเมนต์ตรงกับรายการใน sudoers ทุกประการ
  • คำสั่งนี้ไม่ได้รับอนุญาต:กรุณาเรียกใช้คำสั่งsudo -lเพื่อตรวจสอบสิทธิ์ที่กำหนดให้กับบัญชีของคุณ
  • ดูเหมือนว่าการแทรกไฟล์จะถูกละเลย:ให้ใช้ชื่อไฟล์ที่เรียบง่าย เช่นalex-nopasswd. การตั้งค่า sudoers บางอย่างจะไม่สนใจไฟล์ใน/etc/sudoers.dที่มีชื่อไฟล์ประกอบด้วยจุดหรือลงท้ายด้วยคำต่อท้ายแบบเดียวกับไฟล์สำรองข้อมูล
  • คุณต้องยกเลิกการเปลี่ยนแปลง:เปิด drop-in อีกครั้งด้วยsudo visudo -f /etc/sudoers.d/alex-nopasswdลบหรือจำกัดขอบเขตของกฎ บันทึก และเรียกใช้sudo visudo -cอีกครั้ง

แนวปฏิบัติที่ดีที่สุด

ควรใช้ sudo แบบไม่ต้องใส่รหัสผ่านเฉพาะเมื่อมีความจำเป็นอย่างแท้จริง เช่น การดำเนินการกับบริการที่มีการควบคุมอย่างเข้มงวด หรือภารกิจอัตโนมัติ ควรระบุเส้นทางคำสั่งและอาร์กิวเมนต์อย่างแม่นยำ หลีกเลี่ยงNOPASSWD: ALLการใส่รหัสผ่านหากเป็นไปได้ และควรตั้งค่ากฎ sudoers ให้เล็กที่สุดเท่าที่งานจะเอื้ออำนวย วิธีนี้จะช่วยรักษาการป้องกันส่วนใหญ่ของ sudo ในขณะที่ยังคงกำจัดข้อความแจ้งให้ใส่รหัสผ่านเมื่อจำเป็นอย่างแท้จริง

ฝากความเห็น

วิธีการกู้คืนพาร์ติชั่นและข้อมูลฮาร์ดดิสก์ที่สูญหายอย่างปลอดภัย

วิธีการกู้คืนพาร์ติชั่นและข้อมูลฮาร์ดดิสก์ที่สูญหายอย่างปลอดภัย

เรียนรู้วิธีการกู้คืนพาร์ติชั่นและไฟล์ที่สูญหายด้วย TestDisk และ PhotoRec ปกป้องไดรฟ์ต้นทาง สแกนอย่างปลอดภัย และบันทึกข้อมูลที่กู้คืนไปยังดิสก์อื่น

วิธีการสแกนคิวอาร์โค้ดบนเดสก์ท็อป Linux

วิธีการสแกนคิวอาร์โค้ดบนเดสก์ท็อป Linux

สแกนคิวอาร์โค้ดบน Linux ด้วย CoBang โดยใช้เว็บแคมหรือไฟล์ภาพ ดูตัวเลือกการติดตั้ง ขั้นตอนการตั้งค่า และวิธีแก้ไขปัญหาสำหรับการเข้าถึงกล้อง Flatpak

วิธีเปลี่ยนการตั้งค่าเว็บแคมบน Linux ด้วย Cameractrls

วิธีเปลี่ยนการตั้งค่าเว็บแคมบน Linux ด้วย Cameractrls

เปลี่ยนการตั้งค่าเว็บแคมบน Linux ด้วย Cameractrls: ปรับค่าแสง สี ลดการกระพริบ และการควบคุมอื่นๆ ที่รองรับ จากนั้นตรวจสอบโหมดวิดีโอที่เข้ากันได้

วิธีการติดตั้ง PhpStorm บน Linux: Toolbox, Tar.gz, Snap และ AUR

วิธีการติดตั้ง PhpStorm บน Linux: Toolbox, Tar.gz, Snap และ AUR

ติดตั้ง PhpStorm บน Linux ด้วย JetBrains Toolbox หรือไฟล์เก็บถาวร tar.gz แบบสแตนด์อโลน รวมถึงตัวเลือก Snap และ Arch AUR Java ถูกรวมมาให้แล้ว

วิธีตั้งค่าหน้าจอคู่บน XFCE 4

วิธีตั้งค่าหน้าจอคู่บน XFCE 4

สร้างแผง XFCE 4 แยกต่างหากสำหรับแต่ละจอแสดงผล กำหนดให้แผงที่สองแสดงผลทางด้านขวา จัดตำแหน่งและปรับขนาด และเพิ่มไอคอนเรียกใช้งานและรายการสถานะที่คุณต้องการ

วิธีการติดตั้ง Cisco Packet Tracer บน Linux

วิธีการติดตั้ง Cisco Packet Tracer บน Linux

ดาวน์โหลด Cisco Packet Tracer 9.0.1 สำหรับ Ubuntu 64-bit ติดตั้งแพ็คเกจ DEB ด้วย APT ยอมรับข้อตกลงใบอนุญาตในเทอร์มินัล และลงชื่อเข้าใช้เพื่อเริ่มการทดลอง

วิธีการตัดภาพบน Linux ด้วยโปรแกรม GIMP

วิธีการตัดภาพบน Linux ด้วยโปรแกรม GIMP

ลบพื้นหลังรูปภาพบน Linux ด้วย GIMP: ลากเส้นตามวัตถุ ลบพื้นหลังที่เลือก รักษาความโปร่งใส และส่งออกเป็นไฟล์ PNG ที่สามารถนำกลับมาใช้ใหม่ได้

วิธีสำรองข้อมูล CD-ROM เป็นไฟล์ ISO บน Linux

วิธีสำรองข้อมูล CD-ROM เป็นไฟล์ ISO บน Linux

สร้างไฟล์ ISO สำหรับ CD-ROM บน Linux ด้วย GNOME Disks หรือ dd ระบุไดรฟ์ออปติคัล ตรวจสอบสถานะการคัดลอก ตรวจสอบความถูกต้องของอิมเมจ และรู้ว่าเมื่อใดที่แผ่นเสียหายหรือแผ่นเสียงต้องการเครื่องมืออื่น

ดาวน์โหลด FlightGear ได้ฟรี: คู่มือการติดตั้งอย่างเป็นทางการ

ดาวน์โหลด FlightGear ได้ฟรี: คู่มือการติดตั้งอย่างเป็นทางการ

ดาวน์โหลด FlightGear ได้ฟรีจากเว็บไซต์ทางการ เปรียบเทียบแพ็กเกจสำหรับ Windows, macOS และ Linux ติดตั้งไฟล์ข้อมูล และเริ่มต้นการบินครั้งแรกของคุณ

OKSampler: โปรแกรมแซมpler เพลงฟรีและใช้งานง่าย สำหรับสร้างจังหวะจากคีย์บอร์ด

OKSampler: โปรแกรมแซมpler เพลงฟรีและใช้งานง่าย สำหรับสร้างจังหวะจากคีย์บอร์ด

OKSampler แปลงคลิป MP3 เป็นคีย์บนแป้นพิมพ์และสามารถเล่นเสียงวนซ้ำได้ เรียนรู้ว่าซอฟต์แวร์ฟรีรุ่นเก่านี้ทำอะไรได้บ้าง ฟีเจอร์เก่าๆ สิ้นสุดลงตรงไหน และควรตรวจสอบอะไรบ้างก่อนดาวน์โหลด