Как я могу редактировать / обновлять файл hosts (etc / hosts), используя любой язык программирования
Вопрос
Динамически я хочу отредактировать / обновить файл hosts (etc / hosts) для добавления домена.
Для редактирования файла hosts (etc / hosts) требуются права администратора. Используя Linux, я могу сделать это с помощью этой команды
sudo gedit / etc / hosts
Но я пытаюсь сделать это с помощью языка программирования.
Как я могу это сделать?
Решение
Лучше всего использовать что-то вроде SSH и подключиться к компьютеру от имени пользователя root (или sudo в системе ()), изменить файл и отключиться. Дополнительным преимуществом этого является удобство запроса у пользователя пароля.
Чтобы сделать это без запроса, пользователю необходимо настроить некоторые средства для его достижения в качестве root. То есть установка вспомогательного приложения, установка ключа без пароля, изменение дерева LDAP или другие способы. Это немного "неприлично" из-за отсутствия лучшего термина.
Нет способа заставить это работать для пользователя, который обычно не имеет возможности повышения привилегий.
Другие советы
Ваша программа должна быть запущена с соответствующими привилегиями. Один из классических методов - сделать файл владельцем root и установить бит setuid. Когда ваша программа будет запущена, она станет root и сможет изменять / etc / hosts.
Тем не менее, setuid-код рискован. Ошибка в коде может привести к тому, что программа сделает что-то настолько плохое, что ваша система станет непригодной для использования. Злоумышленники могут использовать некоторые ошибки для запуска произвольных программ от имени пользователя root и захвата вашей системы.
У вас все еще должны быть права на редактирование файла.
Чтобы изменить файл, откройте файл в режиме чтения / записи / добавления (т. е. в режиме " a "
, используя fopen ()
), и напишите новый текст. в конец файла.
Я предполагаю, что вы находитесь в командной строке, где вы можете выполнить эту команду sudo.
Если у вас есть права доступа, как вы утверждаете, то любой язык программирования, который может добавить строку текста в существующий текстовый файл (или создать его, если нет, что маловероятно), будет работать. Возможно, вы захотите дать этой программе дополнительные права, но это уже другая тема!
Резюме: на каком языке ты знаешь? = & GT; используйте это!