ฉันจะส่งนามแฝงไปยัง sudo ได้อย่างไร


38

ฉันได้พยายามวางนามแฝงของฉันใน~/.bash_profile, ~/.bashrc, และ/etc/profile/etc/bashrc

ฉันยังคงไม่สามารถดำเนินการดังต่อไปนี้:

alias zf2="php public/index.php"

จากนั้นดำเนินการ:

sudo zf2 orm:info

ปัญหาน่าจะเป็นที่ฉันไม่สามารถระบุนามแฝงเป็นคำสั่งโดยใช้ visudo-- ซึ่งทำให้เกิดข้อผิดพลาดทางไวยากรณ์

ดังนั้นฉันไม่สามารถโทร:

sudo zf2 orm:info

อย่างไรก็ตามฉันสามารถสร้างสคริปต์ที่ / usr / share / สคริปต์ / zf2 ซึ่งมี:

#!/bin/bash

alias zf2="php public/index.php"
zf2 $1

และเพิ่มสคริปต์นี้เป็นคำสั่งใน visudo เมื่อสคริปต์นี้อยู่ในเส้นทางของผู้ใช้ฉันสามารถดำเนินการได้

zf2 orm:info

ฉันมีนามแฝงที่แตกต่างกันเช่นzf2ฉันต้องเปิดเผยให้ผู้ใช้เห็น ฉันต้องการรักษานามแฝงแทนชุดสคริปต์


1
น่าเสียดายที่ฉันต้องการใช้นามแฝงใน visudo และฉันไม่สามารถ
Michael Niño

2
ที่เป็นไปไม่ได้ นามแฝงได้รับการจัดการโดยเชลล์ (ใน case bash ของคุณ) และขยายก่อนที่จะถูกส่งไปยังแอปพลิเคชัน sudoตัวเองไม่รู้อะไรเกี่ยวกับนามแฝง
Steven

2
เนื่องจาก @Steven ถูกต้องทางเทคนิคคุณควรชี้แจงว่าคุณต้องการขยายชื่อแทนก่อนที่จะsudoส่งผ่านบรรทัดหรือไม่หรือต้องการขยายชื่อแทนในสภาพแวดล้อมที่ยกระดับ อวดรู้ไม่ได้เป็นเพียงวิธีหนึ่งในการดึงดูดสายตา (ว้าว แต่ประโยคสุดท้ายนั้นไม่ได้ดูเพียว ๆ เลย)
can-ned_food


1
ทดลองใช้กับsudo -E
เดนิสเดอเบอร์นาดี

คำตอบ:


66

กระแทกแดกดันทางออกคือการโทรsudoจากนามแฝง

alias sd="sudo "

หมายเหตุ: แม้ว่าจะไม่แนะนำก็ตามคุณสามารถตั้งชื่อนามแฝงได้sudo:alias sudo="sudo "

คู่มืออ้างอิง Bash (นามแฝง)

หากอักขระตัวสุดท้ายของค่านามแฝงเป็นค่าว่างคำว่าคำสั่งถัดไปที่ตามหลังนามแฝงจะถูกตรวจสอบด้วยสำหรับการขยายสมนาม


7
ฉันอาจจะเห็นเหตุผลว่าทำไมบางคนถึงไม่อยากให้สิ่งนี้เป็นค่าเริ่มต้นสำหรับระบบใด ๆ ความสะดวกสบายและความคาดหวังตามที่ถามเมื่อเทียบกับการเพิ่มความระมัดระวังด้วยสิทธิ์ระดับสูง
Pysis

5
alias sd="sudo "maychance?
เนท

หลังจากตรวจสอบชื่อแทนของฉันฉันสังเกตเห็นว่าฉันไม่ได้มีalias sudo="sudo "ในสภาพแวดล้อมของผู้ใช้ปลายทาง นี่คือคำตอบ
Michael Niño
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.