私は共有ディレクトリ Department を持っています。そこには、部門別の Account、Sales、Presales の 3 つのサブディレクトリがあり、各サブディレクトリには acc1、acc2、acc3 / sale1、sales2 / ps1、ps2、ps3、ps4 のように部門従業員ディレクトリがあります。
各従業員がユーザー名とパスワードを持ち、他のディレクトリを閲覧せずに自分のディレクトリにのみアクセスできるようにする方法。
Windows Server で作成したものと同じもの。
どうやってやるんですか?
答え1
まず、各従業員を部門グループに所属させます。つまり、acc1 は Account に、ps3 は Presales に所属させます。次に、部門レベルで、Department の下の各サブディレクトリに、それぞれの部門グループと同じグループ ID を設定し、グループ レベルの読み取り + 実行アクセスを許可し、他のすべてのアクセスを取り消します。次のようにすると、次のようになりますls -la Departments
。
drwxr-x--- 5 root Account 4096 Jul 25 08:43 Account
drwxr-x--- 6 root Presales 4096 Jul 25 08:44 Presales
drwxr-x--- 4 root Sales 4096 Jul 25 08:44 Sales
次に、各従業員ディレクトリのユーザー ID とグループ ID をユーザーとして設定し、ユーザーにディレクトリへのフル アクセス権を与え、グループとその他のユーザーからのすべてのアクセス権を取り消します。たとえば、アカウントの場合:
drwx------ 2 acc1 acc1 4096 Jul 25 08:43 acc1
drwx------ 2 acc2 acc2 4096 Jul 25 08:43 acc2
drwx------ 2 acc3 acc3 4096 Jul 25 08:43 acc3
chown
、chgrp
そしてchmod
これをコマンドラインで実行すると友達になります。例えばhttp://www.perlfect.com/articles/chmod.shtml使用方法の詳細については、こちらをご覧ください。
この方法は、権限/メンバーシップを階層的かつ均一に定義できる限り機能します。つまり、特定のレベルで異なる種類やレベルの権限を混在させる必要はありません (たとえば、一部の個々のユーザーには読み取り/書き込みアクセス権がありますが、グループにのみ属するユーザーには読み取り専用アクセス権しかありません)。このような場合には ACL が必要です。
答え2
あるいは、これらのディレクトリに FACLS を設定することもできます。より複雑なアクセス制御リストが必要な場合、これが最もクリーンで最適な推奨される方法です。
次のマニュアルページを使用します:
男はファックする
男 setfacl
使用法は次のようになります。
setfacl -md:g:"グループ名":rwx /path/to/desired/directory
setfacl -mg:"グループ名":rwx /path/to/desired/directory
最初の行は、ディレクトリ内に新しく作成されたファイル/フォルダに自動的に適用されるルールを設定します。 2 行目は、これらが適用されているのと同じ上位ディレクトリに適用されますが、そのディレクトリが既に存在するため、そのディレクトリへのアクセスが許可されます。
***注意: groupname を囲む引用符は、コマンドにグループ名を入力する必要があることを示します。コマンドを実行するときは、実際の引用符を使用しないでください。引用符なしでグループ名を入力する必要があります。