hồ sơ bash hoạt động cho người dùng nhưng không sudo


9

Tôi đã sửa đổi .profile của mình để bao gồm một thư mục nếu ổ đĩa flash được cắm. Khi chạy lệnh với tư cách là người dùng, nó hoạt động tốt nhưng cho tôi biết đoạn mã phải được chạy bởi sudo (đây là điều tôi muốn). Tuy nhiên, khi tôi cố chạy nó với sudo, tôi nhận được "lệnh không tìm thấy"

Tôi có một symlink (flash) trong thư mục / var / www của tôi trỏ đến ổ đĩa / media / flash của tôi. (không bao giờ thiết lập cài đặt này vì chỉ dành cho nhà phát triển)

đây là .profile của người dùng của tôi:

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

Khi cố chạy như sudo tôi nhận được:

sudo: script: command not found    

có ý kiến ​​gì không

Câu trả lời:


3

Khi bạn chạy tập lệnh như sudobạn đang cố gắng truy cập root. Vì vậy, bạn $HOME/.profilesẽ không được truy cập thay thế /root/.profilesẽ được truy cập.

Vì vậy, hãy thay đổi những gì đã bao giờ bạn đã làm trong $HOME/.profileđể /root/.profile. Để tạo /root/.profile. Sử dụng các lệnh sau.

sudo su
cd /root
touch .profile

Sau khi thực hiện các thay đổi hãy thử chạy tập lệnh.

hoặc chỉnh sửa $HOME/.bashrcvà thêm dòng sau

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

Hi vọng điêu nay co ich.


Tôi đã thử "alias sudo = 'sudo env PATH = $ PATH $ @'" nhưng tôi nhận được "env: wp: Quyền bị từ chối"
user564448

xin lỗi, "wp" là tập lệnh
user564448

Hãy thử bước khác tôi đã đề cập.
devav2

1
Đọc nó ở đây bạn nên sử dụngsudo su -p
devav2

2

Bạn có thể bảo tồn giá trị $PATHkhi sử dụng sudo. Sử dụng visudođể thêm $PATHvào danh sách các biến cần giữ. Một dòng như sau đây /etc/sudoersnên thực hiện thủ thuật:

Defaults env_keep += "PATH"

1

đó là hành vi của sudo trong Ubuntu ..

ví dụ chạy lệnh sau

echo 'echo $PATH' | sh

và hơn cái này

echo 'echo $PATH' | sudo sh 

bạn thấy đầu ra là khác nhau! để tránh các đường dẫn khác nhau, hãy đặt các mục sau vào ~ / .bashrc của bạn

alias sudo='sudo env PATH=$PATH'

Sau khi đặt bí danh sudo = 'sudo env PATH = $ PATH' vào .bashrc của tôi, tôi nhận được "env: wp: Quyền bị từ chối"
user564448

-1

Bạn cũng có thể di chuyển tệp của mình trong thư mục được sử dụng sudoers:

    sudo mv $HOME/bash/script.sh /usr/sbin/ 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.