А вот объясните мне как нибудь "сильно для чайников" про chmod. В каком случае какие наборы правил используются?
Под какой набор попадают следующие действия с файлами, к примеру:
1. Файл создается/изменяется скриптом, который запускает пользователь, набрав его адрес в строке URL.
2. То же, но скриптом, который запущен через cron
3. То же, но мной, зашедшим через FTP.
Владелец, член группы, прочие - кто все эти люди вообще?
1. Срабатывают права того, от чьего имени запущен Apache/PHP (вебсервер, проще говоря)
2. Аналогично, cron использует те же права, так как лишь служит оболочкой для запуска по расписанию... если, конечно, он сам не запускается от имени другого пользователя с отличными правами
3. Срабатывают ваши собственные права
Владелец - тот, кто создал данный файл и имеет на него основные права
Группа - категория, к которой он принадлежит
Прочие - эмм... ну, вроде ноу комментс) _________________ До выхода LiteDiary 0.3.0:парам-пам-пам-пам! Она уже здесь!
Если первое и второе аналогично, то почему когда я набираю URL скрипта и он создает файл, то потом этот файл нельзя изменить тем же самым скриптом, запущенным через cron? Apache/PHP в данном случае "прочие" или "владелец"?
Это зависит от настроек каждого хостинга Ведь пользователей можно создать в Лине бесконечное множество с разными правами для каждого... а вообще, как по мне - chmod - полная чушь... если мой скрипт неожиданно не может изменить или что-либо сделать с моим файлом - это уже тупость... _________________ До выхода LiteDiary 0.3.0:парам-пам-пам-пам! Она уже здесь!
На большинстве linux-хостингов apache работает от имени пользователя "nobody", а PHP установлен как модуль apache. Соответственно, файлы создаются от имени nobody:nobody (пользователь:группа).
Когда вы загружаете файлы по FTP, вы будете являться их владельцем (username:username). Задачи крона также выполняются от имени пользователя (username:username).
На всех наших серверах (кроме нового zoxt), PHP работает через механизм SuExec (вообще, сейчас это работает уже через SuPHP, но в данном случае это не имеет значения), вследствие чего файлы, созданные php-скриптом, принадлежат непосредственно пользователю (username:username).
На сервере zoxt механизм SuExec временно отключен, и сегодня мы решим, как это исправить.
Соответственно, когда PHP работает через SuExec/SuPHP, права на php-скрипты достаточно выставить в 400 (так как процесс, считывающий php-скрипт, запущен от имени пользователя, которому принадлежит файл скрипта).
Если PHP работает как модуль apache (nobody:nobody), то нужно дать «другим пользователям» (в данном случае nobody:nobody) право читать файлы php-скриптов (права 444).
Примерно так, если не очень углубляться _________________ Дмитрий
С правами на php скрипты проблем вроде нет. После закачки скрипта на FTP у них выставляется 644 и запускаются они любыми способами нормально. Ситуация вот какая была:
1. Через cron запускается скрипт
Код:
php /home/ejik/get.php
который получает некоторые данные раз в сутки и записывает их в файлик data.txt к примеру.
2. Если ничего не трогать больше, то всё прекрасно, но иногда возникает необходимость пересоздать data.txt досрочно, вне расписания. И если напрямую запустить скрипт
Код:
http://www.site.ru/get.php
то обновление происходит, но после этого файлик с данными перестает обновляться по расписанию - скрипт отрабатывает, но файл не обновляется.
Где-то читал, что в таких случаях можно изначально использовать в cron не
Код:
php /home/ejik/get.php
а нечто вроде
Код:
wget http://www.site.ru/get.php
тогда при любом способе запуска он будет происходить одинаково (от одного и того же пользователя). Правда не пробовал еще.
Вот и интересно стало, может при записи data.txt просто надо было устанавливать ему определенные атрибуты (типа 666 или еще каких)