Unix запрещает пользователю отображать в каталоге только файлы, принадлежащие пользователю

Если вы хотите сделать постоянные ssh-коммуникации, вы можете использовать утилиту типа autossh.

2
30.06.2018, 18:35
2 ответа

Это невозможно. Но вы можете установить разрешения для /data на --x для других, чтобы они могли только (вслепую )перейти в свой каталог, но вообще не видеть содержимое /data:

# chmod 771 /data
3
27.01.2020, 22:09

Это невозможно при использовании разрешений традиционного режима в Unix. Это связано с тем, что для чтения содержимого указанного каталога требуются разрешения на чтение каталога.

Пример

Я собираюсь использовать команду su, чтобы проиллюстрировать почему. Я настроил 3 учетные записи пользователей, user1, user2 и user3.

$ su -c 'whoami' user1
user1
$ su -c 'whoami' user2
user2
$ su -c 'whoami' user3
user3

Вот моя структура каталогов:

$ mkdir -p /data/user{1..3}
$ for i in {1..3};do chown user${i}:user${i} /data/user${i};done

$ ls -l /data/
total 12
drwxr-xr-x 2 user1 user1 4096 Jun 30 11:35 user1
drwxr-xr-x 2 user2 user2 4096 Jun 30 11:35 user2
drwxr-xr-x 2 user3 user3 4096 Jun 30 11:35 user3

Если мы установим разрешения таким образом, что ни один пользователь не сможет прочитать /data, то ни один пользователь не сможет выполнить ls -l /data.

$ chmod 750 /data

$ su -c 'ls -l /data' user1
ls: cannot open directory /data/: Permission denied

Чтобы разрешить пользователю, не являющемуся владельцем (root )или в группе (root ),мы должны включить разрешения r-xдля всех (, т.е. другие разрешения ).

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

$ chmod 754 /data

$ su -c 'ls -l /data/' user1
ls: cannot access /data/user3: Permission denied
ls: cannot access /data/user2: Permission denied
ls: cannot access /data/user1: Permission denied
total 0
d????????? ? ? ? ?            ? user1
d????????? ? ? ? ?            ? user2
d????????? ? ? ? ?            ? user3

Если мы попытаемся дать пользователю разрешение только на выполнение, --x, он сможет получить доступ к подкаталогам -каталога /data, но не сможет вывести список содержимого /data.

$ chmod 755 /data

$ su -c 'ls -l /data/' user1
total 12
drwxr-xr-x 2 user1 user1 4096 Jun 30 11:35 user1
drwxr-xr-x 2 user2 user2 4096 Jun 30 11:35 user2
drwxr-xr-x 2 user3 user3 4096 Jun 30 11:35 user3

А как насчет ACL?

Могут ли здесь работать списки управления доступом (ACL )? В расследовании этого я не думаю, что они могут дать вам что-нибудь лучше.

Здесь я устанавливаю разрешения на 750 для /dataи добавляю ACL для пользователя 1 в /dataили --x:

.
$ chmod 750 /data
$ setfacl -m u:user1:x /data

$ ls -ld /data
drwxr-x---+ 5 root root 4096 Jun 30 11:35 /data

Наш пользователь user1 больше не может получить доступ/data:

$ su -c 'ls -l /data' user1
ls: cannot open directory /data: Permission denied

Но по-прежнему виден подкаталог -/data/user1:

$ su -c 'ls -l /data/user1' user1
total 0    

Это влияние setfaclна разрешения:

    $ getfacl /data
    # file: data
    # owner: root
    # group: root
    user::rwx
    user:user1:--x
    group::r-x
    mask::r-x
    other::---

В чем проблема?

Проблема в том, что для того, чтобы иметь доступ к списку содержимого каталога, в основном /data, пользователю нужны права r--для этого. Мы не можем явно выдавать «части» этого, это все или ничего в мире разрешений режима в Unix.

-1
27.01.2020, 22:09

Теги

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