Как изменить общесистемную среду выполнения Java по умолчанию без "sudo"?

Извините за мой плохой английский, но я действительно стараюсь быть лучше. Хорошо. Я создал новую команду / псевдоним (changejava) в Ubuntu 12.04, и мне нужно пропускать "пароль sudo" только тогда, когда я пишу "$changejava". Если я напишу "$ changejava" с помощью терминала, Ubuntu покажет мне, что я могу сделать. Мне просто нужно нажать 0, 1 или 2. Но если я нажму что-нибудь, терминал говорит:

"update-alternatives: to use /usr/lib/jvm/java-6-sun/jre/bin/java to provide /usr/bin/java (java). update-alternatives: error: Could not create file '/var/lib/dpkg/alternatives/java.dpkg-tmp': Denied. "

Если я попробую "$sudo changejava", у меня будет: "Введите пароль jessegaspar", и произойдет волшебство. Без "sudo" не бывает. Я попытался отредактировать /etc/sudoers с помощью:

%sudo ALL=NOPASSWD: ALL

... Однако все пользователи будут иметь доступ к общему разрешению "sudo".:/:/

Благодарю.

2 ответа

Во-первых, я хочу повторить, что вам не нужно изменять общесистемную среду исполнения Java по умолчанию, чтобы запускать программу с использованием среды исполнения Java не по умолчанию.

Например, Eclipse и NetBeans имеют файлы конфигурации, в которых вы можете указать, какую среду выполнения Java следует использовать.

Также типичным для приложений Java является соблюдение $JAVA_HOME переменная окружения. Так что в оболочке, просто запустить JAVA_HOME=/usr/lib/jvm/java-6-sun/ foo а также JAVA_HOME=/usr/lib/jvm/java-7-oracle/ bar для приложений foo и bar. Вы даже можете поместить это в скрипт, чтобы вам не приходилось вводить его каждый раз.


Поскольку вы сосредоточены на изменении общесистемной среды исполнения Java по умолчанию, документацию сообщества sudo по sudo можно прочитать только по адресу: https://help.ubuntu.com/community/Sudoers

Manpage (то есть man sudoers) другое: http://www.sudo.ws/sudo/sudoers.man.html

Вы правы, утверждая, что не хотите %sudo ALL=NOPASSWD: ALL в вашем файле sudoers. Вместо этого попробуйте что-то вроде этого:

    jessegaspar caelum-sala1-9 = (root) NOPASSWD:/usr/local/bin/changejava

Это может быть более ограничительным, чем вы действительно хотите, но это пример. Вероятно, рекомендуется указывать полный путь к команде, но это не может быть путь к вашему сценарию в вашей системе.

Откройте окно терминала и введите:

sudo visudo

В нижней части файла (после "#includedir /etc/sudoers.d") введите следующее:

username ALL=(ALL) NOPASSWD: ALL

Терминал

Надеюсь, поможет! Это будет работать только с терминальными командами, на которые обычные действия не будут влиять.

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