В настоящее время, когда я хочу отредактировать свой файл hosts, я должен использовать sudo nano /etc/hosts
, есть ли что-либо, что я могу сделать для высказывания, "позволяют tom
пользователь для редактирования файла hosts, не нуждаясь sudo"?
Вы можете, но это - плохая идея. Смысл системы полномочий препятствует тому, чтобы непривилегированные пользователи и взломщики делали материал как запись в системные файлы, выполнение враждебного кода, и так далее. Безусловно лучшая вещь сделать, просто продолжают использовать sudo
, когда необходимо отредактировать системные файлы. Это - лучшая практика, и это - причина, которую мы имеем sudo
, я не рекомендую ни один из следующих методов, но они более безопасны, чем страшное chmod 777
. Вы могли , например, измените владение группы /etc/hosts
и дайте разрешение записи группы:
sudo addgroup editors #make a new group
sudo adduser $USER editors #add yourself to it
sudo chown :editors /etc/hosts #change the group ownership
sudo chmod 664 /etc/hosts #give the group write permission
Вы теперь смогли бы отредактировать файл без sudo
. Или, Вы могли использовать ACLs, если Вы имеете acl
пакет (установленный наверняка в 15,04 и позже)
sudo setfacl -m $USER:rw /etc/hosts
, Но, снова, я не рекомендую ни одно из тех действий. Просто используйте sudo
.
Я не скорректировал бы полномочия никакого связанного с системой файла
, Что можно сделать, делают основной сценарий
#!/bin/bash
sudo nano /etc/hosts
Вызов им вообще, Вы хотите, например, edithosts.sh и помещаете его в папку сценариев в Вашей домашней папке.
chmod 700 /path/to/script/file/edithosts.sh
Это предотвратит несанкционированное чтение или запись в файл, потому что ss TripeHound сказал, содержание этого файла теперь выполняется с корневыми полномочиями без пароля.
Затем добавляют следующую строку к /etc/sudoers
tom ALL = (root) NOPASSWD: /path/to/script/file/edithosts.sh
, Который позволит Вам sudo sh /path/to/script/file/edithosts.sh
, не имея необходимость вводить Рекомендуемое решение пароля
, Поскольку @paul указанный в комментариях, sudoedit
могло быть лучшее решение.
tom ALL = (root) NOPASSWD: sudoedit /etc/hosts
, поскольку это только позволяет редактировать /etc/hosts
и не оставляет Вас запускающий поднятый текстовый редактор