โปรไฟล์ bash ใช้ได้กับผู้ใช้ แต่ไม่ใช่ sudo


9

ฉันได้แก้ไข. profile เพื่อรวมโฟลเดอร์หากเสียบแฟลชไดรฟ์ไว้เมื่อเรียกใช้คำสั่งในฐานะผู้ใช้มันใช้งานได้ดี แต่บอกฉันว่า scrip ต้องทำงานโดย sudo (นี่คือสิ่งที่ฉันต้องการ) อย่างไรก็ตามเมื่อฉันพยายามที่จะเรียกใช้ด้วย sudo ฉันได้รับ "คำสั่งไม่พบ"

ฉันมี symlink (แฟลช) ในโฟลเดอร์ / var / www ของฉันชี้ไปที่ / media / flash drive (ไม่ต้องสนใจการตั้งค่านี้เนื่องจากเป็นเพียงสำหรับ dev)

นี่คือ. โปรไฟล์ผู้ใช้ของฉัน:

# set PATH so it includes flash scripts
if [ -d "/var/www/flash/scripts" ] ; then
    PATH="/var/www/flash/scripts:$PATH"
fi

เมื่อพยายามที่จะทำงานเป็น sudo ฉันได้รับ:

sudo: script: command not found    

ความคิดใด ๆ

คำตอบ:


3

เมื่อคุณเรียกใช้สคริปต์ในขณะที่sudoคุณพยายามเข้าถึงรูต ดังนั้นคุณ$HOME/.profileจะไม่สามารถเข้าถึงได้แทน/root/.profileจะถูกเข้าถึง

เพื่อให้การเปลี่ยนแปลงสิ่งที่เคยทำในการ$HOME/.profile ในการสร้าง/root/.profile /root/.profileใช้คำสั่งต่อไปนี้

sudo su
cd /root
touch .profile

หลังจากทำการเปลี่ยนแปลงให้ลองเรียกใช้สคริปต์

หรือแก้ไข$HOME/.bashrcและเพิ่มบรรทัดต่อไปนี้

alias sudo='sudo env PATH=$PATH $@'

หวังว่านี่จะช่วยได้


ฉันลอง "alias sudo = 'sudo env PATH = $ PATH $ @'" แต่ฉันได้รับ "env: wp: การอนุญาตถูกปฏิเสธ"
user564448

ขออภัย "wp" เป็นสคริปต์
user564448

ลองขั้นตอนอื่นที่ฉันพูดถึง
devav2

1
อ่านที่นี่คุณควรใช้sudo su -p
devav2

2

คุณสามารถรักษามูลค่าของเมื่อใช้$PATH sudoใช้visudoเพื่อเพิ่มลง$PATHในรายการตัวแปรที่ต้องการเก็บไว้ บรรทัดเช่นต่อไปนี้/etc/sudoersควรทำเคล็ดลับ:

Defaults env_keep += "PATH"

1

นั่นคือพฤติกรรมของ sudo ในอูบุนตู ..

ตัวอย่างเช่นรันคำสั่งต่อไปนี้

echo 'echo $PATH' | sh

และกว่านี้

echo 'echo $PATH' | sudo sh 

คุณเห็นผลลัพธ์ที่แตกต่าง! เพื่อหลีกเลี่ยงเส้นทางที่แตกต่างกันให้ใส่สิ่งต่อไปนี้ใน ~ / .bashrc ของคุณ

alias sudo='sudo env PATH=$PATH'

หลังจากใส่ alias sudo = 'sudo env PATH = $ PATH' ลงใน. bashrc ของฉันฉันได้รับ "env: wp: การอนุญาตถูกปฏิเสธ"
user564448

-1

คุณยังสามารถย้ายไฟล์ของคุณในไดเรกทอรีที่ใช้ sudoers:

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