LinuxForum.Fans
Тема

Права доступа - всё так запутано

Автор: vitalekmail 37 сообщений 6441 просмотров
#216583
vitalekmail написал:
То есть любой пользователь, если очень того захочет, сможет прочитать этот файл?
К примеру это текстовый файл с правами -rws------. Всё что нужно пользователю это запустить читалку или редактор текста какой нибудь? Опасно как то

нет конечно. rws------ значит "доступ ТОЛЬКО хозяину". Вы получите "доступ закрыт", если вы не хозяин. s оно только на запуск файлов (точнее использование) распространяется.

vitalekmail написал:
И ещё... получается что через программку другим пользователям этот файл можно будет не только прочитать но и, например, редактировать и удалить?

удаление/создание файлов регулируется правами доступа к каталогу. Файлы, к которым нет права модификации модифицировать как не странно можно. Для этого необходимо и достаточно права модификации каталога и права его использования (и кроме того таких прав всех каталогов верхних уровней). Да, нельзя модифицировать файл. Но можно его прочитать, уничтожить, и создать такой-же.

vitalekmail написал:
Или имелось ввиду что такие права установленны программе?

право 4000 (aka s) действует только на бинарный файл
на скрипт оно просто не действует. для остальных регулярных файлов это право не имеет смысла

#216584
Fat-Zer написал:
с acl у меня чего-то не получилось... там ман тяжёлый - сейчас не хочется копаться...

там всё просто - это просто список кому и что разрешено делать с файлом, который приклеивается к каждому файлу. Только оно по умолчанию отключено (включается в /etc/fstab, или в опциях команды mount, что одно и тоже)

#216609
drBatty написал:
там всё просто - это просто список кому и что разрешено делать с файлом, который приклеивается к каждому файлу.

да нет... для ext4 вроде по дефолту идёт... по крайней мере я ручками ничего не прописывал...

text
alexander@goblin /root $ sudo cp /usr/bin/id .
Пароль:
alexander@goblin /root $ sudo chmod 4700 ./id
alexander@goblin /root $ ls -l id
-rws------ 1 root root 31016 Дек 26 00:23 id
alexander@goblin /root $ sudo setfacl -m u:alexander:rx id
alexander@goblin /root $ getfacl id
# file: id
# owner: root
# group: root
# flags: s--
user::rwx
user:alexander:r-x
group::---
mask::r-x
other::---

alexander@goblin /root $ ls -l id -rwsr-x---+ 1 root root 31016 Дек 26 00:23 id alexander@goblin /root $ ./id uid=1000(alexander) gid=100(users) euid=0(root) группы=0(root),7(lp),10(wheel),11(floppy),14(uucp),18(audio),19(cdrom),27(video),35(games),70(postgres),85(usb),100(users),102(wireshark),104(vmware),1007(plugdev),1011(qemu),1014(vboxusers)

ещё надо посмотреть, что stat в сыром виде возвращает...

#216640
Fat-Zer написал:
да нет... для ext4 вроде по дефолту идёт...

не идёт. у вас getfacl показывает простые права. Попробуйте setfacl
[console]root@dt:~# setfacl -m u:root:r id
setfacl: id: Неподдерживаемая операция
[/console]

Fat-Zer написал:
ещё надо посмотреть, что stat в сыром виде возвращает...

она-то тут причём? говорю-же, надо монтировать с опцией acl, тогда взлетит.
[console]root@dt:~# mount -o remount,acl /
root@dt:~# setfacl -m u:root:r id
root@dt:~# getfacl id
# file: id
# owner: root
# group: root
user::rwx
user:root:r--
group::r-x
mask::r-x
other::r-x

[/console]

#216646

вот пример:
EXAMPLES
Granting an additional user read access
предоставление доступа для чтения определённому юзверю (это невозможно сделать обычными правами, если юзер не хозяин и не член группы)
setfacl -m u:lisa:r file

Revoking write access from all groups and all named users (using the effective rights mask)
отмена доступа модификации для всех групп и всех юзеров, которые имеют имена. (Используется ACL маска доступа)
setfacl -m m::rx file

Removing a named group entry from a file's ACL
удаление определённой группы из списка доступа для заданного файла.
setfacl -x g:staff file

Copying the ACL of one file to another
копирование списка с одного файла в другой.
getfacl file1 | setfacl --set-file=- file2

Copying the access ACL into the Default ACL
копирование списка в список по умолчанию
getfacl --access dir | setfacl -d -M- dir


На самом деле - всё просто. Достаточно понять основную идею - это просто списки, кому что можно, и кому чего нельзя.

#216651
drBatty написал:
не идёт. у вас getfacl показывает простые права. Попробуйте setfacl

smile для тех, кто в танке:

Fat-Zer написал:
alexander@goblin /root $ sudo setfacl -m u:alexander:rx id
alexander@goblin /root $ getfacl id
# file: id
# owner: root
# group: root
# flags: s--
user::rwx
user:alexander:r-x
group::---
mask::r-x
drBatty написал:
вот пример:

ман я просматривал...

drBatty написал:
На самом деле - всё просто. Достаточно понять основную идею - это просто списки, кому что можно, и кому чего нельзя.

я понимаю... меня вывод ls для поля группы настораживает...

правда, что за mask не разобрал...

#216656
Fat-Zer написал:
для тех, кто в танке:

для тех кто в танке по имени Gentoo smile - в Slackware, Debian & CentOS по умолчанию смонтированно БЕЗ ACL. И что-бы познать мощь надо перемонтировать. ИМХО так в большинстве дистров.

Fat-Zer написал:
ман я просматривал...

не для вас конечно переводил. wink

Fat-Zer написал:
я понимаю... меня вывод ls для поля группы настораживает...

дык плюсик стоит - значит надо ACL смотреть. Хотя моя getfacl таки пишет:
[console]root@dt:~# chmod 4700 ./id
root@dt:~# ls -l ./id
-rws------+ 1 root root 20860 Дек 26 02:01 ./id*
root@dt:~# getfacl --access id
# file: id
# owner: root
# group: root
# flags: s--
user::rwx
user:root:r-- #effective:---
user:doc:r-- #effective:---
group::r-x #effective:---
mask::---
other::---

[/console]
ну у вас гентушников всё через жо^W по своему wink

#216659
Fat-Zer написал:
правда, что за mask не разобрал...

mask это эффективные права доступа. Именно их выводит команда ls в поле для прав группы. В моём примере ACL разрешает, но UNIX-права запрещают. Потому доступ запрещён (ибо UNIX права старше)
Если выставить маску равной rwx, то ls покажет rwxrwx---, и доступ для юзеров будет определятся ACL (хотя доступ "для всех" в UNIX-правах командой ls будет по прежнему показываться --- )

Т.е. ACL на самом деле это такая "группа", членство в которой определяется не глобально, как для обычной группы, а для каждого файла отдельно. Да, а права "группы", это и есть та самая маска. Права самой группы для файлов с ACL ls НЕ показывает.

ЗЫЖ а вообще ACL не нужно.

#216698
drBatty написал:
для тех кто в танке по имени Gentoo - в Slackware, Debian & CentOS по умолчанию смонтированно БЕЗ ACL.

судя по манам это дело не дистрибутива, а ядра...

drBatty написал:
ну у вас гентушников всё через жо^W по своему

это показывается только если права противоречат маске wink

#216748
Fat-Zer написал:
судя по манам это дело не дистрибутива, а ядра...

ну если считать mount и его файл с дефолтами (/etc/fstab) частью ядра - тогда да. :P

Fat-Zer написал:
это показывается только если права противоречат маске

угу. Какой смысл писать комментарий очевидного?

#216849
drBatty написал:
ну если считать mount и его файл с дефолтами (/etc/fstab)

а если fstab говорит defaults, то откуда берутся умолчания?
man mount ссылается на некие "kernel defaults"... что бы это могло быть...

drBatty написал:
угу. Какой смысл писать комментарий очевидного?

а чего балон на гентушников катить?

#216871
Fat-Zer написал:
а если fstab говорит defaults, то откуда берутся умолчания?
man mount ссылается на некие "kernel defaults"... что бы это могло быть...
Fat-Zer написал:
а чего балон на гентушников катить?

а чего у вас всё не как у людей? у всех всю жизнь было noacl, а у вас ВНЕЗАПНО "зависит от ядра".

#216952

:D Ух ты как туго доходит до меня...

т.е. для всех файлов кроме бинарных -rwx------ = -rws------
для бинарных -rws------ = всё то же что и в -rwx------ + любой пользователь может его выполнить (не изменить не посмотреть исходный код, а только воспользоваться по назначению :D )

Интересно теперь хоть попал... или опять нафантазировал :D

#216955
vitalekmail написал:
Ух ты как туго доходит до меня...

потому-что используете краткую запись.

vitalekmail написал:
т.е. для всех файлов кроме бинарных -rwx------ = -rws------

да. для не бинарных файлов (и скриптов в т.ч.) SUID бит не играет никакой роли.

vitalekmail написал:
для бинарных -rws------ = всё то же что и в -rwx------ + любой пользователь может его выполнить (не изменить не посмотреть исходный код, а только воспользоваться по назначению big_smile )

плюсик тут вообще не причём. И если есть плюсик, то это совсем другая тема, которую мы тут уже затронули (ACL).

Но и если воспринимать это как формулу, то тоже неправильно.
s == x
т.е. если стоит s вместо x, это почти тоже самое, что x. В данном случае права почти одинаковые:

Хозяин может делать что угодно.
Группа ничего не может.
Остальные ничего не могут.

Чем отличается s от x? Тем, что если стоит x, то файл выполняется с правами того, кто его запустил, а если стоит s, то с правами того, чей файл.

Разницы в данном конкретном случае нет потому, что всем, кроме хозяина нельзя запускать этот файл. Потому, хотя у них и есть дополнительное право запустить с чужими правами, но эти прочие не могут им воспользоваться - типа если-бы пришёл во дворец, почитали-бы как короля. Да вот беда - не пускают во дворец. Пускают только самого короля, и больше никого.

#216991
drBatty написал:
а чего у вас всё не как у людей? у всех всю жизнь было noacl, а у вас ВНЕЗАПНО "зависит от ядра".

как вариант - потому что ядро почти монолитное... и extX с acl вкомпилены в него... + man mount не ссылается ни на какие другие места, откуда могли бы браться опции...

#216997
Fat-Zer написал:
как вариант - потому что ядро почти монолитное...

ну это только в Gentoo так. Везде почти всё модульное. Кстати, поддержка ACL насколько я знаю везде тоже мёртво вкомпиллена, она просто отключена. Что в общем-то логично, как я уже говорил - ACL не нужна в 99% случаев.

#217402

Разницы всё таки нет?
Получается так:
-rws------ и -rwx------ ничем не отличаются

т.е. грубо говоря одни и теже пользователи могут сделать с файлом одни и теже действия

И не важно какой формат файла... Так?

drBatty написал:

т.е. если стоит s вместо x, это почти тоже самое, что x. В данном случае права почти одинаковые:

Хозяин может делать что угодно.
Группа ничего не может.
Остальные ничего не могут.

Дак всё таки почти или точно? Хотя сам уже понял что точно.


Всем спасибо!

Войдите или зарегистрируйтесь, чтобы ответить.