Назад | Перейти на главную страницу

Как добиться изоляции прав пользователей?

/opt/software
/home/user1/file
/home/user2/file
  1. user1 может rwx в / home / user1 / file
  2. user2 может rwx в / home / user2 / file
  3. программное обеспечение может rwx как в / home / user1 / file, так и в / home / user2 / file
  4. user1 не может rwx в / home / user2 / file
  5. user2 не может rwx в / home / user1 / file

Как этого добиться?

Похоже, что лучший способ добиться того, что вы пытаетесь сделать, - это ACL.

ext3 и ext4 поддерживают это, но для работы необходимо включить его.

Чтобы отобразить не только то, что я сделал, но и файловую структуру моего теста, я вставил все это. Я использую RHEL 6.2 для своего теста.

Создайте нужных пользователей

root # useradd -d /opt/software/ software    
root # useradd user1
root # useradd user2

Создайте «файл» в домах обоих пользователей. Установите для него права группы - это необходимо для ACL, хотя группа может быть собственной.

root # touch /home/user1/file && touch /home/user2/file
root # chmod 770 /home/user1/file /home/user2/file 

root # chown user1:user1 /home/user1/file 
root # chown user2:user2 /home/user2/file 

Установите ACL. -m = изменить. u = пользователь. программное обеспечение = имя пользователя. rwx = разрешения.

root # setfacl -m u:software:rwx /home/user1/file 
root # setfacl -m u:software:rwx /home/user2/file

Получите ACL, чтобы убедиться, что он правильный.

root # getfacl /home/user1/file 
getfacl: Removing leading '/' from absolute path names
# file: home/user1/file
# owner: user1
# group: user1
user::rwx
user:software:rwx
group::rwx
mask::rwx
other::---

Заставьте исполняемый файл делать что-нибудь полезное.

root # echo "echo horse" > /home/user1/file 
root # echo "echo horse" > /home/user2/file 

Установите ACL в домашний каталог пользователя

root # setfacl -m u:software:rx /home/user1
root # setfacl -m u:software:rx /home/user2

И снова убедитесь, что у группы есть необходимые разрешения.

root # chmod 750 /home/user1 /home/user2

Время для тестирования!

root # su - software
-bash-4.1$ /home/user1/file 
hest
-bash-4.1$ vi /home/user1/file 
-bash-4.1$ /home/user1/file 
hest
moo
-bash-4.1$ logout

root # su - user1

[user1@tutsrv01 ~]$ /home/user2/file
-bash: /home/user2/file: Permission denied

Немного о ACL

Для работы группа должна иметь как минимум те же разрешения, что и записи ACL. Если вы сделаете rwx Запись ACL, но запись группы разрешений unix только rw, тогда действующее разрешение ACL будет ограничено до rw.