Добрый день.Подскажите, пожалуйста, чего недопонимаю. Есть родительская директория:
# file: cache
# owner: apache
# group: group1
user::rwx
group::r-x
group:group1:rwx
group:group2:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:group1:rwx
default:group:group2:rwx
default:mask::rwx
default:other::r-Т.е. по идее все дочерние объекты, создаваемые в этой директории, могут быть удалены любым пользователем, состоящим в группе group1 или group2, т.к. права и маска по умолчанию для этих объектов будет: rwx.
На деле получается не так:
Процесс, запущенный от apache:group1, создает директорию user, а в ней файл index.html с такими ACL:# file: user
# owner: apache
# group: group1
group::r-x
group:group1:rwx #effective:r-x
group:group2:rwx #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:group1:rwx
default:group:group2:rwx
default:mask::rwx
default:other::r-x# file: index.html
# owner: apache
# group: group1
user::rw-
group::r-x #effective:r--
group:group1:rwx #effective:rw-
group:group2:rwx #effective:rw-
mask::rw-
other::r--Я - пользователь, входящий в обе из этих групп, не могу удалить ни файл index.html, ни директорию user.
$ id
uid=600(user1) gid=601(user1) группы=502(group1),520(group2)Подскажите, пожалуйста, как добиться того, что мне нужно.
Делаю это следующими командами:setfacl -d -R -m g:group1:rwx,g:group2:rwx cache
setfacl -R -m g:group1:rwx,g:group2:rwx cache
setfacl -R -d -m m::rwx cache
setfacl -R -m m::rwx cacheФС: ext3fs (acl в fstab)
Ядро: 2.6.18-164.11.1.el5
Версия пакета acl: acl-2.2.39-3.el5Заранее благодарю.
У вас на директории user маска r-x, а это значит, что для групп group1 и
group2 права становятся r-x (вместо rwx).
Нужно маску изменить на rwx.
Видимо, apache при создании папки пытается сделать на неё права g=rx.
Если процесс меняет права для группы с помощью chmod() и для этого файла есть acl, то этот chmod() будет действовать на маску, а не на группу.
>У вас на директории user маска r-x, а это значит, что для
>групп group1 и
>group2 права становятся r-x (вместо rwx).Ясно. А почему она r-x, ведь default же rwx, т.е. она по идее должна была
унаследовать родительские acl.>Нужно маску изменить на rwx.
Т.е. вручную изменить? Дело в том, что директория cache - это просто кэш ),
т.е. файлы и директории в ней постоянно удаляются (юзерами) и создаются
сервером. И каждый раз изменять вручную - не подходит. Поэтому и связался
с default acl.>Видимо, apache при создании папки пытается сделать на неё права g=rx.
>Если процесс меняет права для группы с помощью chmod() и для этого
>файла есть acl, то этот chmod() будет действовать на маску, а
>не на группу.Я так понял что acl перекрывают обычные unix access modes, а получается что нет.
Спасибо за ответ, но честно говоря так и не понял что мне нужно сделать, чтобы
на создаваемые объекты назначались права, достаточные для их удаления
пользователями, входящими в те две группы.
>У вас на директории user маска r-x, а это значит, что для
>групп group1 и
>group2 права становятся r-x (вместо rwx).
>Нужно маску изменить на rwx.
>Видимо, apache при создании папки пытается сделать на неё права g=rx.
>Если процесс меняет права для группы с помощью chmod() и для этого
>файла есть acl, то этот chmod() будет действовать на маску, а
>не на группу.На всякий случай попробовал добавить в команду изменения acl rwx для группы:
sudo setfacl -d -R -m g:group1:rwx,g:group2:rwx,g::rwx cache
sudo setfacl -R -m g:group1:rwx,g:group2:rwx,g::rwx cacheНо ничего не изменилось. Стабильно маска меняется на r-x.
А с каким umask работает apache?
>А с каким umask работает apache?как это узнать? в явном виде нигде это не указано.
я пробовал добавлять umask 002 в envvars и в rc-скрипт в /etc/init.d но ничего не поменялось.
файлы создаются с теми же правами.
>как это узнать? в явном виде нигде это не указано.#umask
Судя по всему у вас 0022, т.е. на группу маскируется wumask 0002 && /etc/init.d/apache start что-нибудь меняет?
>>как это узнать? в явном виде нигде это не указано.
>
>#umask
>Судя по всему у вас 0022, т.е. на группу маскируется w
>
>umask 0002 && /etc/init.d/apache start что-нибудь меняет?нет. залогинился под рутом. сделал umask 2 и рестартанул apache.
ситуация не изменилась, но при это umask показывает значение 2.
более того, как я уже писал ранее, пробовал менять значение umask
в rc-скрипте apache и в файле envvars, который он, судя по
содержимому rc-скрипта, тоже вычитывает.