Почему sudo не добавляет root PATH с Ubuntu 12.04?

У меня были такие вещи, как раньше. Я честно не уверен, что это просто проблема с тем, как хранятся команды или проблема с какой-либо ограниченной средой, с которой эти команды запускаются.

В любом случае есть два варианта, которые оба работали для меня :

Напишите небольшой скрипт bash. Это может быть ваша команда с строкой #!/bin/bash наверху (я ее сломал, чтобы читать лучше):
#!/bin/bash

DEV=$(xinput list | grep 'Razer' | grep -o \=[0-9]* | grep -o [0-9]*$)
/usr/bin/xinput set-button-map $DEV 3 2 1 4 5 6 7 8 1 10 11 12 13
Затем просто сохраните это где-то вроде ~/.mousescript и вызовите bash ~/.mousescript в качестве вашего запуска команда. Или просто заверните свою команду в bash:
bash -c "/usr/bin/xinput set-button-map `xinput list | grep 'Razer' | grep -o \=[0-9]* | grep -o [0-9]*$` 3 2 1 4 5 6 7 8 1 10 11 12 13"
4
задан 7 June 2012 в 23:08

15 ответов

Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH также соответствующим Принципу наименьшего удивления .

Предположим, вы запустили программу под названием foo, но убедитесь, что вам действительно нужно запустить ее как root. Итак, вы запустите sudo foo. Было бы плохо, если программа, выполняемая с помощью sudo foo, отличается от программы, выполняемой foo, что произойдет, если в root PATH есть другой foo. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo делает то же самое, что и то, что вы ставите после него, кроме как root.

Вот что произойдет, если sudo добавлено root PATH к вашему PATH. Но предположим, что sudo добавил путь root к вашему PATH. Если это было поведение sudo, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar) при моделировании исходной root логической оболочки (sudo -i), вы также можете запустить ее с sudo bar. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root) пути может быть другой bar.

Вместо поведения sudo, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH изменился. Если вы добавите /sbin, /usr/sbin и /usr/local/sbin к вашему PATH, проблема будет решена. Если вы не хотите sbin в вашем PATH при запуске программ как root. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)

4
ответ дан 25 July 2018 в 18:38

Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH также соответствующим Принципу наименьшего удивления .

Предположим, вы запустили программу под названием foo, но убедитесь, что вам действительно нужно запустить ее как root. Итак, вы запустите sudo foo. Было бы плохо, если программа, выполняемая с помощью sudo foo, отличается от программы, выполняемой foo, что произойдет, если в root PATH есть другой foo. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo делает то же самое, что и то, что вы ставите после него, кроме как root.

Вот что произойдет, если sudo добавлено root PATH к вашему PATH. Но предположим, что sudo добавил путь root к вашему PATH. Если это было поведение sudo, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar) при моделировании исходной root логической оболочки (sudo -i), вы также можете запустить ее с sudo bar. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root) пути может быть другой bar.

Вместо поведения sudo, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH изменился. Если вы добавите /sbin, /usr/sbin и /usr/local/sbin к вашему PATH, проблема будет решена. Если вы не хотите sbin в вашем PATH при запуске программ как root. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)

4
ответ дан 2 August 2018 в 00:47

Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH также соответствующим Принципу наименьшего удивления .

Предположим, вы запустили программу под названием foo, но убедитесь, что вам действительно нужно запустить ее как root. Итак, вы запустите sudo foo. Было бы плохо, если программа, выполняемая с помощью sudo foo, отличается от программы, выполняемой foo, что произойдет, если в root PATH есть другой foo. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo делает то же самое, что и то, что вы ставите после него, кроме как root.

Вот что произойдет, если sudo добавлено root PATH к вашему PATH. Но предположим, что sudo добавил путь root к вашему PATH. Если это было поведение sudo, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar) при моделировании исходной root логической оболочки (sudo -i), вы также можете запустить ее с sudo bar. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root) пути может быть другой bar.

Вместо поведения sudo, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH изменился. Если вы добавите /sbin, /usr/sbin и /usr/local/sbin к вашему PATH, проблема будет решена. Если вы не хотите sbin в вашем PATH при запуске программ как root. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)

4
ответ дан 4 August 2018 в 16:18

Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH также соответствующим Принципу наименьшего удивления .

Предположим, вы запустили программу под названием foo, но убедитесь, что вам действительно нужно запустить ее как root. Итак, вы запустите sudo foo. Было бы плохо, если программа, выполняемая с помощью sudo foo, отличается от программы, выполняемой foo, что произойдет, если в root PATH есть другой foo. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo делает то же самое, что и то, что вы ставите после него, кроме как root.

Вот что произойдет, если sudo добавлено root PATH к вашему PATH. Но предположим, что sudo добавил путь root к вашему PATH. Если это было поведение sudo, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar) при моделировании исходной root логической оболочки (sudo -i), вы также можете запустить ее с sudo bar. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root) пути может быть другой bar.

Вместо поведения sudo, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH изменился. Если вы добавите /sbin, /usr/sbin и /usr/local/sbin к вашему PATH, проблема будет решена. Если вы не хотите sbin в вашем PATH при запуске программ как root. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)

4
ответ дан 6 August 2018 в 00:56

Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH также соответствующим Принципу наименьшего удивления .

Предположим, вы запустили программу под названием foo, но убедитесь, что вам действительно нужно запустить ее как root. Итак, вы запустите sudo foo. Было бы плохо, если программа, выполняемая с помощью sudo foo, отличается от программы, выполняемой foo, что произойдет, если в root PATH есть другой foo. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo делает то же самое, что и то, что вы ставите после него, кроме как root.

Вот что произойдет, если sudo добавлено root PATH к вашему PATH. Но предположим, что sudo добавил путь root к вашему PATH. Если это было поведение sudo, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar) при моделировании исходной root логической оболочки (sudo -i), вы также можете запустить ее с sudo bar. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root) пути может быть другой bar.

Вместо поведения sudo, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH изменился. Если вы добавите /sbin, /usr/sbin и /usr/local/sbin к вашему PATH, проблема будет решена. Если вы не хотите sbin в вашем PATH при запуске программ как root. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)

4
ответ дан 7 August 2018 в 18:22

Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH также соответствующим Принципу наименьшего удивления .

Предположим, вы запустили программу под названием foo, но убедитесь, что вам действительно нужно запустить ее как root. Итак, вы запустите sudo foo. Было бы плохо, если программа, выполняемая с помощью sudo foo, отличается от программы, выполняемой foo, что произойдет, если в root PATH есть другой foo. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo делает то же самое, что и то, что вы ставите после него, кроме как root.

Вот что произойдет, если sudo добавлено root PATH к вашему PATH. Но предположим, что sudo добавил путь root к вашему PATH. Если это было поведение sudo, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar) при моделировании исходной root логической оболочки (sudo -i), вы также можете запустить ее с sudo bar. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root) пути может быть другой bar.

Вместо поведения sudo, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH изменился. Если вы добавите /sbin, /usr/sbin и /usr/local/sbin к вашему PATH, проблема будет решена. Если вы не хотите sbin в вашем PATH при запуске программ как root. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)

4
ответ дан 10 August 2018 в 07:05

Помимо соображений безопасности (поскольку Anders имеет , упомянутый в ), сохраняя исходный пользовательский PATH также соответствующим Принципу наименьшего удивления .

Предположим, вы запустили программу под названием foo, но убедитесь, что вам действительно нужно запустить ее как root. Итак, вы запустите sudo foo. Было бы плохо, если программа, выполняемая с помощью sudo foo, отличается от программы, выполняемой foo, что произойдет, если в root PATH есть другой foo. Это будет принципиально нарушать ваши ожидания и общее предположение, что sudo делает то же самое, что и то, что вы ставите после него, кроме как root.

Вот что произойдет, если sudo добавлено root PATH к вашему PATH. Но предположим, что sudo добавил путь root к вашему PATH. Если это было поведение sudo, то вы, вероятно, предположили бы, что если вы можете запустить программу (назовите ее bar) при моделировании исходной root логической оболочки (sudo -i), вы также можете запустить ее с sudo bar. Но это предположение было бы неправильным, потому что в вашем собственном (т. Е. Не root) пути может быть другой bar.

Вместо поведения sudo, изменяющегося с одного Ubuntu релиз в другой, что, вероятно, произошло, что ваш PATH изменился. Если вы добавите /sbin, /usr/sbin и /usr/local/sbin к вашему PATH, проблема будет решена. Если вы не хотите sbin в вашем PATH при запуске программ как root. В этом случае я рекомендую опубликовать отдельный вопрос об этом (хотя один метод для достижения этого намечен в ответе Андерса .)

4
ответ дан 15 August 2018 в 19:04
  • 1
    Задав этот вопрос, я задавался вопросом, хочу ли я его на самом деле. Вы выдвинули четкие аргументы в пользу того, что не делаете. Я нахожусь на грани установки версии для песочницы 11.04, чтобы доказать себе, что это не всегда так. Только для записи, когда я сделал обновление, я убедился, что следующие файлы не были изменены: /etc/sudoers /etc/profile /etc/bash.bashrc. Я также убедился, что для пользователя или пользователя root нет файлов пользователя .profile и .bashrc. Я не вижу логической причины для того, чтобы это изменилось, и я начинаю сомневаться в своей памяти. – couling 8 June 2012 в 03:08
  • 2
    Принимая этот ответ, потому что, независимо от того, к чему я привык, добавление /sbin/ и /usr/sbin в мой собственный путь (я чувствую) - правильный способ исправить это. – couling 8 June 2012 в 03:13

Вы заглянули в страницу руководства для sudo? В разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ говорится о том, как sudo использует переменную PATH.

Вы также хотите посмотреть man-страницу для sudo как PATH можно изменить там с помощью secure_path. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/.

Предлагается внести изменения в конфигурацию sudo, создав файлы в /etc/sudoers.d/, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers, которые могут возникнуть при обновлении sudo до новой версии. Вы все равно должны использовать команду , измененную там , для создания и редактирования файлов в /etc/sudoers.d/.

5
ответ дан 25 May 2018 в 10:34
  • 1
    Это очень странно, что я никогда раньше этого не делал. Документация указывает на то, что это правильное действие. Я не могу найти ничего существенного, которое изменилось в моем файле sudoers (при проверке на резервную копию). Я буду использовать secure_path для решения проблемы. – couling 7 June 2012 в 23:37

Вы просмотрели man-страницу для sudo ? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo использует переменную PATH.

Вы также хотите посмотреть /etc/sudoers как PATH может быть изменен там с secure_path. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/.

Предлагается внести изменения в конфигурацию sudo, создав файлы в /etc/sudoers.d/, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers, которые могут возникнуть при обновлении sudo до новой версии. Вы должны использовать команду visudo для создания и редактирования файлов в /etc/sudoers.d/.

5
ответ дан 25 July 2018 в 18:38

Вы просмотрели man-страницу для sudo ? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo использует переменную PATH.

Вы также хотите посмотреть /etc/sudoers как PATH может быть изменен там с secure_path. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/.

Предлагается внести изменения в конфигурацию sudo, создав файлы в /etc/sudoers.d/, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers, которые могут возникнуть при обновлении sudo до новой версии. Вы должны использовать команду visudo для создания и редактирования файлов в /etc/sudoers.d/.

5
ответ дан 31 July 2018 в 12:45

Вы просмотрели man-страницу для sudo ? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo использует переменную PATH.

Вы также хотите посмотреть /etc/sudoers как PATH может быть изменен там с secure_path. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/.

Предлагается внести изменения в конфигурацию sudo, создав файлы в /etc/sudoers.d/, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers, которые могут возникнуть при обновлении sudo до новой версии. Вы должны использовать команду visudo для создания и редактирования файлов в /etc/sudoers.d/.

5
ответ дан 2 August 2018 в 00:47

Вы просмотрели man-страницу для sudo ? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo использует переменную PATH.

Вы также хотите посмотреть /etc/sudoers как PATH может быть изменен там с secure_path. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/.

Предлагается внести изменения в конфигурацию sudo, создав файлы в /etc/sudoers.d/, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers, которые могут возникнуть при обновлении sudo до новой версии. Вы должны использовать команду visudo для создания и редактирования файлов в /etc/sudoers.d/.

5
ответ дан 4 August 2018 в 16:18

Вы просмотрели man-страницу для sudo ? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo использует переменную PATH.

Вы также хотите посмотреть /etc/sudoers как PATH может быть изменен там с secure_path. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/.

Предлагается внести изменения в конфигурацию sudo, создав файлы в /etc/sudoers.d/, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers, которые могут возникнуть при обновлении sudo до новой версии. Вы должны использовать команду visudo для создания и редактирования файлов в /etc/sudoers.d/.

5
ответ дан 6 August 2018 в 00:56

Вы просмотрели man-страницу для sudo ? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo использует переменную PATH.

Вы также хотите посмотреть /etc/sudoers как PATH может быть изменен там с secure_path. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/.

Предлагается внести изменения в конфигурацию sudo, создав файлы в /etc/sudoers.d/, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers, которые могут возникнуть при обновлении sudo до новой версии. Вы должны использовать команду visudo для создания и редактирования файлов в /etc/sudoers.d/.

5
ответ дан 10 August 2018 в 07:05

Вы просмотрели man-страницу для sudo ? В в разделе ПРИМЕЧАНИЯ БЕЗОПАСНОСТИ они говорят о том, как sudo использует переменную PATH.

Вы также хотите посмотреть /etc/sudoers как PATH может быть изменен там с secure_path. Настройки также могут быть выполнены с помощью файлов в каталоге /etc/sudoers.d/.

Предлагается внести изменения в конфигурацию sudo, создав файлы в /etc/sudoers.d/, потому что тогда ваши изменения останутся независимыми от изменений в /etc/sudoers, которые могут возникнуть при обновлении sudo до новой версии. Вы должны использовать команду visudo для создания и редактирования файлов в /etc/sudoers.d/.

5
ответ дан 15 August 2018 в 19:04
  • 1
    Это очень странно, что я никогда раньше этого не делал. Документация указывает на то, что это правильное действие. Я не могу найти ничего существенного, которое изменилось в моем файле sudoers (при проверке на резервную копию). Я буду использовать secure_path для решения проблемы. – couling 7 June 2012 в 23:37

Другие вопросы по тегам:

Похожие вопросы: