ฉันจะรู้ได้อย่างไรว่าฉันเป็น sudoer?


32

ระบบ Linux ทำงานอย่างไรเมื่อฉันไม่ได้ sudoer? นี่คือสิ่งที่เกิดขึ้นถ้าฉันพยายามใช้ sudo:

server:/tmp>$ sudo cal
[sudo] password for user:
Sorry, try again.

เป็นไปได้หรือไม่ที่ฉันไม่ทราบรหัสผ่านหรือสิ่งนี้หมายความว่าฉันไม่ได้เป็นคนโง่? (ในระบบเครื่องอื่นพิมพ์ออกมาว่าฉันไม่มี sudoer และเหตุการณ์จะถูกรายงาน)


ดีกว่าคำตอบใด ๆ ด้านล่าง: superuser.com/questions/553932/…
barnhillec

คำตอบ:


40

หากต้องการทราบว่าผู้ใช้รายใดมีการเข้าถึง sudo หรือไม่เราสามารถใช้-lและ-Uตัวเลือกร่วมกัน

ตัวอย่างเช่น,

หากผู้ใช้มีการเข้าถึง sudo จะพิมพ์ระดับการเข้าถึง sudo สำหรับผู้ใช้นั้น

   $ sudo -l -U pradeep
     User pradeep may run the following commands on this host:
     (ALL : ALL) ALL

หากผู้ใช้ไม่สามารถเข้าถึง sudo ได้ผู้ใช้นั้นจะไม่ได้รับอนุญาตให้เรียกใช้ sudo บน localhost

   $ sudo -l -U pradeep.c
     User pradeep.c is not allowed to run sudo on localhost.

4
สิ่งนี้ไม่ได้ผลสำหรับฉัน แทนที่จะให้ข้อมูลกับฉันมันจะขอรหัสผ่านอีกครั้ง: server:/home/drasto>$ sudo -l -U drasto [sudo] password for drasto:มี Red Hat distro บนเซิร์ฟเวอร์นั้นถ้าช่วยได้
Rasto

9

คุณสามารถใช้การ-lตั้งค่าสถานะเพื่อแสดงรายการสิทธิ์ของคุณ

-l[l] [command]
   If no command is specified, the -l (list) option will list the allowed (and forbidden)
   commands for the invoking user (or the user specified by the -U option) on the current
   host.  If a command is specified and is permitted by sudoers, the fully-qualified path
   to the command is displayed along with any command line arguments.  If command is
   specified but not allowed, sudo will exit with a status value of 1.  If the -l option
   is specified with an l argument (i.e. -ll), or if -l is specified multiple times, a
   longer list format is used.

หากคุณไม่ได้อยู่ในไฟล์คุณควรได้รับข้อผิดพลาด "ไม่ใช่ไฟล์ sudoers" ที่คุณเห็นบนเครื่องอื่น


2
สิ่งนี้ไม่ได้ผลสำหรับฉัน มันแค่ขอรหัสผ่าน:server:/home/drasto>$ sudo -l [sudo] password for drasto:
Rasto

1
ใส่รหัสผ่านของคุณ
Kevin

1
@Kevin @Michael รหัสผ่านของฉันไม่ทำงาน ฉันรู้แค่รหัสผ่านเดียวสำหรับเซิร์ฟเวอร์นั้นและนั่นคือรหัสที่ฉันใช้ในการเข้าสู่เซิร์ฟเวอร์ อันนั้นไม่ทำงานเมื่อฉันขอรหัสผ่าน sudo ของฉัน (ฉันได้ลองแล้วประมาณ 100 ครั้ง, capslock, numlock ฯลฯ ) แต่ความคิดทั้งหมดไม่สมเหตุสมผล! ฉันต้องการที่จะรู้ว่าฉันมีสิทธิ์ sudo แต่หามันฉันต้องการสิทธิ์ sudo?! ในการใช้งานsudo -lฉันต้องใช้รหัสผ่าน sudo หรือไม่ ดังนั้นฉันต้องรู้ทันถ้าฉันรูต!
Rasto

1
@drasto บิลกล่าวว่าsudoกำลังมองหาของคุณรหัสผ่านเข้าสู่ระบบ ดังนั้นหากคุณลองแล้วไม่สามารถใช้งานได้ sudo อาจถูกกำหนดค่าผิด ๆ อย่างน่ากลัวหรือคุณอยู่ในคุกบางประเภทที่ไม่สามารถมองเห็นหรืออ่านไฟล์ที่เหมาะสม ไม่ว่าด้วยวิธีใดคุณจะไม่มีผลต่อการอนุญาต sudo
Kevin

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

-1

คุณสามารถตรวจสอบว่าคุณอยู่ในกลุ่ม sudo โดยใช้คำสั่ง

groups

ในเชลล์สคริปต์คุณอาจต้องการใช้สิ่งนี้:

if groups | grep "\<sudo\>" &> /dev/null; then
   echo yes
else
   echo no
fi

1
กลุ่มอาจจะsudo, admin, wheelการเข้าถึงหรือสิ่งอื่นทั้งหมดและถึงแม้จะมีสมาชิกในกลุ่มผู้ใช้แต่ละคนอาจจะปฏิเสธ sudo ผ่านกฎที่เฉพาะเจาะจง (หรือวิธีอื่น ๆ )
muru

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