ไม่พบคำสั่ง Bash Sudo


33

ฉันได้ตั้งค่า VM โดยใช้ turnkey linux redmine และฉันพยายามที่จะ SSH เข้าสู่เซิร์ฟเวอร์เพื่อติดตั้งบางรายการเพิ่มเติม

ดูเหมือนจะไม่รู้จักคำสั่ง sudo ทุกครั้งที่ฉันพยายาม sudo สิ่งที่ฉันได้รับข้อผิดพลาดว่า:

 -bash: sudo: command not found

ฉันอ่านที่อื่นเพื่อพิมพ์ 'whereis sudo' และผลลัพธ์คือ:

 sudo:

คำตอบ:


20

ดูเหมือนว่าจากhttp://www.turnkeylinux.org/redmineเช่น Redmine ซึ่งแตกต่างจาก Ubuntu ไม่ได้ใช้ sudo โดยค่าเริ่มต้น คุณใช้ชื่อผู้ใช้อะไรกับ SSH ถ้าเป็นrootแล้วคุณไม่จำเป็นต้องใช้sudoเป็นทุกอย่างที่คุณทำเมื่อ sshed ในระบบ Redmine rootกระทำตาม ถ้ามันเป็นอย่างอื่นเช่นadminนั้นคุณอาจจะลองใช้suคำสั่งที่จะได้รับเปลือกในการที่จะเรียกใช้คำสั่งเป็นrootroot


จะทำอย่างไรเมื่อสคริปต์มีคำสั่ง sudo เกิดขึ้นกับฉันด้วย mkusb ดีกว่าที่จะติดตั้ง sudo เพื่อความสะดวกในอนาคต
รักโกรเวอร์

40

อาจจะไม่ได้ติดตั้ง เปิดตัวจัดการแพ็คเกจของคุณและติดตั้งแพ็คเกจsudo


2
ไม่ได้ติดตั้ง! ขอบคุณ ฉันค่อนข้างใหม่สำหรับ Linux และเพิ่งสันนิษฐานว่ามันเป็นเรื่องของการติดตั้งทั้งหมด ฉันต้องการแพ็คเกจ sudo หรือ sudo-ldap ด้วยหรือไม่

2
คุณไม่ต้องการแพ็คเกจ sudo-ldap Sudo ทำงานได้ดีบนคอมพิวเตอร์ของฉันและฉันไม่ได้ติดตั้ง sudo-ldap
Azendale

6

เข้าสู่ระบบบัญชี root ของคุณก่อน แล้วก็

$ apt-get install sudo

เพิ่มผู้ใช้ที่มีอยู่ของคุณในกลุ่ม sudo

$ sudo adduser <user> sudo

จากนั้นคุณควรเข้าสู่ระบบในฐานะ<user>และsudoคำสั่งควรจะมี


5

ลองใช้เส้นทางแบบเต็ม

/usr/bin/sudo

หากคำสั่งนั้นใช้งานได้ให้รวม / usr / bin / ในตัวแปร env PATH ของคุณใน ~ / .bashrc

echo "export PATH="$PATH:/usr/bin"" >> ~/.bashrc

หวังว่าจะได้ผล ..


4
ไม่น่าจะเป็นปัญหาได้ /usr/binเกือบจะเป็นไปได้อย่างแน่นอนในเส้นทางเริ่มต้นของคุณ ปัญหาดังที่ระบุไว้โดยคำตอบและข้อคิดเห็นอื่น ๆ คือsudoคำสั่งนั้นไม่ได้ติดตั้งเลย
Keith Thompson

2

ข้อผิดพลาดเกิดขึ้นเนื่องจากไบนารีที่คุณพยายามโทรจากบรรทัดคำสั่งเป็นเพียงส่วนหนึ่งของตัวแปร PATH ของผู้ใช้ปัจจุบัน แต่ไม่ใช่ส่วนหนึ่งของ PATH ของผู้ใช้รูท

คุณสามารถตรวจสอบสิ่งนี้ได้โดยค้นหาเส้นทางของไบนารี่ที่คุณพยายามเข้าถึง ในกรณีของฉันฉันพยายามโทร "bettercap-ng" ดังนั้นฉันวิ่ง

$ which bettercap-ng

output: /home/user/work/bin/bettercap

ฉันตรวจสอบว่าตำแหน่งนี้เป็นส่วนหนึ่งของ PATH ของผู้ใช้รูทของฉันหรือไม่

$ sudo env | grep ^PATH

เอาท์พุท: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

ดังนั้น sudo หาเลขฐานสองที่ฉันพยายามโทรจาก commandline ไม่ได้ ดังนั้นจะส่งคืนคำสั่ง error ที่ไม่พบ

คุณสามารถสั่ง sudo เพื่อใช้ PATH ของผู้ใช้ปัจจุบันเมื่อเรียกเลขฐานสองดังต่อไปนี้

$ sudo -E env "PATH=$PATH" [command] [arguments]

ในความเป็นจริงเราสามารถสร้างนามแฝงได้จาก:

$ alias mysudo='sudo -E env "PATH=$PATH"'

นอกจากนี้ยังเป็นไปได้ที่จะตั้งชื่อนามแฝงว่า sudo แทน sudo ดั้งเดิม

โปรดดูวิดีโอนี้สำหรับการแก้ปัญหาทีละขั้นตอน

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