ชื่อผู้ใช้ไม่ได้อยู่ในไฟล์ sudoers เหตุการณ์นี้จะถูกรายงาน


85

ฉันใช้ Ubuntu 12.04 บนแล็ปท็อปของฉันโดยใช้ VMware Player ฉันไม่แน่ใจว่าทำไม แต่ฉันมีบัญชีชื่อ "บัญชีผู้ใช้" นอกเหนือจากบัญชีของฉันที่ฉันมักจะเข้าสู่ระบบเพื่อใช้ Ubuntu นั่นเป็นเพียงความเห็นด้านข้าง แต่โดยพื้นฐานแล้วทั้งหมดที่ฉันพยายามทำคือติดตั้งไลบรารี ncurses บน Ubuntu ฉันได้ลองติดตั้ง ncurses โดยใช้บรรทัดคำสั่งต่อไปนี้:

sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-dev

เมื่อฉันลองติดตั้ง ncurses สองครั้งโดยใช้คำสั่งด้านบนฉันได้รับพรอมต์ต่อไปนี้ในเทอร์มินัล:

[sudo] password for username

เมื่อฉันพิมพ์รหัสผ่านฉันได้รับข้อความต่อไปนี้:

username is not in the sudoers file. This incident will be reported.

จนถึงตอนนี้ฉันได้ลองเปิดใช้งานบัญชีผู้ใช้รูท ("Super User") โดยทำตามคำแนะนำในลิงค์นี้: https://help.ubuntu.com/community/RootSudo

ต่อไปนี้คือสิ่งที่ลิงก์แนะนำให้ทำ:

อนุญาตให้ผู้ใช้รายอื่นเรียกใช้ sudo พิมพ์ต่อไปนี้ในบรรทัดคำสั่ง:

ชื่อผู้ใช้ sudo adduser sudo

หรือ

ชื่อผู้ใช้ sudo adduser sudo

เข้าสู่ระบบในฐานะผู้ใช้อื่น พิมพ์ต่อไปนี้ในบรรทัดคำสั่ง:

ชื่อผู้ใช้ sudo -i -u

เปิดใช้งานบัญชีรูท พิมพ์ต่อไปนี้ในบรรทัดคำสั่ง:

sudo -i

หรือ

sudo passwd root

ฉันได้ลองบรรทัดคำสั่งด้านบนทั้งหมดแล้วหลังจากพิมพ์คำสั่งแต่ละคำสั่งฉันจะถามรหัสผ่านของฉัน หลังจากฉันป้อนรหัสผ่านฉันได้รับข้อความเดียวกับเมื่อฉันพยายามติดตั้ง ncurses:

fsolano is not in the sudoers file. This incident will be reported.

ฉันยังไม่มีความคิดเห็นที่เปลือยเปล่ากับฉันที่นี่ ... คำถาม fsolano เป็นผู้ใช้รายแรกที่คุณติดตั้ง Ubuntu หรือไม่ โดยปกติแล้วควรจะมีสิทธิ์ผู้ดูแลระบบหากคุณใช้งานฟังก์ชั่นผู้ดูแลระบบในแง่กราฟิกคุณสามารถใช้งานได้หรือไม่? IE ถ้าคุณเปิด GUi สำหรับการจัดการผู้ใช้และพยายามที่จะทำสิ่งที่ adminy ใช้งานได้? หรือบอกคุณว่าคุณไม่รูท

คำถามเดียวกันก็ถามที่นี่ด้วย? superuser.com/questions/866582/…
shubham

หากคุณเป็นผู้ใช้รูทด้วยรหัสผ่านคุณสามารถเข้าสู่ระบบรูทโดยใช้suและเพิ่ม urself ให้กับกลุ่ม sudo àdduser username sudoอื่นคุณจะต้องบูตด้วย live cd / usb และ chroot ไปยังระบบที่ติดตั้งไว้มันจะล็อกอินเข้าสู่รูทตามค่าเริ่มต้น ตั้งค่ารหัสผ่านรูทสำหรับกรณีต่อไปpasswdและเพิ่มตัวเองใน sudo จากนั้นรีบูตคุณจะต้องเพิ่มชื่อผู้ใช้ของคุณไปยัง sudo และคุณจะมีรหัสผ่านรูทในกรณีที่ sudo ยังไม่ทำงานคุณสามารถจัดการได้ ....
Jonah

คำตอบ:


57

เมื่อสิ่งนี้เกิดขึ้นกับฉันทั้งหมดฉันต้องทำเพื่อแก้ไขมันคือ:

ขั้นตอนที่ 1 เปิดหน้าต่างเทอร์มินัลCTRL+ ALT+ T บนระบบของฉัน (Debian KDE หลังจากตั้งค่าเป็นฮอตคีย์)

ขั้นตอนที่ 2 ป้อนรูทโดยใช้คำสั่ง su root

ขั้นตอนที่ 3 ใส่รหัสผ่านรูท

ขั้นตอน 4. ป้อนคำสั่งapt-get install sudo -yเพื่อติดตั้งsudo

ขั้นตอนที่ 5. เพิ่มผู้ใช้ไปยังไฟล์ sudoers โดยการadduser usernameใส่ชื่อผู้ใช้ของคุณแทนusername

ขั้นตอนที่ 6. ตั้งค่าการอนุญาตที่ถูกต้องสำหรับไฟล์ sudoers โดยการป้อนข้อมูล chmod 0440 /etc/sudoers

ขั้นตอนที่ 7 พิมพ์exitและกดEnterจนกว่าคุณจะปิดหน้าต่างเทอร์มินัล ปิดระบบของคุณอย่างสมบูรณ์และรีบูต

ขั้นตอนที่ 8 เปิดหน้าต่างเทอร์มินัลอื่น

ขั้นตอนที่ 9. ลองใช้คำสั่ง sudo เพื่อตรวจสอบว่าชื่อผู้ใช้ของคุณถูกเพิ่มไปยังไฟล์ sudoers อย่างถูกต้องหรือไม่ sudo echo "Hello World!"ผมใช้ หากชื่อผู้ใช้ของคุณได้รับการเพิ่มอย่างถูกต้องไปยังรายการ sudoers แล้วคุณจะได้รับHello World!เป็นการตอบสนองขั้ว!


15
-1: cd -จะไม่ไปที่ไดเรกทอรีบ้าน แต่ไปยังไดเรกทอรีอื่นล่าสุด sudo -จะไม่ถามรหัสผ่านผู้ใช้ของคุณ แต่สำหรับรหัสผ่านรูทของคุณ ไม่ได้แก้ไข/etc/sudoersด้วยตนเองใช้visudoสำหรับการที่ ระบบอูบุนตูทั่วไปไม่มีรหัสผ่านรูทเลย แต่พึ่งพา sudo อย่างสมบูรณ์
michas

@michas คุณไม่สามารถใช้ visudo โดยไม่ใช้ sudo ใน Debian viการแก้ปัญหาเป็นไปไม่ได้เพราะอ่านอย่างเดียว Gedit ทำงานในกรณีของฉัน
LéoLéopold Hertz 준영

ใน debian 8 คุณสามารถใช้ vi โดยไม่ต้อง sudo เป็น root หากต้องการเขียนไปยังไฟล์อ่านอย่างเดียวให้ใช้: wq!
Oracle

สิ่งนี้ใช้ได้กับฉันด้วยความช่วยเหลือที่ดีอย่างแน่นอน!
Arefe

ขอบคุณสำหรับคำตอบ. แต่ฉันไม่สามารถวิ่งได้su -
วิษณุ

42

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

https://askubuntu.com/questions/24006/how-do-i-reset-a-lost-administrative-password

หลังจากนั้นเข้าสู่ระบบในฐานะผู้ใช้ผู้ดูแลระบบและดำเนินการดังต่อไปนี้

sudo usermod -aG sudo,adm fsolano

ตอนนี้คุณสามารถเข้าสู่ระบบเป็น 'fsolano' และคุณควรจะสามารถเรียกใช้คำสั่ง sudo


1
ขออภัยฉันลืมที่จะพูดถึงว่าฉันได้แก้ไขปัญหานี้มานานแล้ว นี่เป็นวิธีแก้ไขปัญหาที่ฉันมีและอาจเป็นไปได้ว่าใครก็ตามอาจมี
fsolano94

3
adduser NAME sudoฉันยังคงได้รับข้อความหลังจากพิมพ์นี้เช่นเดียวกับ ฉันคิดว่ามี m ต้องเป็นอย่างอื่น ฉันใช้ Debian 7.8
Tomáš Zato

โซลูชันนี้ไม่เพียงพอใน Debian 8.5 ข้อเสนอของ ShrikantKhawale ที่มีการเพิ่มเติมเล็กน้อยนั้นถูกต้องที่นี่
LéoLéopold Hertz 준영

3
@masi เคล็ดลับดังกล่าวข้างต้นไม่ทำงานใน Debian 8.5 (อย่างน้อยที่นี่) แต่หลังจากที่คุณออกจากระบบและกลับมาอีกครั้ง
jcoppens

@jcoppens ถูกต้องใช้งานได้กับ Debian 8.6 ด้วยหลังจากออกจากระบบและเข้าสู่ระบบแล้ว
hello_earth

13

/etc/sudoersรายการไฟล์กำหนดค่าที่ได้รับอนุญาตให้เรียกใช้คำสั่งใดเป็นผู้ใช้

ในอูบุนตูไฟล์นี้มีบรรทัดที่อนุญาตให้ผู้ใช้ทั้งหมดของsudoกลุ่มรันคำสั่งในฐานะrootผู้ใช้

ในการตรวจสอบผู้ใช้ในกลุ่ม sudo getent group sudoที่คุณสามารถพิมพ์ idนอกจากนี้คุณยังสามารถตรวจสอบกลุ่มผู้ใช้ปัจจุบันของคุณโดยการพิมพ์

ผู้ใช้ปัจจุบันของคุณอาจไม่ได้อยู่ในกลุ่ม sudo ดังนั้นจึงไม่ได้รับอนุญาตให้ใช้sudoคำสั่ง

เข้าสู่ระบบในขณะที่บางคน sudo sudoเปิดการใช้งานของผู้ใช้ถ้าคุณต้องการที่จะทำงาน


นั่นเป็นเพียงสิ่งที่ ฉันจะเข้าสู่ระบบในฐานะผู้ดูแลระบบหรือผู้ใช้รูท แต่ฉันลืมรหัสผ่านเมื่อฉันติดตั้ง Ubuntu บนเครื่องของฉันเป็นครั้งแรก
fsolano94

sudo: x: 27: ผู้ใช้ (ฉันไม่แน่ใจว่า x หรือ 27 คืออะไร แต่ฉันมั่นใจว่าผู้ใช้คือบัญชีผู้ใช้ที่ฉันไม่รู้จัก / จำรหัสผ่านไปยัง)
fsolano94

@ fsolano94 บูตในสภาพแวดล้อมการกู้ภัยบางรูปแบบ (โดยตรงหรือบูตจากสื่อการติดตั้ง) และเปลี่ยนรหัสผ่านรูท หรือแก้ไข/etc/sudoersไฟล์ (ควรใช้มากกว่าvisudo(1))
vonbrand

6

ฉันมีปัญหาเดียวกันกับกาลีตลอดเวลาที่ฉันต้องการเพิ่มnewuserไปยังกลุ่ม sudo โดยการพิมพ์คำสั่งนี้:

usermod -aG sudo newuser

/etc/sudoersและการแก้ไขในส่วนที่เหมาะสมในการ อึทั้งหมด!

การแก้ไขของฉันสำหรับเรื่องไร้สาระนี้คือการคัดลอกบรรทัดสำหรับรูทด้านล่างและเปลี่ยนรูทเป็นผู้ใช้ใหม่:

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

newuser ALL=(ALL:ALL) ALL

ฉันจำวิธีปกติของ usermod ที่เคยทำงาน แต่มันเป็นข้อผิดพลาดในช่วงสองสามปีที่ผ่านมาหรือไม่? มันไร้สาระจริงๆ อย่างไรก็ตามถ้ามีคำตอบที่ดีกว่าแบ่งปันได้โปรด :)


ปัญหาเดียวกันใน debian ปกติ (9); การแก้ไขด้วยตนเอง/etc/sudoersเป็นการหลอกลวง
Zoe the transgirl

4

ทำสิ่งนี้เพื่อรีเซ็ตรหัสผ่านสำหรับผู้ใช้ผู้ดูแลระบบของคุณ

https://help.ubuntu.com/community/LostPassword

จากนั้นคุณจะสามารถให้สิทธิ์ sudo แก่ผู้ใช้ปกติของคุณด้วย

sudo adduser username sudo

ตามที่คุณโพสต์ในคำถามเดิมของคุณ

โดยวิธีการ: ทำไมคุณติดตั้ง ncurses? คุณกำลังรวบรวมอะไร


ฉันกำลังเขียนโปรแกรม Tetris ใน C และกำลังใช้ curses เป็น cross platform สำหรับการเชื่อมต่อผู้ใช้แบบกราฟิก และฉันจะไปตามลิงก์
fsolano94

1

คุณยังสามารถเพิ่มผู้ใช้ในกลุ่ม sudo สำหรับการเข้าถึงทั้งหมดได้โดย:

  1. ไปที่ผู้ใช้รูทไดเร็กทอรีของคุณโดยsudo su(Ubuntu 16.04 LTS)
  2. จากนั้นป้อนรหัสผ่านผู้ใช้ปัจจุบันของคุณ
  3. พิมพ์sudo adduser <username> sudoโดยชื่อผู้ใช้เป็นชื่อของผู้ใช้ที่คุณต้องการเพิ่มในรายการ sudoers
  4. สำหรับการตรวจสอบว่าผู้ใช้ที่คุณต้องการถูกเพิ่มสำเร็จหรือไม่getent group sudoซึ่งจะแสดงรายการผู้ใช้ sudo

สวัสดียินดีต้อนรับสู่ Unix SE และขอแสดงความยินดีกับคำตอบแรกที่ดี ฉันแก้ไขการจัดรูปแบบของคุณเล็กน้อยคุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับสิ่งนั้นได้โดยคลิกที่ "ความช่วยเหลือด้านไวยากรณ์" เมื่อเขียนโพสต์
GnP

1
นี่ไม่ใช่คำตอบที่ดี (1) คำถามระบุsudoว่าไม่ได้ผลสำหรับผู้ใช้ (2) คำตอบที่sudo adduser <username> sudoได้รับแล้ว
G-Man

0

หากคุณมีผู้ใช้ root / admin คนอื่นที่ไม่ใช่ 'fsolano' นั่นไม่ได้อยู่ในไฟล์ sudoers เหตุการณ์นี้จะถูกรายงาน:

check sudo enabled users (groups)
# getent group sudo 
sudo:x:27:xyz,abc 

เนื่องจากผู้ใช้ 'fsolano' ถูกเปลี่ยนเป็นผู้ใช้มาตรฐานและหากคุณมีผู้ใช้รูทที่มีสิทธิพิเศษอื่น ๆ ให้ล็อกอินผ่านรูทหนึ่งและเปลี่ยน 'fsolano' เป็นผู้ดูแลระบบโดยใช้ "บัญชีผู้ใช้"


-1

วิธีที่ง่ายที่สุดในการเพิ่มผู้ใช้ไปยังsudoersไฟล์คือการใช้คำสั่งตะโกนในฐานะผู้ใช้ที่มีสิทธิ์ดำเนินการgpasswd:

sudo gpasswd -a username sudo

สิ่งนี้ไม่ทำงานใน Debian 8.5
LéoLéopold Hertz 준영

-1

1. คุณสามารถตรวจสอบว่าคุณเป็นส่วนหนึ่งของกลุ่ม sudo หรือไม่โดยใช้คำสั่งด้านล่าง

groups username ===> it will lists the groups for which he belongs too

เราสามารถตรวจสอบโดยสคริปต์ด้านล่างเช่นกัน

h=`groups username| awk -F ":" '{print $2}'| grep -io 'sudo'`
if [[ $h == "sudo" ]]
then
echo "user praveen is part of group sudo"
else
echo "Need to add user to group sudo"
echo "Swictch to root and add user"
fi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.