Как я могу редактировать / обновлять файл hosts (etc / hosts), используя любой язык программирования

StackOverflow https://stackoverflow.com/questions/1642055

  •  10-07-2019
  •  | 
  •  

Вопрос

Динамически я хочу отредактировать / обновить файл 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; используйте это!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top