FreeBSD ACLs
Категория: / DEV Блог
/ Сервер (FreeBSD)
Ситуация такая: есть папка /www (web:www 751)
Необходимо предоставить фтп доступ к папке еще несокльким пользователям из группы seo_users
Включаем аклы, собираем профтпд с поддержкой аклов.
Собственно устанавливаем сами аклы на файлы:
А вопрос вот в чем:
Когда права для группы стоят rw, то аклы работают, если убрать -w то effective mask становится запрещающей
и доступа у пользователя к файлу уже нет.
Возможно ли как то отключить привязку права группы <--> маска? Почему chmod группы меняет права доступов acl?
UPD: Набросал небольшой скриптик, который помог временно решить проблему
UPD
Таким образом списки доступа (acls) влияют на права доступа к файлам.
Реальный пример:
Здесь мы видим, что для папки css установлены системные права 770 (владелец:группа - webadmin:seo_users),
drwxrwx---+ - плюсик обозначает, что для объекта назначены ACLs.
Таким образом, пользователь, под которым выполняется апач (www) не имеет права доступа/чтения к папке css (с учетом того, что его нет в группе seo_users).
В нашем случае, использвание acl (user:www:r-x) указывает, что пользователь www может читать файлы из папки.
Поэтому стоит быть осторожным при использовании списков доступа - реальные права на файлы не видны при испльзовании команды ls, stat и подобных.
Необходимо предоставить фтп доступ к папке еще несокльким пользователям из группы seo_users
Включаем аклы, собираем профтпд с поддержкой аклов.
Собственно устанавливаем сами аклы на файлы:
cd /www
find . -type f -exec setfacl -m g:seo_users:rw-,mask::rwx {} \;
find . -type d -exec setfacl -d -m u::rwx,g::rwx,o::---,mask::rw-,g:seo_users:rwx {} \;
find . -type d -exec setfacl -m g:seo_users:rw- {} \;
А вопрос вот в чем:
Когда права для группы стоят rw, то аклы работают, если убрать -w то effective mask становится запрещающей
и доступа у пользователя к файлу уже нет.
Возможно ли как то отключить привязку права группы <--> маска? Почему chmod группы меняет права доступов acl?
UPD: Набросал небольшой скриптик, который помог временно решить проблему
#!/usr/local/bin/bash
Line=("site1.ru" "site2.ru" "site3.ru" "siteN.ru")
Files=(".htaccess" "robots.txt" "xsl" "css")
for domain in "${Line[@]}"
do
#echo $Line[$i]
current="/path_to_www/"$domain
echo $current
#stat $current
chmod 2750 $current
setfacl -m g:seo_users:r-x $current
current=$current"/htdocs/"
setfacl -m g:seo_users:r-x $current
for file in "${Files[@]}"
do
test=${current}${file}
if [ -d $test ]; then
echo "DIR - "$test
chown -R webadmin:seo_users $test
chmod -R 770 $test
find $test -type d -exec setfacl -d -m u::rwx,g::rwx,o::---,u:www:r-x {} \;
find $test -type d -exec setfacl -m u::rwx,g::rwx,o::---,u:www:r-x {} \;
find $test -type f -exec chmod 660 {} \;
find $test -type f -exec setfacl -m u:www:r-- {} \;
else
if [ -f $test ]; then
echo "FILE - "$test
chown webadmin:seo_users $test
chmod 660 $test
setfacl -m u:www:r-- $test
else
echo "NOT FOUND - "$test
fi
fi
done
done
UPD
Таким образом списки доступа (acls) влияют на права доступа к файлам.
Реальный пример:
[root@ /htdocs/css]# getfacl -d ./
#file:./
#owner:1010
#group:1050
user::rwx
user:www:r-x
group::rwx
mask::rwx
other::---
[root@ /htdocs/css]# ls -la
drwxrwx---+ 2 webadmin seo_users 512 Oct 21 17:22 ./
-rw-rw----+ 1 webadmin seo_users 786 Oct 24 11:34 default.css
-rw-rw----+ 1 webadmin seo_users 17903 Nov 10 13:52 master.css
[root@ /htdocs/css]# getfacl -d ./
#file:./
#owner:1010
#group:1050
user::rwx
user:www:r-x
group::rwx
mask::rwx
other::---
[root@ /htdocs/css]# getfacl ./master.css
#file:./master.css
#owner:1010
#group:1050
user::rw-
user:www:r-x # effective: r--
group::rwx # effective: rw-
mask::rw-
other::---
Здесь мы видим, что для папки css установлены системные права 770 (владелец:группа - webadmin:seo_users),
drwxrwx---+ - плюсик обозначает, что для объекта назначены ACLs.
Таким образом, пользователь, под которым выполняется апач (www) не имеет права доступа/чтения к папке css (с учетом того, что его нет в группе seo_users).
В нашем случае, использвание acl (user:www:r-x) указывает, что пользователь www может читать файлы из папки.
Поэтому стоит быть осторожным при использовании списков доступа - реальные права на файлы не видны при испльзовании команды ls, stat и подобных.