Все ли мои программы имеют права владельца на все мои файлы?

363
HappyDeveloper

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

Например, мой пользователь 'Джон'. Я устанавливаю какую-то программу, скажем Dropbox. Dropbox работает как «Джон». Поэтому он имеет не только полные права на свои файлы в ~ / .dropbox, но и на все файлы, включая ~.

1) Я прав? Если так,

2) Должен ли я беспокоиться об этом?

3) Есть ли способ это исправить? Кто-то сказал мне, что я могу использовать chroot или setuid, но я не уверен, как их использовать.

Я использую Ubuntu 12, на случай, если это имеет значение.

1

3 ответа на вопрос

2
Daniel Pittman

Это разумная вещь: другие платформы, такие как MacOS-X, и приложения, такие как Chrome, используют «песочницу» для запуска целых приложений или частей приложений таким образом, что они перестают иметь полный контроль, эквивалентный тому, что у вас есть.

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

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

Итак, 3: вы можете это исправить? Ответ "вероятно, нет". Дело не в том, что это невозможно, а в том, что это, вероятно, будет трудно сделать так, чтобы удовлетворить ваши желания использовать приложения или услуги.

Использование chroot позволяет вам делать вид, что существует другой «корневой каталог», чем настоящий. Это изолирует приложения (например, dropbox) от вашего реального корня - и может позволить вам избежать риска, что он сможет прочитать остальную часть вашего домашнего каталога. (Добавьте символическую ссылку из ~/.dropboxв, ~/chroot/whatever/home/you/.dropboxи это не так уж неудобно.

Однако вам нужно быть пользователем root или использовать такой инструмент, как schroot, для управления доступом к запуску приложения, а chroot изолирует только несколько частей системных файлов. Приложения с корнем внутри, которые все еще могут видеть снаружи или уйти. Различные другие ресурсы (IP-порты, pids и т. Д.) По-прежнему используются совместно.

Кроме того, могу поспорить, что DropBox имеет компонент пользовательского интерфейса, и он не очень хорошо работает в хроматическом режиме. Даже если это так, это ограничение вредит другим приложениям.

Альтернатива, приложение setuid, - это способ сказать: «независимо от того, кто его запускает, запускайте его как этот другой пользователь, а не как пользователь, который его запустил».

Это чаще всего используется для того, чтобы приложения, которые вы, обычный пользователь, запускали от имени пользователя root, запускали, например, sudo. Однако он может также назначить пользователя или группу процесса непривилегированным пользователем.

Проблема в том, что он запускается от имени другого пользователя - так же, как вы запускали его с чем- sudo -u another-user dropboxлибо еще. Это означает, что у него нет доступа к вашему домашнему каталогу, и, без усердной работы, у вас нет доступа к домашнему каталогу других пользователей.

Вы можете обойти это, но это не тривиально и не удобно в общем случае. Как правило, вы хотите поделиться группой и попытаться организовать, чтобы файлы, которые она может читать, принадлежали этой группе, а не вашей стандартной группе. Это не тривиально, даже с каталогами setuid (которые изменяют группу или владельца созданных под ними файлов), отчасти потому, что вам нужно управлять umask, а это плохо для Linux.

Наконец, вы можете использовать AppArmor или SELinux для защиты приложения. Я считаю, что AppArmor - это то, что Ubuntu выбрал в качестве своего предпочтительного варианта. Хотя убедительно утверждается, что он менее безопасен, чем SELinux, он также концептуально проще, поскольку основан на видимых именах и путях в большей степени, чем защищенные метки.

Вы можете обнаружить, что это эффективный способ повысить безопасность без необходимости идти по более сложным путям. Теоретически это должно позволить вам ограничить DropBox только той ~/.dropboxпапкой и ничем иным, без необходимости запуска от имени другого пользователя.

Итак, если вы действительно хотите улучшить свою безопасность, посмотрите путь к chroot. Это наименее болезненный способ улучшить безопасность DropBox в Ubuntu - гораздо меньше, чем приложение setuid, по крайней мере.

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

Вы могли бы вместо этого использовать encfs для шифрования файлов перед их отправкой в ​​DropBox ...

Да, я уже использую Encfs, спасибо. Так что теперь я беспокоюсь только об этой другой вещи, которая становится еще хуже, если учесть, что dropbox является проповедническим и его код не может быть пересмотрен. HappyDeveloper 11 лет назад 0
* кивком * Тогда, действительно, я поддерживаю "chroot - наиболее вероятный способ уменьшить вашу угрозу безопасности". Хотя я забыл, что вы можете (теоретически) использовать SELinux или AppArmor для дальнейшей защиты ... Daniel Pittman 11 лет назад 0
Отлично, большое спасибо. Я собираюсь прочитать обо всех этих вещах тогда. HappyDeveloper 11 лет назад 0
1
Lars Kotthoff

1) да. 2) В общем нет. Вы должны доверять хотя бы некоторому программному обеспечению, которое вы используете, чтобы не испортить ситуацию. 3) Самый простой способ, вероятно, будет запускать программное обеспечение от имени другого пользователя. Если ему не нужен доступ ни к чему, вы можете запустить его как «никто», у которого практически нет прав. В противном случае вы можете изменить владельца всех файлов, к которым у приложения есть доступ, к пользователю, от имени которого оно работает. Обратите внимание, что это затруднит доступ к файлам для вас и других программ.

В общем, я бы не слишком волновался об этом. У вас есть резервные копии ваших данных, которые вы можете восстановить файлы в любом случае, не так ли.

Да, но я не очень беспокоюсь о программах, удаляющих мои файлы. Я больше беспокоюсь о том, что они могут читать их. HappyDeveloper 11 лет назад 0
0
David Andersson

1) Я прав?

По сути, да, но не «программы» имеют права доступа, а «пользователь», владеющий «процессом», который запускает «программу». Так что если вы запускаете Dropbox, у Dropbox есть права доступа. Если кто-то еще запускает Dropbox, у него есть права доступа.

2) Должен ли я беспокоиться об этом?

На самом деле, нет.

Похожие вопросы