GNU/Linux >> Belajar Linux >  >> Linux

Pengantar Daftar Kontrol Akses Linux (ACL)

Di antara tantangan mengelola Linux di lingkungan bisnis modern adalah harapan bahwa kita dapat dan harus mengelola siapa yang memiliki akses ke informasi apa. Sekali waktu, satu-satunya orang yang membutuhkan akses ke sistem file Linux dapat dikategorikan secara umum:melalui izin sistem file Linux.

Meninjau dasar-dasarnya

Sistem file Linux memberi kita tiga jenis izin. Berikut adalah ulasan yang disederhanakan:

  • U ser (atau pemilik pengguna)
  • G roup (atau grup pemilik)
  • O di sana (semua orang)

Dengan izin ini, kami dapat memberikan tiga (sebenarnya lima, tetapi kami akan menyelesaikannya dalam satu menit) jenis akses:

  • B baca
  • A ritus
  • eX ecute

Tingkat akses ini seringkali memadai dalam banyak kasus. Katakanlah Anda memiliki direktori tempat file dari departemen akuntansi berada. Anda dapat menyetel izin ini ke:

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

Pengguna jasa akuntansi (pemilik pengguna) dapat membaca dan menulis ke direktori, dan anggota accounting grup (atau grup pemilik) dapat membaca dan menulis. Namun, orang lain (pengguna yang tidak berada di departemen akuntansi) dapat melihat dan menjalankan apa yang ada di sana, yang mungkin dianggap sebagai ide yang buruk oleh beberapa orang.

[ Juga populer: Dasar-dasar sysadmin Linux:Pengelolaan akun pengguna ]

Jadi, kami mungkin mengubah izin menjadi ini:

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

Catatan: Anda juga dapat menggunakan izin khusus untuk mengontrol setelan seperti siapa yang sebenarnya memiliki file baru yang dibuat di direktori itu, serta sticky bit yang mengontrol apakah anggota grup dapat menghapus file satu sama lain. Namun, itu di luar cakupan diskusi ini.

Melihat ACL saat ini

Bagaimana jika Anda memiliki magang akuntansi (Kenny) yang harus dapat membaca file tertentu (atau bahkan hanya file yang dimiliki oleh Fred, manajernya)? Atau mungkin orang-orang di bagian penjualan juga membutuhkan akses ke accounting file pemilik untuk membuat faktur untuk tim Fred untuk menagih pelanggan, tetapi Anda tidak ingin tim penjualan melihat laporan lain yang dihasilkan tim Fred. Situasi ini dapat menjadi rumit karena, dengan izin biasa, setiap file dan direktori hanya dapat memiliki satu pengguna dan pemilik grup dalam satu waktu. Jenis situasi inilah yang dimaksudkan untuk diselesaikan oleh Daftar Kontrol Akses Linux (ACL).

ACL memungkinkan kami untuk menerapkan serangkaian izin yang lebih spesifik ke file atau direktori tanpa (harus) mengubah kepemilikan dan izin dasar. Mereka mengizinkan kami untuk "mengatasi" akses untuk pengguna atau grup lain.

Kita dapat melihat ACL saat ini menggunakan getfacl perintah:

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

Kita dapat melihat bahwa saat ini, tidak ada ACL pada direktori ini karena satu-satunya izin yang terdaftar adalah untuk pengguna, grup, dan lainnya. Dalam hal ini, itulah yang diharapkan, karena saya baru saja membuat direktori ini di lab dan belum melakukan apa pun selain menetapkan kepemilikan. Jadi, mari kita mulai dengan menambahkan ACL default:

Menyetel ACL

Sintaks untuk menyetel ACL terlihat seperti ini:

setfacl [option] [action/specification] file

'Tindakan'nya adalah -m (modifikasi) atau -x (hapus), dan spesifikasinya adalah pengguna atau grup diikuti dengan izin yang ingin kita atur. Dalam hal ini, kami akan menggunakan opsi -d (default). Jadi, untuk menetapkan ACL default untuk direktori ini, kita akan menjalankan:

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

Setelah itu kita sekarang dapat melihat info ACL default untuk direktori itu:

[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::---

Bagaimana jika Fred membuat file di direktori itu?

[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-

Apa yang terjadi jika Kenny mencoba membuat file? Anda mungkin dapat menebaknya karena kenny tidak ada dalam accounting grup, dia tidak akan memiliki izin. Namun kami ingin Kenny memiliki pengalaman yang baik saat bekerja dengan kami, jadi kami perlu memberinya kemampuan untuk melihat file apa saja yang ada di accounting direktori, dan kami ingin dia dapat membuat file baru:

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

Sejauh ini baik. Tetapi bagaimana jika kita tidak ingin pengguna ini membuat file di accounting direktori? Sebagai gantinya, kami hanya ingin membiarkan dia membaca file di sana, dan dia dapat membuat file baru di foldernya sendiri.

[ Artikel terkait: Dasar-dasar sysadmin Linux:Pengelolaan akun pengguna dengan UID dan GID ]

Kita bisa mengatur akses Kenny di accounting foldernya seperti ini:

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

Sekarang kita membuat Kenny foldernya sendiri, memberinya kepemilikan, dan kemudian membuat accounting kelompokkan pemilik grup sehingga orang lain di accounting grup dapat melihat apa yang ada di sana:

[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

Anda telah membuat folder di dalam accounting grup yang dimiliki oleh pengguna kenny . Dia sekarang dapat melihat folder akuntansi, tetapi hanya membuat file di foldernya sendiri:

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

Perhatikan bahwa karena folder tersebut dimiliki oleh accounting grup, siapa pun di grup itu dapat meletakkan file di sana. Karena kita berurusan dengan magang, faktor ini mungkin baik-baik saja. Namun, bagaimana jika kita memberi Kenny promosi ke kepala auditor dan ingin merahasiakan pekerjaannya dari Fred?

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

Bagaimana jika kita tidak menginginkan siapa pun untuk melihat apa yang sedang dikerjakan Kenny?

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

Catatan: Saat kita ingin menyetel grup ACL, kita perlu menentukan ini dengan meletakkan g: di depan nama grup. Untuk pengguna, cukup ubah g ke u , tapi setfacl akan menganggap kita berbicara tentang pengguna jika Anda tidak meletakkan apa pun di tempat itu.

Kami masih harus menghapus izin dasar untuk pemilik grup sehingga tim akuntansi lainnya tidak dapat mengintip laporan Kenny:

[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

Sekarang kita dapat mengatur siapa lagi yang dapat melihat atau menulis ke folder Kenny tanpa mengubah kepemilikan. Mari beri CEO (Lisa, yang bukan anggota tim akuntansi, dan tidak akan memiliki akses ke folder lainnya) akses ke barang-barang Kenny:

[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:---

Perhatikan lagi bahwa izin pemilik grup tetap terbuka lebar, tetapi grup akuntansi (yang masih pemiliknya), tidak lagi memiliki akses ke folder itu. Jadi, siapa pemiliknya?

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

Bagian ini rumit. Sangat berguna untuk mengetahui bahwa kami dapat mengambil izin pemilik tanpa mengubah kepemilikan, tetapi Anda mungkin ingin mempertimbangkan apakah ini hasil yang Anda inginkan.

Kesimpulan

Jadi ini adalah dasar-dasarnya. ACL dapat membingungkan, jadi saya mendorong Anda untuk memberikan halaman manual untuk setfacl dan getfacl bacaan yang bagus. Ada banyak hal menarik dan berguna yang dapat Anda lakukan dengan alat ini, tetapi mudah-mudahan, Anda sekarang cukup memahami untuk memulai.

[ Ingin mencoba Red Hat Enterprise Linux? Unduh sekarang secara gratis. ]


Linux
  1. Pengantar perintah Linux chgrp dan newgrp

  2. Daftar anggota grup di Linux

  3. akses bersamaan ke file linux

  1. Daftar kontrol akses dan drive eksternal di Linux:Apa yang perlu Anda ketahui

  2. Pengenalan Nmap di Kali Linux

  3. RHEL 7 – Catatan RHCSA – Membuat dan mengelola Daftar Kontrol Akses (ACL)

  1. Pengantar bpftrace untuk Linux

  2. Cara Mengonfigurasi ACL (Access Control Lists) di Sistem File Linux

  3. UNIX/Linux :Dasar-dasar daftar kontrol akses (ACL)