Описание тега food-and-drink
Обычно я нахожу ответы на все мои проблемы, связанные с Unix уже отвечал, как вопросы и ответы. Однако, данный вопрос поставил меня в тупик за последний час и я решил задать свой первый вопрос на этом сайте.
Проблема
У меня есть разработки / промежуточный сервер-сервер под управлением CentOS 5.11.
Запустив найдите
как обычный пользователь не выход (даже не сообщение об ошибке):
найдите вызове readdir
Однако, выполнив команду с правами суперпользователя выводит список допустимых результатов:
$ судо найдите вызове readdir
/главная/Энтони/РЕПО/РНР-файл src/ЦРМ/вызове readdir.ч
/главная/Энтони/РЕПО/РНР-файл src/ВН/стандарт/тесты/каталог/readdir_basic.phpt по
... и т. д.
трассированием
обычно помогает мне отлаживать такие вопросы, и работает трассированием найдите вызове readdir
показывает:
stat64("/ВАР/Либ/mlocate по/mlocate по.дБ", 0xbff65398) = -1 значение eacces (отказано)
открыть("/", R_OK|прав) = -1 значение eacces (отказано)
exit_group(1) = ?
Проверить разрешения
Я проверил права доступа на найдите
двоичный и его базы данных по умолчанию. Как и ожидалось, команды имеют setuid
с случшать
как владелец группы, когда база данных имеет соответствующие владельца и разрешения.
$ Общ -л в /usr/Бен/найти
-права доступа rwx--с-х 1 корень случшать 22280 3 сентября 2009 /usr/Бен/найти
$ судо ЛС-л /ВАР/Либ/mlocate по/mlocate по.дБ
-RW-Р----- 1 корень случшать 78395703 8 мая 04:02 /ВАР/Либ/mlocate по/mlocate по.дБ
$ судо ЛС-ЛД /ВАР/Либ/mlocate по/
директорию типа drwxr-х--- 2 корня случшать 4096 3 сентября 2009 /ВАР/Либ/mlocate по/
Не существует также никаких необычных атрибутах файла:
$ lsattr команду sudo /usr/Бен/найдите /ВАР/Либ/mlocate по/mlocate по.дБ
------------- /УСР/бин/найти
------------- /ВАР/Либ/mlocate по/mlocate по.дБ
Сравнить с рабочей системы
Между тем, все работает, как ожидалось на рабочем сервере. Запустив найдите вызове readdir
как обычный (не root) пользователя возвращает список результатов, следует:
$ найдите вызове readdir
в /usr/включать/РНР/ЦРМ/вызове readdir.ч
в /usr/библиотека lib/perl5/5.8.8/для i386-linux на нить-мульти/авто/в POSIX/вызове readdir.Аль
/usr/share/man/man2/readdir.2.gz
Для сравнения, я запустил эту команду через трассированием
но затем я получил ту же ошибку запрета разрешений как на промежуточном сервере. Мне было интересно, как это может быть, пока не прочитал инструкцию страница за судо
. Перечисленные в ошибки раздел:
Программы, которые используют бит setuid не имеют эффективных привилегий идентификатор пользователя, в то время как прослеживается.
Так что, к сожалению, я не могу использовать трассированием
для отладки.
Я сравнивал результаты всех вышеперечисленных команд между постановка и производство серверов и нет никакой разницы между ними. Обе системы имеют как mlocate-0.15-1.el5.2
об / мин, без модификации своих файлов, как показано на оборотах -в mlocate по
.
Другие соображения
Я думал, что это может быть связано с тем, что на проблемные промежуточный сервер, логин проходит проверку подлинности, использующих winbind, но я создал обычный локальный пользователь на той же коробке и я до сих пор тот же вопрос. Очевидно, что-то еще, что я упускаю, но я просто не знаю, что это.
Я подозреваю, что это связано с использования setgid разрешением файл, может быть, Пэм или, возможно, с SELinux. Я не знаю много о Пэм или SELinux: я только посмотрел на Пэм, когда настройки winbind аутентификации, в то время как в SELinux был установлен вместе с ОС, но я никогда не использовал его.
Примечание: рабочий сервер был подвержен гораздо меньше изменений, чем сервер разработки, который имел некоторые эксперименты.
Редактировать: проблема решена
Благодаря острому Селаде глаз и внимание к деталям, я проверил разрешения для корневого каталога.
$ судо ЛС-ЛД /
drwx--XR-х 25 пользователи корневого домена 4096 22 апреля 17:57 /
Когда я проверка подлинности с помощью активных каталогов учетных данных пользователей домена
является главной группы, выделило для меня смысл. Некоторое время назад я отрицал права на чтение в набор справочников для других пользователей, изменение структуры собственности группы и удалением разрешение на чтение из группы. Должно быть, я случайно сделал то же самое в корневой каталог. Дох! Интересно, что было несколько недель назад, и я не заметил никаких проблем, хотя она совпадала с временем, когда я сознательно решил начинать входить в систему как обычный пользователь и с помощью sudo, а не входить в систему как root.
Во всяком случае, я изменил разрешения вернуться к тому, что они должны быть:
$ судо команда chgrp root в /
$ судо команду chmod -в г+р /
режим `/' изменено на 0755 (rwxr-XR-х)
$ Общ -ЛД /
директорию типа drwxr-XR-х 25 корень корень 4096 22 апреля 17:57 /
Теперь найти
работает как надо.