Как изменить общесистемную среду выполнения 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
Надеюсь, поможет! Это будет работать только с терминальными командами, на которые обычные действия не будут влиять.