Настраиваю линукс: запуск Фаерфокса от имени другого пользователя

Jul 09, 2007 19:03

Правильнее было бы назвать этот пост "Продолжаю настраивать линукс", потому что у нас в семье даже шутка уже такая появилась. Как ни спросит меня Мунса, чем я занимаюсь, сидя за компом, постоянный ответ: "Настраиваю линукс". Конечно, это не всегда так, часто я что-нибудь читаю: жж, статьи или просто книги, общаюсь с друзьями и родственниками, ну и так далее. Но почему-то чаще всего её вопросы совпадают именно с моим желанием систему улучшить, исправить кое-какие косяки, поставить и освоить новую прогу, да и просто поиграться с этой мощной игрушкой.

Чаще всего я "настраиваю линукс", читая рассылки линуксовых сайтов и блогов вроде http://www.opennet.ru, http://linux.ru, http://mydebianblog.blogspot.com. Найду что-нибудь интересное, и давай пробовать. Недавно таким макаром набрёл на статью о более безопасном запуске Фаерфокса. Статья на английском, так что я её просто перескажу (весьма своими словами).

Браузер (неважно, какой: Internet Explorer, Firefox, Opera) -- одна из самых широких и опасных потенциальных "дыр" в системе. Это как ботинки, в которых мы ходим по улице. На улице может быть чисто: травка, асфальт, а может быть полно луж, снега, грязи. И чем качественнее наша обувь, тем надёжнее мы от грязи защищены. Не хочу сейчас рассуждать о том, какой браузер лучше (а то опять какой-нибудь холивор подымется :)), а остановлюсь на другом аспекте его использования. Продолжая тему обуви, приведу такой пример: я иду на рыбалку, и мне нужны сапоги. У меня дома есть сапоги, но я поступаю как тот мужик из анекдота, который посылает сына к соседу позаимствовать дрель, а когда тот её не даёт, в сердцах говорит: "Вот скопидом, так и придётся своей сверлить!" В случае с браузером такой подход оправдан. Путешествуя по интернету, мы постоянно подвергаемся риску забрести на какой-нибудь левый сайт и отгрести там непрошенного гостя (троян, вирус, эксплойт). Лучше всего не ходить по таким местам, равно как и избегать луж на улице, но мало кто из нас этому совету следует. И вот, если наш браузер подвергся атаке и её не выдержал (напоролись мы на гвоздь), в результате злобный хакер может испортить все данные, к которым имеет доступ. В случае с виндовс в его распоряжение попадёт практически вся система, потому что подавляющее большинство пользователей работают с правами администратора (как пишет автор оригинальной статьи, "это нездоровый подход, и если вы так поступаете, то заслуживаете всё, что может свалиться вам на голову"). В случае линукса хакеру до системных файлов не добраться, но уж к файлам пользователя он получит полный доступ. А что такое файлы пользователя? Это ваши фильмы, это ваши фотографии, это ваши книги, это ваша почта и аська, это ваш курсовик, это все ваши пароли и данные кредитных карточек, если вы таковыми через интернет орудуете. Это все настройки программ, с которыми вы работаете. Это ваша жизнь. Неплохо, да? Что же можно сделать? Вместо того, чтобы в дождь идти за хлебом самому, можно послать в магазин другого человека. Если он забредёт в лужу и начерпает в сапоги воды, ваши ноги останутся сухими.


Чтобы было кого посылать за хлебом, надо сначала найти такого человека. Говоря компьютерным языком, надо создать пользователя, специально предназначенного лишь для цели лазенья по интернету. Примеры в статье даны для линукса Gentoo, я же рассказываю о Дебиане (может с оговорками подойти и для Убунту). Переключаемся в администраторский аккаунт и добавляем пользователя ff с отключённым паролем:
su
adduser --disabled-password ff

Далее необходимо разрешить самому себе пользоваться этим аккаунтом. Не выходя из рутового шелла, запускаем visudo (если оно не запускается, сначала надо его установить apt-get install sudo).

В открывшемся на редактирование файле добавляем такие строчки:

User_Alias X_USERS = yourusername
Defaults:X_USERS env_reset
Defaults:X_USERS env_keep += DISPLAY
Defaults:X_USERS env_keep += XAUTHORITY

yourusername yourhostname=(ff) NOPASSWD: /usr/bin/firefox

yourusername -- это название вашего рабочего аккаунта, yourhostname -- имя машины в домене. Узнать его можно командой hostname --long
NOPASSWD: /usr/bin/firefox говорит о том, что при запуске Фаерфокса пароль спрашиваться не будет. Если вы пользуетесь Оперой, надо указать путь к её исполняемому файлу.

Теперь перекинем рабочий каталог браузера в свежесозданный домашний каталог пользователя ff и поменяем права доступа на все файлы и подкаталоги:

mv ~yourusername/.mozilla ~ff/ -iv
chown ff:users ~ff/.mozilla/ -Rfv

Теперь можно из рутового аккаунта выйти: exit (или просто нажав Ctrl-d) и заняться последующей настройкой. Нам надо разрешить любому пользователю нашей системы подключаться к запущенной текущим пользователем (то есть нами) графической оболочке -- X-серверу. Для этого воспользуемся командой xhost +yourhostname
В статье команда такая: xhost 127.0.0.1, то есть мы попросту разрешаем доступ локальной машине, и вполне можно написать и xhost localhost. Однако у меня это не сработало, и при запуске браузера я получил ошибку Xlib: connection to ":0.0" refused by serverXlib: No protocol specified. Рытьё в гугле и собственные размышления наконец привели меня к правильному резульату, который я уже и сообщил. На крайний случай можно порекомендовать сделать xhost + -- это разрешит запуск программ в вашей X-сессии теоретически с любой машины мира, но на самом деле всё не так просто: сделайте ps ax | grep -w X и убедитесь, что в результирующей строчке присутствует "-nolisten TCP". Это означает, что ваш X-сервер просто игнорирует любые запросы через интернет, и поломать его можно только локально, живым юзверем, работающем на машине лично.

Чтобы не запускать эту команду каждый раз при логине в систему, добавим в файл ~/.xinitrc (создадим его, если он не существует) эту самую строчку xhost +yourhostname, заместив, естественно, yourhostname именем вашего хоста.

Всё готово. Чтобы запустить Фаерфокс, нам теперь надо набирать команду таким образом: sudo -u ff -H firefox
Если мы пользуемся для запуска иконкой на рабочем столе, отредактируем свойства ярлыка, чтобы команда выглядела именно так (конечно, всегда следует указывать путь к конкретному исполняему файлу на вашей системе; это может быть и /usr/bin/firefox и /usr/bin/mozilla-firefox, и так далее).

Для окончательной полировки проверим, куда браузер сохраняет скачиваемые файлы (смотреть в его настройках), и в случае необходимости перенесём к пользователю ff и этот каталог, поменяв владельца, как было описано выше. Также понадобится утрясти вопрос доступа к этому каталогу для себя любимого (внеся, например, и себя, и пользователя ff в одну и ту же группу и поставив соответствующие права доступа: на каталог 775 и на файлы 664 sudo chmod 664 /home/ff/Downloads/*). Для ещё большего удобства сделаем ссылку на этот каталог из нашего домашнего: ln -s /home/ff/downloads/ downloads

Жителям Windows не стоит отчаиваться -- и на их улице может быть праздник, если обратить внимание на команду "Запустить от имени...", которая появляется в контекстном меню при правом клике на иконке (в win 2000 надо при этом удерживать Shift, если память мне не изменяет). Вы тоже можете создать ещё одного пользователя, ограниченного в правах по самое не хочу, и запускать браузер от его имени. Естественно, вам тоже не избежать утрясаний вопросов доступа к скачиваемым файлам, но думаю, интуитивно понятный графический интерфейс поможет вам в этом нелёгком деле :)

Благодарности:
Ваш покорный слуга благодарит calum -- автора оригинальной статьи, за идею и реализацию, netfilter за конкретные советы по части претворения этой идеи в Дебиане, а также пытливых читателей, добравшихся до конца моих разглагольствований :)

про компы, linux

Previous post Next post
Up