Tips & Tricks

This article is protected by the Open Publication License, V1.0 or later. Copyright © 2005 by Red Hat, Inc.
Original article: http://www.redhat.com/magazine/008jun05/departments/tips_tricks/

Red Hat Magazine, выпуск 8, июнь 2005

Перевод: © Иван Песин

Раздел "Tips & Tricks" этого месяца включает примеры вопросов и ответов системных администраторов, которые можно найти в базе знаний Red Hat Knowledgebase.

Советы от RHCE

Спасение рабочего стола GNOME из лап конфигурационной системы GNOME

Проблема: мне удалось заблокировать себе доступ в среду GNOME, некорректно выставив Preferences-> Resolution.

В поисках решения я получил несколько важных уроков о конфигурации GNOME.

Главный урок, полученный мною, заключался в том, что конфигурация GNOME не хранится в старых добрых текстовых файлах. У GNOME есть своя собственная, аналогичная реестру Windows, конфигурационная система.

Другим уроком стало то, что не смотря на наследование параметров экрана по-умолчанию от сервера X, при изменении настроек они сохраняются в пользовательских настройках GNOME.

В данном конкретном случае, решение заключалось в отмене пользовательских настроек экранного разрешения. Для этого необходимо зарегистрироваться в текстовом режиме и выполнить:

gconftool-2 --unset /desktop/gnome/screen/$(hostname)/0/rate
gconftool-2 --unset /desktop/gnome/screen/$(hostname)/0/resolution

Зачем нужны init-скриптам файлы блокировок?

Бредфорд Хинсон (Bradford Hinson)

Когда сервис запускается с помощью init-скрипта, в каталоге /var/lock/subsys/ создается файл с таким же именем, как и у скрипта. Когда сервис останавливается, этот файл удаляется. Нас не будет интересовать содержимое этих файлов, главное, чтобы его имя совпадало с именем init-скрипта.

Данный файл, если он существует, говорит о том, что подсистема сервиса заблокирована или, другими словами, сервис сейчас находится в запущенном состоянии. Поскольку сервис может состоять из нескольких исполняемых программ с разными именами, поиск идентификатора процесса (PID) одного исполняемого файла может оказаться недостаточным для определения состояния всего сервиса. Поэтому команда:

service <initscript> status

проверяет и PID исполняемого файла, и файл в каталоге /var/lock/subsys/. Если PID не найден, но соответствующий файл в каталоге существует, вы получите такое сообщение:

<service> dead but subsys locked

Управление подсистемой сервиса преследует две цели. Во-первых, даже если сервис не блокирует подсистему, он все равно будет запускаться и останавливаться с помощью интерфейса сервисов. Однако, при смене уровня выполнения, rc-скрипты проверяют существование файла в каталоге /var/lock/subsys/. Если этот файл не найден, сервис не будет корректно остановлен или запущен при переходе между уровнями выполнения, даже если в каталогах /etc/rc#.d/ есть символические ссылки для старта и завершения.

Во-вторых, при перезагрузке и останове системы проверяется каталог /var/lock/subsys/. Рассмотрим процедуру останова системы:

  1. Выполнить для всех сервисов service <initscript> stop.
  2. Выполнить для всех процессов kill -SIGTERM 
  3. Пауза 5 секунд
  4. Выполнить для всех оставшихся процессов kill -SIGKILL 

Такой порядок выполняемых при останове системы процедур обеспечивает максимально корректное завершение всех процессов. При завершении работы системы, скрипт /etc/rc.d/init.d/killall проверяет каталог /var/lock/subsys/, чтобы узнать какие подсистемы все еще заблокированы. Если после остановки всех сервисов (т.е. завершения п.1) остаются заблокированные подсистемы, то скрипт  killall использует имя файла для вызова service <initscript> stop

Эта схема позволяет завершить выполнение процесса максимально толерантно, перед тем как перейти к выполнению пунктов 2-4, где оставшиеся сервисы завершаются безусловно.

Где находится файл /etc/timezone в Red Hat® Enterprise Linux®?

Раул Сандерем (Rahul Sundaram)

Файл /etc/timezone не включается в Red Hat Enterprise Linux. Локальный часовой пояс хранится в /etc/localtime и используется библиотекой GNU для C (glibc) если не выставлена переменная TZ. Файл /etc/timezone является либо копией дерева /usr/share/zoneinfo/, либо символической ссылкой на него.

Примечание:
Стандарт иерархии файловой системы (Filesystem Hierarchy Standard, FHS) не требует наличия того файла и не определяет его формат. За дополнительной информацией по FHS обратитесь к документу http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/etc.html.

Как задать права доступа к ресурсам Samba?

Роберт Мьюнилла (Robert Munilla)

Существует много способов задания прав доступа к вашим ресурсам Samba и увеличения безопасности. Этот совет демонстрирует некоторые основные способы определения прав доступа.

Наиболее ключевые установки:

read only = Yes
guest ok = Yes

По-умолчанию read only = Yes

Права доступа к ресурсу

 
read only: Этот параметр контролирует возможность пользователей создавать и модифицировать файлы
на данном ресурсе.

guest ok: Если данный параметр равен yes, то пользователи будут получать доступ к ресурсу
без указания пароля, что может быть небезопасно.

Пример:

[share]
path = /samba
read only = Yes

Эта опция управляет доступом к ресурсу на запись.

Дополнительные параметры

read list:     Данный параметр определяет список пользователей или групп, которые имеют доступ к 
ресурсу в режиме "только для чтения".

write list: Задает список пользователей для данного ресурса, имеющих права на запись.

valid users: Можно открыть доступ к ресурсу только для определенных пользователей. Для этого, укажите необходимых
пользователей и группы в данном параметре.

invalid users: Указанные пользователи и группы не будут иметь доступа к данному ресурсу.

Пример:

 
[share]
path = /samba
write list = user1 user2

Группы

Имя группы может быть добавлено в качестве значения с помощью двух специальных символов:

@ (at symbol)  группа будет искаться в NIS
+ (plus sign) группа не будет искаться в NIS

Примеры:

  
valid users = @groupname
invalid users = +groupname

Права доступа, автоматически устанавливаемые на новых файлах

create mask:    Этот параметр задает восьмиричное значение прав доступа, которые устанавливаются
на созданных файлах. Пример: create mask = 1644

directory mask: Для разрешения доступа к каталогу, его права доступа должны включать бит исполнения.
Значение по умолчанию -- 0755

Пример:

 
[global]
create mask = 0775

Примечания и дополнительная информация

Что означает сообщение "DriveReady SeekComplete Error", появляющееся при загрузке системы?

Рауль Сандерем (Rahul Sundaram)

Это сообщение означает, что устройство хранения данных получило от ядра запрос, который оно не понимает и игнорирует его. Это может, например, означать, что драйвер ядра послал команды, которые не поддерживаются конкретным устройством. Обычно, это не критическая ошибка и ее можно проигнорировать без побочных эффектов.

Почему при загрузке системы я получаю ошибки grep: /proc/cmdline: No such file or directory и grep: /proc/mounts: No such file or directory ?

Рауль Сандерем (Rahul Sundaram)

Эти ошибки означают, что виртуальная файловая система proc не была смонтирована во время загрузки. Linux использует эту файловую систему для представления приложениям различной важной информации о процессах.

Если система не загружается, выполните загрузку в аварийный режим. Иструкции можно найти в разделе Загрузка в аварийный режим руководства системного администратора.

Если вы получите сообщение об ошибке:

An error occurred trying to mount all or some of your file systems. 
Some of them may be under /mnt/sysimage

проверьте файл /etc/fstab, поскольку он содержит таблицу файловых систем.

В этом файле должна присутствовать строка, аналогичная следующей:

none                    /proc                   proc    defaults        0 0

Каталог /proc должен существовать и быть доступен на чтение и выполнение для всех пользователей.

Как мне поменять командный интерпретатор?

Майкл Керей (Michael Kearey)

Для смены вашего командного интерпретатора, воспользуйтесь командой chsh.

Можно, также, воспользоваться параметрами команды. Чтобы вывести список доступных интерпретаторов в системе, введите:

chsh --list

в результате, вы получите приблизительно следующий список:

/bin/sh
/bin/bash
/sbin/nologin
/bin/ash
/bin/bsh
/bin/ksh
/usr/bin/ksh
/usr/bin/pdksh
/bin/tcsh
/bin/csh

Чтобы сменить командный интерпретатор на csh, выполните команду:

chsh -s /bin/csh

Чтобы узнать текущий командный интерпретатор, используйте команду:

echo $SHELL
Примечание:
Вышеприведенный пример предполагает, что текущий пользователь -- root. Другие пользователи при смене командного интерпретатора должны будут указать свой пароль. Изменения вступят в силу после следующей регистрации в системе.

This article is protected by the Open Publication License, V1.0 or later. Copyright © 2004 by Red Hat, Inc.