LXF115:Ответы
|
|
|
Содержание |
Ответы
- Есть вопрос по Open Source? Пишите нам по адресу: [mailto: answers@linuxformat.ru answers@linuxformat.ru]!
1 Слишком много паролей
В Я только что завершил установку Ubuntu 8.10, который великолепен, помимо постоянных нудных просьб ввести пароли для разблокировки каталога ключей (keyring) при каждом входе в систему. Сообщение гласит:
The application ‘NetworkManagerApplet’(/usr/bin/nm-applet) wants to access the default keyring, but it is locked.
и я не могу соединиться с моим беспроводным маршрутизатором, пока не введу пароль root.
Меня это не сильно нервирует, но как мне спасти свою семью от этого неудобства?
Фрэнсис О’Брайен [Francis O’Brien]
О Ubuntu использует NetworkManager для обработки всех проводных и беспроводных соединений. NetworkManager помнит сети, к которым компьютер был подключен ранее, и пытается автоматически восстановить соединение, если они находятся в пределах досягаемости. Поскольку эти сети обычно зашифрованы, необходимо хранить ключи или парольные фразы для каждой из «известных» сетей. NetworkManager делает это с помощью каталога ключей Gnome Keyring (KDE использует KDE Wallet), защищенного паролем. Для доступа к нему нежелательно использовать пароль root. Вообще-то лучше не использовать пароль и вашего пользователя, поскольку это не создает дополнительной защиты сверх стандартного входа в систему.
Если же такой уровень безопасности вас устраивает, Ubuntu может настроить Gnome Keyring на открытие каталога ключей login при входе в систему. В нем можно хранить пароли других каталогов ключей, т.е. все они могут открываться, как только вы вошли. В .gnome2/keyrings должен быть файл с именем login.keyring. В следующий раз, когда вас спросят о пароле каталога по умолчанию, установите флажок Automatically Unlock This On Login, и вопросы должны прекратиться. Повторите это действие для каждого пользователя, пока все они не будет использовать каталог login, чтобы открыть какие-либо другие.
Но это не будет работать, если вы во время установки выбрали функцию автовхода, потому что тогда вы не вводите пароль, используемый для разблокирования специальных каталогов ключей. Однако, если компьютером пользуется не один человек, Вы так и так должны избегать автоматического входа: каждый член семьи должен иметь свою собственную учетную запись, чтобы сохранить свои настройки и данные в безопасности. Автоматический вход можно отключить в вкладке Security [Безопасность] в System > Administration > Login Window [Система > Администрирование > Окно входа]. НБ
2 Sudo в CentOS
В Почему CentOS говорит, что моя учетная запись «не в списке sudoers»? Я попытался посмотреть в ее настройках, но результатов не добился.
Крис Торп [Chris Thorpe]
О По умолчанию, CentOS не использует sudo. В отличие от Ubuntu, где первый пользователь, созданный в инсталляторе, имеет право запускать через sudo все, что угодно, CentOS не дает такого права никому. Единственный способ запуска программы с привилегиями root – войти от имени root, запустив su в терминале. Чтобы включить sudo для себя или других пользователей, необходимо отредактировать список sudoers, используя команду visudo. Она использует редактор, определенный в $EDITOR, или, если она не установлена, Vi. Этот метод проверяет синтаксис, прежде чем поместить его в реальный файл, что позволяет избежать блокировки самого себя при опечатке. Запустите команду с помощью
su - visudo
или
EDITOR=”emacs” visudo
и добавьте в конец файла следующую строку:
ваш_пользователь ALL=(ALL) ALL
чтобы позволить своему пользователю запускать любые команды. Можно также указать список команд, например:
otheruser ALL= /sbin/mount, /sbin/umount
Разрешения могут быть выданы всем членам группы, и вы можете ограничить аргументы, передаваемые командам, например, как в этом, отключенном, примере в файле sudoers CentOS по умолчанию:
%users ALL=/sbin/mount /cdrom, /sbin/ umount /cdrom
что позволяет любому пользователю монтировать или отмонтировать CD. Вы можете также удалить парольную защиту, как показано здесь:
%users ALL=NOPASSWD: /sbin/mount / cdrom,/sbin/umount /cdrom
но при этом будьте осторожны. Sudo считается лучшим способом управления доступом к системным командам, потому что вы имеете точный контроль над действиями каждого пользователя и потому что больше никому не надо знать пароль root. ГМ
3 Вход на замке
В Можете ли вы помочь мне снова загрузить PCLinuxOS 2007? У меня он установлен на отдельном жестком диске, и я потихоньку разбирался с ним, но в результате недавнего переезда потерял блокнот, где были записаны имя пользователя и пароль. Прочитав на одном форуме о предложении снова вставить DVD и переустановить систему, я попытался сделать это, но с меня по-прежнему требуют реквизиты. Не знаю, что делать дальше, и буду признателен за любую помощь.
Клайв Бизли [Clive Beasley], c форумов
О Вы все еще загружаетесь с жесткого диска. Чтобы загрузиться с DVD, вам нужно выбрать оптический привод в загрузочном меню BIOS. При запуске компьютера вы должны видеть сообщение, предлагающее нажать определенную клавишу для настройки и т.д. Какую именно – зависит от материнской платы: наши четыре компьютера используют F8, F11, F12 и Esc. Иногда это сообщение отсылает к меню BBS. Нужная клавиша должна быть также указана в руководстве вашей материнской платы, если последнее не потеряно вместе с блокнотом, содержащим пароли. Если вы не можете войти в меню загрузки, вызовите страницу настроек BIOS и измените порядок загрузки, чтобы CD/DVD шел перед жестким диском.
Если вы загрузитесь с вашего Live CD, необходимость в переустановке отпадет; пароль можно сбросить с помощью нескольких команд в терминале. Откройте его, щелкнув по иконке Konsole и запустите эти команды:
su - mount /dev/sda1 chroot /mnt/sda1 passwd ваше_имя_пользователя
su запросит у вас пароль, введите root. Следующая команда монтирует корневую файловую систему (по умолчанию PCLinuxOS устанавливается в /dev/sda1), затем chroot входит в эту директорию и делает ее корневой. Пока вы не выйдете из системы, вы будете находиться внутри вашей исходной установки PCLinuxOS. При запуске chroot вы можете увидеть сообщения об ошибках прав доступа на /dev/null – спокойно проигнорируйте их. Теперь, будучи внутри вашей исходной установки в качестве root, Вы можете изменить пароль с помощью команды passwd:
passwd мой_пользователь
При запросе введите пароль дважды и постарайтесь не забыть его и не потерять снова. Если вы забыли еще и имя пользователя, можете просмотреть список пользователей в файле /etc/passwd.
cat /etc/passwd
Ваше имя пользователя будет находиться гдето ближе к концу этого файла. Также можно сбросить пароль root, запустив passwd без указания имени пользователя. Сбросив пароль, нажмите Ctrl+D для выхода из сессии root, а затем перезагрузите машину, вернув ей на этот раз возможность загрузиться с жесткого диска. Теперь вы можете зайти под вашим новым именем пользователя и паролем. НБ
4 Вкл/Выкл интернет
В Я пытаюсь ограничить доступ к Интернету (Wi-Fi) на одном из моих компьютеров, но только в определенные периоды времени в течение дня и ночи. Полагаю, это может быть сделано с помощью заданий Cron, но не совсем уверен в синтаксисе для установки временных рамок и нужно ли мне изменять Cron от имени пользователя или от root.
Скажем, ноутбук может иметь доступ в Интернет лишь с 8:00 до 17:00, а затем с 20:00 до 22:30 в воскресенье–четверг (для вечерних занятий), но в пятницу или субботу он может подключаться с 8:00 до 23:00. Можно ли сделать это в несколько строк, или надо иметь одну команду на каждый день недели и время включения и отключения? Кроме того, каким образом остановить весь интернет-трафик, и Wi-Fi, и Ethernet?
Мартин Берк [Martin Burke]
О Это можно сделать при помощи Iptables – программы управления возможностями брандмауэра ядра Linux. Вы можете заблокировать весь исходящий трафик, но более изящное решение – блокировать трафик, не предназначенный для вашей локальной сети. При этом компьютер вашего ребенка сохранит доступ к любой общей директории или местным серверам, но выйти в Интернет будет невозможно. Следующая команда позволит подключение к сети 192.168.0.*, но заблокирует все остальное.
iptables -I OUTPUT ! -d 192.168.1.0/24 -j DROP
Часть -I (это прописная буква i) OUTPUT вставляет правило в самом начале выходной цепочки. Правила брандмауэра обрабатываются по очереди, вплоть до первого совпадения, так что новое правило поставьте впереди всех. Это важно, если брандмауэр уже запущен, поскольку он обычно установлен на разрешение исходящих соединений, а вам надо это пресечь. Часть -d 192.168.1.0/24 соответствует любому трафику для сети 192.168.1.*, но предшествующий ! инвертирует ее – получается трафик не для Вашей сети. В заключительной части -j сообщает Iptables, что делать с этими данными, в данном случае – отказаться от них. Поскольку в правиле не указан интерфейс, то блокировка не зависит от типа соединения: беспроводное оно или проводное.
Можно поставить эту команду в задачи Cron и добавить правило, отменяющее запрет:
iptables -D OUTPUT ! -d 192.168.1.0/24 -j DROP
где вместо -I (вставить) идет -D, удаляющее правило, что позволит эффективно включать и отключать компьютер от интернет-канала в указанное время, например, поместив в /etc/Cron.d/firewall строки
0 8 * * * root /sbin/iptables -D OUTPUT ! -d 192.168.1.0/24 -j DROP &>/dev/null 0 17 * * 0-4 root /sbin/iptables -I OUTPUT ! -d 192.168.1.0/24 -j DROP &>/dev/null 0 20 * * 0-4 root /sbin/iptables -D OUTPUT ! -d 192.168.1.0/24 -j DROP &>/dev/null 30 22 * * 0-4 root /sbin/iptables -I OUTPUT ! -d 192.168.1.0/24 -j DROP &>/dev/null 0 23 * * 5-6 root /sbin/iptables -I OUTPUT ! -d 192.168.1.0/24 -j DROP &>/dev/null
Первое правило выключает фильтрацию в 8 утра каждый день, следующие три включают в 17:00, выключают в 20:00, и снова включают в 22:30 в воскресенье–четверг (дни от 0 до 4, в интерпретации Cron). Последняя строка включает фильтрацию в более позднее время, на выходных.
У этого подхода есть серьезный недостаток: для активации задач Cron компьютер должен быть включен, а его перезапуск вызовет исчезновение правил. Одно из решений – применить скрипт, проверяющий время и устанавливающий соответствующие правила, который вы можете запустить из /etc/rc.local.
#!/bin/sh DAY=$(( $(date +%u) % 7 )) HOUR=$(date +%H) if $DAY -lt 2 ; then if $HOUR -ge 8 && $HOUR -lt 23 then /sbin/iptables -D OUTPUT ! -d 192.168.1.0/24 -j DROP else /sbin/iptables -I OUTPUT ! -d 192.168.1.0/24 -j DROP fi else if $HOUR -ge 8 && $HOUR -lt 17 then /sbin/iptables -D OUTPUT ! -d 192.168.1.0/24 -j DROP elif $HOUR -ge 20 && $HOUR -lt 22 then /sbin/iptables -D OUTPUT ! -d 192.168.1.0/24 -j DROP else /sbin/iptables -I OUTPUT ! -d 192.168.1.0/24 -j DROP fi fi
На вид вроде и сложно, но он просто получает день и час по команде date и принимает на основе этого решение: включить или отключить фильтрацию. Настройте его в соответствии с вашими потребностями, и он будет хорошей отправной точкой. МС