Intereting Posts
Можно ли конвертировать установку linux в формат .VDI или ISO? Два корневых аккаунта, что делать? Инкрементное резервное копирование с жесткими ссылками для нескольких папок Как включить графическое ускорение для SIS 771/671 на Zorin OS 8 lite (lubuntu 13.10) Linux iptables DNAT 53306 до 127.0.0.1 3306 Удаленная компиляция и запуск программы с использованием ssh и экрана Как удалить символы из столбца с помощью awk Я хочу использовать переменную, объявленную внутри сеанса SSH, для локального использования в сценарии оболочки Разработка системы Watchdog Alert для обнаружения пропущенных периодических электронных писем Команда dd 4M размер блока – кеш-байт Построение вывода скрипта bash после перенаправления stderr Достаточно установить параметр -g-prefix, чтобы изменить префикс ключа tmux В сценарии оболочки, Как передать переменную другое значение после выполнения одного задания? Как записать iptables с ядра 3.9.0? Как заставить «yum search» использовать локальные метаданные / кеш?

Добавлен каталог bin на мой путь, не может выполнять команды в нем с помощью команды sudo,

Я создал каталог bin в своей домашней папке, где я размещаю все мои скрипты. Затем в моем .bashrc я добавил следующее:

 export PATH=$PATH:/home/myusername/bin 

Поэтому я мог получить доступ к файлам, которые я разместил там, где угодно. Но некоторые скрипты должны выполняться как root. Поэтому я подумал, что мог бы символизировать мой .bashrc как root (как в /root/.bashrc указывает на /home/myusername/.bashrc, не знаю, является ли это умным), поэтому, когда мне нужно запустить скрипт как root Я могу просто сделать:

 sudo program_that_requires_root 

Но тогда я получаю:

 sudo: program_that_requires_root: command not found 

Если я вхожу в систему с правами администратора и выполняю программу, она работает нормально. Итак, каков правильный способ добиться того, что я хочу?

Вы должны убедиться, что эти две строки присутствуют в файле sudoers.

 Defaults env_reset Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$ 

Дополнительные сведения см. В этих URL:

sudo сбрасывает PATH среды PATH во встроенный или по умолчанию поставщик по умолчанию, в большинстве конфигураций. Таким образом, вы не сможете просто ввести sudo myscript .

Вы можете написать функцию обертки:

 sudo () { local cmd case $1 in -*) :;; # there are options, change nothing */*) :;; # explicit path, change nothing *) # a command name, look it up in our $PATH cmd=$(type -p -- "$1") if [[ -n $cmd ]]; then shift; set -- "$c" "$@"; fi;; esac command sudo "$@" } 

(Это для bash; измените type -P на type -p в ksh или zsh.)

По умолчанию sudo сбрасывает среду. Вы пытались добавить путь к корневому .bashrc? Или вызывать sudo с -E (который работает только в том случае, если setenv в sudoers установлен, или соответствующая команда имеет набор тегов SETENV).