GNU/Linux >> Linux の 問題 >  >> Linux

Linuxアクセス制御リスト(ACL)の概要

現代のビジネス環境でLinuxを管理する際の課題の中には、誰がどの情報にアクセスできるかを管理できる、または管理する必要があるという期待があります。昔々、Linuxファイルシステムへのアクセスを必要としたのは、Linuxファイルシステムのアクセス許可を介した一般的な方法で分類できました。

基本を確認する

Linuxファイルシステムは、3種類のアクセス許可を提供します。簡単なレビューは次のとおりです:

  • U ser(またはユーザー所有者)
  • G roup(または所有者グループ)
  • O ther(他のすべての人)

これらの権限を使用して、3種類(実際には5種類ですが、すぐにアクセスできます)のアクセスを許可できます。

  • R ead
  • W 儀式
  • e X 実行する

多くの場合、これらのレベルのアクセスで十分です。経理部門からのファイルが存在するディレクトリがあるとします。これらの権限を次のように設定できます:

drwxrwxr-x  2 accounting accounting  12 Jan  8 15:13

アカウンティングサービスユーザー(ユーザー所有者)は、ディレクトリおよびaccountingのメンバーに対して読み取りと書き込みを行うことができます。 グループ(または所有者グループ)は読み取りと書き込みができます。ただし、他のユーザー(経理部門に属していないユーザー)は、そこにあるものを確認して実行することができます。これは悪い考えだと考える人もいます。

[人気:Linuxシステム管理者の基本:ユーザーアカウント管理]

したがって、権限を次のように変更する可能性があります:

drwxrwx---  2 accounting accounting  12 Jan  8 15:13 .

注: 特別な権限を使用して、そのディレクトリに作成された新しいファイルを実際に所有しているユーザーや、スティッキービットなどの設定を制御することもできます。 これは、グループのメンバーが互いのファイルを削除できるかどうかを制御します。ただし、これはこの説明の範囲外です。

現在のACLの表示

特定のファイル(または彼のマネージャーであるFredが所有するファイルだけ)を読み取る必要がある会計インターン(Kenny)がいる場合はどうなりますか?または、営業部門の人もaccountingにアクセスする必要があるかもしれません。 顧客に請求するためにFredのチームの請求書を作成するための所有者のファイル。ただし、Fredのチームが生成する他のレポートを営業チームに表示させたくない場合。通常のアクセス許可では、各ファイルとディレクトリに一度に1人のユーザーとグループ所有者しか持てないため、この状況は注意が必要です。このタイプの状況は、Linuxアクセス制御リスト(ACL)が解決することを目的としていたものです。

ACLを使用すると、基本の所有権とアクセス許可を(必然的に)変更せずに、ファイルまたはディレクトリに、より具体的なアクセス許可のセットを適用できます。他のユーザーやグループがアクセスできるようになります。

getfaclを使用して現在のACLを表示できます コマンド:

[root]# getfacl /accounting
getfacl: Removing leading '/' from absolute path names
# file: accounting
# owner: accounting
# group: accounting
user::rwx
group::rwx
other::---

リストされているアクセス許可はユーザー、グループ、およびその他のものだけであるため、現在、このディレクトリにはACLがないことがわかります。この場合、これは予想されることです。ラボでこのディレクトリを作成したばかりで、所有権の割り当て以外は何もしていないからです。それでは、デフォルトのACLを追加することから始めましょう:

ACLの設定

ACLを設定するための構文は次のようになります:

setfacl [option] [action/specification] file

「アクション」は-mになります (変更)または-x (削除)。指定は、ユーザーまたはグループの後に設定する権限が続きます。この場合、オプション-dを使用します (デフォルト)。したがって、このディレクトリのデフォルトACLを設定するには、次のコマンドを実行します。

[root]# setfacl -d -m accounting:rwx /accounting

その後、そのディレクトリのデフォルトのACL情報を確認できます。

[root]# getfacl /accounting
[root]# getfacl: Removing leading '/' from absolute path names
# file: accounting
# owner: accounting
# group: accounting
user::rwx
group::rwx
other::---
default:user::rwx
default:user:accounting:rwx
default:group::rwx
default:mask::rwx
default:other::---

フレッドがそのディレクトリにファイルを作成した場合はどうなりますか?

[fred]$ touch test
[fred]$ ls -la
drwxrwx---+  2 accounting accounting  18 Jan  8 17:51 .
dr-xr-xr-x. 18 root  root  262 Jan  8 15:13 ..
-rw-rw----+  1 fred  accounting  0 Jan  8 17:51 test
[fred]$ getfacl test
# file: test
# owner: fred
# group: accounting
user::rw-
user:accounting:rwx  #effective:rw-
group::rwx  #effective:rw-

ケニーがファイルを作成しようとするとどうなりますか? kennyであるため、推測できる場合があります accountingに含まれていません グループ、彼には許可がありません。ただし、ケニーに私たちと一緒に仕事をしてもらいたいので、accountingにあるファイルを確認できるようにする必要があります。 ディレクトリを作成し、新しいファイルを作成できるようにします。

[root@lab1 accounting]setfacl -m kenny:rwx /accounting
[root]getfacl ./
# file: .
# owner: accounting
# group: accounting
user::rwx
user:kenny:rwx

ここまでは順調ですね。ただし、このユーザーにaccountingでファイルを作成させたくない場合はどうでしょうか。 ディレクトリ?代わりに、そこでファイルを読み取らせるだけで、自分のフォルダに新しいファイルを作成できます。

[関連記事:Linuxシステム管理者の基本:UIDとGIDを使用したユーザーアカウント管理]

accountingでケニーのアクセスを設定できます このようなフォルダ:

[root@lab1 accounting]# setfacl -m kenny:r-x /accounting
[root]# getfacl ./
# file: .
# owner: accounting
# group: accounting
user::rwx
User:kenny:r-x

次に、ケニーを自分のフォルダーにし、所有権を与えてから、accountingを作成します。 accountingの他の人が参加できるように、グループの所有者をグループ化します グループはそこに何があるかを見ることができます:

[root@lab1 accounting]# mkdir ./kenny
[root]# chown kenny:accounting ./kenny
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:rwx
group::rwx

accounting内にフォルダを作成しました ユーザーkennyが所有するグループ 。彼はアカウンティングフォルダを表示できるようになりましたが、自分のフォルダにのみファイルを作成します:

[root@lab1 accounting]# su kenny
[kenny]$ touch test
touch: cannot touch ‘test’: Permission denied
[kenny]$ cd ./kenny
[kenny]$ touch test
[kenny]$ ls
test

フォルダはaccountingによって所有されているため注意してください グループ、そのグループの誰もがそこにファイルを置くことができます。インターンを扱っているので、この要素はおそらく問題ありません。しかし、ケニーに主任監査人に昇進を与え、彼の仕事をフレッドから秘密にしておきたい場合はどうなりますか?

[root]# setfacl -m fred:- ./kenny
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---

誰も欲しくない場合はどうなりますか ケニーが取り組んでいることを確認するには?

[root]# setfacl -m g:accounting:- ./kenny

注: グループを設定する場合 ACL、g:を入力してこれを指定する必要があります グループの名前の前に。ユーザーの場合は、gを変更するだけです uに 、ただしsetfacl その場所に何も置かないと、ユーザーについて話していると見なされます。

経理チームの残りのメンバーがケニーのレポートを覗き見できないように、グループ所有者の基本権限を削除する必要があります。

[root]# chmod g-rwx ./kenny
[root]# ls -al
total 0
drwxrwx-wx+  3 accounting accounting  44 Jan  9 16:38 .
dr-xr-xr-x. 18 root       root       262 Jan  8 15:13 ..
drwx------+  2 kenny      accounting  18 Jan  9 17:07 kenny
-rw-rw----+  1 root       root         0 Jan  9 16:33 test
-rw-rw----+  1 kenny      accounting   0 Jan  9 16:27 test2
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---
group::rwx  #effective:---
[root]# su jan
[jan]$ touch ./kenny/test
touch: cannot touch ‘./kenny/test’: Permission denied

これで、所有権を変更せずに、他の誰がKennyのフォルダを表示または書き込みできるかを管理できます。 CEO(経理チームのメンバーではなく、フォルダの残りの部分にアクセスできないリサ)にケニーのものへのアクセスを許可しましょう:

[root@lab1 accounting]# useradd lisa
[root]# setfacl -m u:lisa:rwx ./kenny
[root]# su lisa
[lisa]$ touch ./kenny/lisa
[lisa]$ ls ./kenny
lisa  test
[lisa]$ touch test
touch: cannot touch ‘test’: Permission denied
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---
user:lisa:rwx
group::rwx
group:accounting:---

グループ所有者のアクセス許可は広く開いたままですが、アカウンティンググループ(まだ所有者です)はそのフォルダーにアクセスできなくなっていることに注意してください。それで、誰がそれを所有しますか?

drwxrwx---+  2 kenny  accounting  30 Jan  9 17:16 kenny

この部分は注意が必要です。所有権を変更せずに所有者の権限を奪うことができることを知っておくと便利ですが、これが希望する結果であるかどうかを検討することをお勧めします。

結論

これが基本です。 ACLは混乱を招く可能性があるため、setfaclのマニュアルページを提供することをお勧めします。 およびgetfacl よく読んでください。これらのツールを使用して実行できる、さらに多くの面白くて便利なことがありますが、うまくいけば、これで十分に理解して開始できます。

[Red Hat Enterprise Linuxを試してみませんか?今すぐ無料でダウンロードしてください。 ]


Linux
  1. Linuxのchgrpおよびnewgrpコマンドの概要

  2. Linuxのグループのメンバーを一覧表示する

  3. Linux ファイルシステムで ACL (アクセス制御リスト) を構成する方法

  1. Linuxのアクセス制御リストと外付けドライブ:知っておくべきこと

  2. KaliLinuxでのNmapの概要

  3. UNIX/Linux :アクセス制御リスト (ACL) の基本

  1. Linux用のbpftraceの紹介

  2. RHEL 7 – RHCSA に関する注意事項 – アクセス制御リスト (ACL) の作成と管理

  3. ファイル linux への同時アクセス