Unixは、ユーザーがディレクトリ内のユーザーが所有するファイルのみを一覧表示するように制限します。

Unixは、ユーザーがディレクトリ内のユーザーが所有するファイルのみを一覧表示するように制限します。

ディレクトリ/dataと3人のユーザー(user1、user2、user3)があります。

各ユーザーにはフォルダがあります。/data

[root@localhost ~]# ls -lrt /data
total 64
drwx------.  2 root        root        16384 May 19  2017 lost+found
drwx------.  2 user1       user1        4096 Jun  7  2017 user1
drwx------.  3 user2       user2        4096 Jun 12  2017 user2
drwx------.  2 user3       user3        4096 Jul 16  2017 user3

user1がログインして任意のftp / sftpソフトウェアを介してログインするときは、「user1」ディレクトリのみを一覧表示でき、残りのディレクトリは表示されないように権限を設定するにはどうすればよいですcdか? 。/datals -lrtwinscp

例えば。次のようにする必要があります

[user1@localhost ~]$ ls -lrt /data
total ??
drwx------.  2 user1       user1        4096 Jun  7  2017 user1
[user1@localhost ~]$

答え1

それは不可能です。ただし、/dataに対する他のユーザーの権限を--xに設定すると、そのユーザーは(盲目的に)自分のディレクトリにのみCDを入力でき、/dataの内容はまったく表示されません。

# chmod 771 /data

答え2

これは、既存のモード権限を使用するUnixでは不可能です。その理由は、その内容を読み取るにはディレクトリに対する読み取り権限が必要なためです。

はい

このsuコマンドを使用して理由を説明します。私はuser1、user2、user3という3つのユーザーアカウントを設定しました。

$ 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にリセットし、/datauser1のACLを/dataorに追加します--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モード特権の世界では、これがすべてでなければ専務です。

関連情報