LINUX.ORG.RU

3rwx два вопроса о правах доступа

 


0

2

ПРИВЕТ ЛОР!

1) Права доступа к файлам в *nix системах избыточны, т. е.: вариант, когда у пользователя есть право write (писать в файл), но нет права read (читать файл)...; и когда user может читать скрипт, но не имеет права исполнения, что мешает ему скопировать данный файл с последствиями. Смысл выделять роскошные 9 бит, если возможны такие неосторожности.

2) Предположительная ситуация, когда есть так называемый «директор файлов» который создает файл, «редактор файлов», «читатель» и «посторонний». Все они имеют доступ в один общий каталог. И вот как создать файл, в данном случае директору, чтобы: редактор - редактировал, читатель — занимался вычиткой, а посторонний, скажем ждал релиза?

1. Ты что-то не так делаешь.
2. touch $file; chmod u+rw,g+r-w,o-rwx $file
Ну и man install до кучи.
/thread

yars068 ★★★★ ()

Ох уж этот юношеский максимализм.

Ты не понимаешь, что это делается для БЕЗОПАСНОСТИ.

Иногда данные нужно записать, при этом никому не показывать, что именно записано - вот тебе право записи без права чтения.

Право чтения скрипта без права исполнения - не для того, чтобы защититься от того, кто читает скрипт, а для того, чтобы кто-то случайно или специально не запустил этот скрипт именно в том месте.

Точно так же право исполнения без права чтения: был эксплойт где-то там, который позволял получить консоль суперпользователя (через su), но для этого нужно было иметь право на чтение su, чтобы найти там адрес точки входа. Если же права на чтение программы нет, то эксплойт не работал (при этом можно было запускать su в нормальном режиме).

Про 2) тебе уже ответили.

tiandrey ★★★★★ ()
Последнее исправление: tiandrey (всего исправлений: 1)
Ответ на: комментарий от tiandrey

данные нужно записать, при этом никому не показывать, что именно записано

По-моему, речь была про файл, в который разрешена запись, но чтение которого запрещено (--w--w----, например). Хотя на практике писать в него тоже не выйдет.

al_exquemelin ★★★ ()
Ответ на: комментарий от tiandrey
root@localhost:/home/user# cat tmpfile
testwrite ok
root@localhost:/home/user# chmod 0662 tmpfile
root@localhost:/home/user# ls -l ./tmpfile
-rw-rw--w- 1 root root 13 апр.  25 15:46 ./tmpfile
root@localhost:/home/user# выход
user@localhost:~$ cat tmpfile
cat: tmpfile: Отказано в доступе
user@localhost:~$ cat > tmpfile
testwrite2 ok
user@localhost:~$ sudo cat tmpfile
testwrite2 ok
andregin ()
Ответ на: комментарий от andregin

Ну и? Ты видишь поведение не соотв. правам доступа? Я нет.

anonymous ()
Ответ на: комментарий от tiandrey

Иногда данные нужно записать, при этом никому не показывать, что именно записано - вот тебе право записи без права чтения.

все догнал, понял.

andregin ()
Ответ на: комментарий от anonymous

А, и правда пишет, разобрался. В редакторе, правда, не откроешь его, но это другой вопрос.

al_exquemelin ★★★ ()
Ответ на: комментарий от andregin

Ну да, так сходу и не придумаешь. Но в других случаях этот бит имеет значение, поэтому без него никак.

tiandrey ★★★★★ ()
Ответ на: комментарий от andregin

ну например

допустим на компе работают несколько человек по ssh. и есть админский скрипт автоматизации для чего нибудь и он ведёт лог-стаистику того кто и когда его запустил и с каким результатом. на это скрипте будет стоять -x- для юзеров а на логе -w-, чтоб только админ смог его прочитать

ionanahin ★★★ ()

и когда user может читать скрипт, но не имеет права исполнения, что мешает ему скопировать данный файл с последствиями. Смысл выделять роскошные 9 бит, если возможны такие неосторожности.

1. с правами +x -rw ты можешь только выполнять (бинарники, не скрипты)

2. с правами +r -wx можешь выполнить и прочитать. Выполнить только косвенно.

Все они имеют доступ в один общий каталог. И вот как создать файл, в данном случае директору, чтобы: редактор - редактировал, читатель — занимался вычиткой, а посторонний, скажем ждал релиза?

хозяин каталога — директор, у каталога SGID

редактор в группе, ему можно +w на файле, но не на каталоге, потому каталог изменять он не может(т.е. создавать/удалять файлы)

читатель other, -w на каталоге, -w на файлах.

А что касается посторонних, то просто не пускай туда их. Для них сделай каталог с релизами.

emulek ()
Ответ на: комментарий от emulek

а, да, есть фишка:

каталог с релизами называем скажем release

каталог разработчиков debug_bbcc0ea5df1f70f7bbd1d09f2856211b

всё помещаешь туда, где права на каталог -wr +x профит: левые люди не смогут узнать имя каталога debug.

emulek ()
Ответ на: комментарий от emulek

нашел на просторах (оказывается у меня работает гугл :)

«как разместить 4 человек в одной комнате»? Решений как минимум, три:

а) Все члены группы writers входят также и в readers (но не наоборот). Тогда директория, в которую прячется файл должна иметь группу readers, причем для группы доступ в директорию открыт, а для «всех остальных» закрыт. А сам файл должен иметь группу writers, и этой группе файл должен быть открыт для записи. А право «только чтение» можно дать категории «все остальные», все равно это будут только те, кто входит в readers, но не попал в writers.

б) Если для изменения файла можно использовать только одну определенную программу, то надо сделать её «суидной». Естественно, владельцем такой программы должен быть тот же user, что и владелец файла, который мы хотим модифицировать, а права на запуск этой программы надо дать только той группе, которой мы хотим дать права на модификацию.

c) http://ru.wikipedia.org/wiki/ACL

andregin ()
Ответ на: комментарий от andregin

а) Все члены группы writers входят также и в readers (но не наоборот). Тогда директория, в которую прячется файл должна иметь группу readers, причем для группы доступ в директорию открыт, а для «всех остальных» закрыт. А сам файл должен иметь группу writers, и этой группе файл должен быть открыт для записи. А право «только чтение» можно дать категории «все остальные», все равно это будут только те, кто входит в readers, но не попал в writers.

а где «директор»?

Если для изменения файла можно использовать только одну определенную программу, то надо сделать её «суидной».

umask не забудь, sudo ЕМНИП это умеет. А то придётся костылить изменение прав от этого юзера.

c) http://ru.wikipedia.org/wiki/ACL

не нужно. Кстати правильная ссылка man acl, причём со своего локалхоста.

emulek ()
Ответ на: комментарий от andregin

директор владелец директории.

тогда запретите -w для этой директории и группы writers

Это приведёт к тому, что директор сможет создавать файлы, а writes — нет.

Но я бы так не делал, потому что обычно writers нужно создавать директории, в любом случае этот запрет имеет мало смысла, т.к. writers могут всё испортить просто обнулив файлы. Это ничем не лучше удаления.

я запутался :D

бывает. Надо помнить, что директории == те же файлы

право +r даётся для чтения, вы можете узнать имена файлов в директории

право +w для модификации, можно создать и удалить файлы внутри директории.

право +x обязательно, без него в директорию вообще не войти.

emulek ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.