วิธีรันคำสั่ง


0

ฉันต้องวิ่ง command ภายใต้ userx ใช้ sudo ที่ปกติไม่สามารถใช้ได้ใน PATH. Command สามารถใช้ได้ใน bash ภายใต้ userx เพราะว่า HOME/.bashrc.

เพียงแค่ถ้าฉันทำงานในทุบตีภายใต้ userx

echo $PATH
/opt/sw-python/extra/pythonbrew/bin:/opt/sw-python/extra/pythonbrew/pythons/Python-2.7.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

ฉันได้รับสิทธิ PATH และ command สามารถใช้ได้.

แต่ถ้าฉันวิ่งด้วย sudo:

sudo -u userx echo $PATH
/home/curuser/.pythonbrew/bin:/home/curuser/.pythonbrew/pythons/Python-2.7.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

sudo -H -u userx echo $PATH
/home/curuser/.pythonbrew/bin:/home/curuser/.pythonbrew/pythons/Python-2.7.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

sudo su python -c 'echo $PATH'
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

sudo su python -c 'bash -c "echo $PATH"'
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

ตัวแปร PATH ไม่ได้ถูกตั้งค่าโดยใช้ userx 's .bashrc.

วิธีการทำงานด้วย sudo เพื่อให้ PATH จะเป็นปกติ PATH ภายใต้ userx?

bash  sudo 

คำตอบ:


2

เรียกใช้ sudo ด้วย -i เพื่อให้มันเริ่มเปลือกโต้ตอบใหม่ (และโหลดการกำหนดค่าผู้ใช้ทั้งหมด)

  -i [command]
               The -i (simulate initial login) option runs the shell specified by the password database entry of the target user as a
               login shell.  This means that login-specific resource files such as .profile or .login will be read by the shell.  If
               a command is specified, it is passed to the shell for execution via the shell's -c option.  If no command is
               specified, an interactive shell is executed.  sudo attempts to change to that user's home directory before running the
               shell.  The security policy shall initialize the environment to a minimal set of variables, similar to what is present
               when a user logs in.  The Command Environment section in the sudoers(5) manual documents how the -i option affects the
               environment in which a command is run when the sudoers policy is in use.

อ๊ะฉันอ่านด้วยตัวเอง แต่ไม่ได้ตระหนักว่านี่คือสิ่งที่ฉันต้องการ นอกจากนี้ยังเป็นไปได้ที่จะใช้ su usrex -l -c "command"

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