Дайте пользовательский доступ для чтения-записи только к одному каталогу

Вы выполняете Единицу в 11,10 по умолчанию, если Вы нажимаете Meta (ключ окон) и вводите netbeans,

Необходимо смочь видеть немного записей, связанных с netbeans.

18
18.11.2013, 23:36
2 ответа

Отрицательный ACLs

Можно препятствовать тому, чтобы пользователь получил доступ к определенным частям файловой системы путем установки списков управления доступом. Например, чтобы гарантировать, что пользователь abcd не может получить доступ ни к какому файлу под /home:

setfacl -m user:abcd:0 /home

Этот подход прост, но необходимо не забыть блокировать доступ ко всему, что Вы не хотите abcd смочь получить доступ.

Chroot

Получить надежный контроль над какой abcd видьте, настройте chroot, т.е. ограничьте пользователя поддеревом файловой системы.

Необходимо сделать все файлы, в которых нуждается пользователь (например. mysql и все его зависимости, если Вы хотите, чтобы пользователь смог работать mysql) под chroot. Скажите, что путь к chroot /home/restricted/abcd; mysql программа должна быть доступной под /home/restricted/abcd. Указание символьной ссылки вне chroot бесполезно, потому что поиск символьной ссылки затронут chroot тюрьмой. В соответствии с Linux, можно хорошо использовать, связывают, монтируется:

mount --rbind /bin /home/restricted/abcd/bin
mount --rbind /dev /home/restricted/abcd/dev
mount --rbind /etc /home/restricted/abcd/dev
mount --rbind /lib /home/restricted/abcd/lib
mount --rbind /proc /home/restricted/abcd/proc
mount --rbind /sbin /home/restricted/abcd/sbin
mount --rbind /sys /home/restricted/abcd/sys
mount --rbind /usr /home/restricted/abcd/usr

Можно также скопировать файлы (но затем необходимо будет заботиться, что они актуальны).

Для ограничения пользователя chroot добавьте a ChrootDirectory директива к /etc/sshd_config.

Match User abcd
    ChrootDirectory /home/restricted/abcd

Можно протестировать его с: chroot --userspec=abcd /home/restricted/abcd/ /bin/bash

Концепция безопасности

Можно также использовать концепции безопасности, такие как SELinux или AppArmor. В обоих случаях необходимо записать довольно тонкую конфигурацию, чтобы удостовериться, что Вы не покидаете дыр.

18
27.01.2020, 19:46

Необходимо использовать chroot. chroot управляйте изменяет корневой каталог, который видят все дочерние процессы. Я дам пример, чтобы продемонстрировать, как он работает.

Это было записано на месте; я не на самом деле перед машиной UNIX прямо сейчас. В этом примере существует названный каталог dir с тремя файлами: a, b, c, и ls. Первые три являются регулярными файлами. ls hardlink к реальному ls двоичный файл так, чтобы мы могли перечислить файлы в то время как в chroot.

Я иду в chroot в dir. (Обратите внимание, что я, вероятно, забываю некоторые каталоги в корневом каталоге.)

Вот установка в выходной форме оболочки:

$ pwd
/home/alex/test
$ l
dir
$ ls dir
a b c ls
$ ./ls dir # does the same thing
a b c ls
$ ls /
bin boot dev etc home mnt media proc sbin sys usr var

Теперь я буду chroot в dir. /bin/bash аргумент выбирает, какой процесс должен быть выполнен с новым корневым каталогом. Это принимает значение по умолчанию к /bin/sh.

$ chroot /bin/bash dir
$ # this prompt is now from a subprocess running in the new root directory
$ PATH=/ ls
a b c ls
$ pwd
/

Теперь мы выходим от chroot:

$ exit
$ # this prompt is now from the original bash process, from before the chroot
$ pwd
/home/alex/test

Я надеюсь, что это иллюстрирует как chroot работы команды. В основном то, что необходимо сделать для решения проблемы, должно выполнить a chroot управляйте как тот пользователь каждый раз, когда они входят в систему. Возможно, поместите его в сценарий запуска?

hardlink в файл продолжит работать внутри a chroot, даже если к тому файлу не могут получить доступ другие средства (это работает, потому что hardlinks указывают на inodes, не пути). Так, чтобы позволить пользователю доступу, например, mysql команда, Вы выполнились бы:

ln /usr/bin/mysql /path/to/chroot/target
5
27.01.2020, 19:46
  • 1
    Но разве это не потребовало бы, чтобы я настроил всю chroot среду со всеми символьными ссылками? Разве не было бы легче выполнить команду так, чтобы у нового пользователя не было доступа к другим каталогам, но программы как апач не теряют доступ к ним? –  Manishearth 18.11.2013, 07:12
  • 2
    В основном есть ли какой-либо путь (через chmod) того, чтобы заставлять пользователя потерять доступ для чтения к остальной части фс, не влияя на доступ других пользователей? –  Manishearth 18.11.2013, 07:12
  • 3
    @Manishearth там не является никаким простым путем с chmod. то, когда Вы говорите, "не было бы, это быть легче выполнить команду... не теряет доступ к ним", та команда chroot. если Вы объясните, что Вы подразумеваете "под всей chroot средой", или почему это было бы проблемой, то возможно, я пойму лучше. (обратите внимание, что можно предоставить доступ ко всем исполняемым файлам с остротой: ln /bin/* /path/to/chroot/target) –  strugee 18.11.2013, 07:23
  • 4
    @Manishearth, если бы мой пример не имел смысла, я поощрил бы Вас играть с chroot самостоятельно или сообщите мне то, что не имело смысла. еще лучше сделайте обоих. (и прочитайте страницы справочника.) –  strugee 18.11.2013, 07:36
  • 5
    @Manishearth, если бы этот ответ помог Вам достаточно привести Вас к ответу, то необходимо рассмотреть принятие его. –  strugee 18.11.2013, 08:47

Теги

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