現代のビジネス環境で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 .
注: 特別な権限を使用して、そのディレクトリに作成された新しいファイルを実際に所有しているユーザーや、スティッキービットなどの設定を制御することもできます。 これは、グループのメンバーが互いのファイルを削除できるかどうかを制御します。ただし、これはこの説明の範囲外です。
特定のファイル(または彼のマネージャーである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を設定するための構文は次のようになります:
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を試してみませんか?今すぐ無料でダウンロードしてください。 ]