Если вы хотите сделать постоянные ssh-коммуникации, вы можете использовать утилиту типа autossh.
Это невозможно. Но вы можете установить разрешения для /data на --x для других, чтобы они могли только (вслепую )перейти в свой каталог, но вообще не видеть содержимое /data:
# chmod 771 /data
Это невозможно при использовании разрешений традиционного режима в 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 )? В расследовании этого я не думаю, что они могут дать вам что-нибудь лучше.
Здесь я устанавливаю разрешения на 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.