เมื่อฉันเรียกใช้สิ่งต่อไปนี้มันได้ผล
sudo -u apache 'whoami'
แต่เมื่อฉันเรียกใช้มันจะไม่พบคำสั่ง
sudo -u apache 'ls -al ~/.ssh'
ฉันจะแก้ไขได้อย่างไร
เมื่อฉันเรียกใช้สิ่งต่อไปนี้มันได้ผล
sudo -u apache 'whoami'
แต่เมื่อฉันเรียกใช้มันจะไม่พบคำสั่ง
sudo -u apache 'ls -al ~/.ssh'
ฉันจะแก้ไขได้อย่างไร
คำตอบ:
sudo
เห็นls -al ~/.ssh
สตริงทั้งหมดเป็นหนึ่งอาร์กิวเมนต์และเรียกใช้เป็นหนึ่งราวกับว่าapache
ผู้ใช้เรียกใช้
'ls -al ~/.ssh'
และนี่ใช้ไม่ได้เพราะไม่มีเครื่องมือชื่อตัวอักษรls -al ~/.ssh
โดยรวม คำสั่งของคุณควรเป็นเหมือน
sudo -u apache ls -al ~/.ssh
หมายเหตุสิ่งนี้จะขยาย~
ก่อนที่sudo
จะเริ่มในบริบทของผู้ใช้จริงของคุณ ในทางกลับกัน:
sudo -u apache ls -al ~apache/.ssh
อาจเป็นสิ่งที่คุณต้องการ