Izin di Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Halo semua. Ini adalah terjemahan artikel dari buku RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 dan EX300.

Dorongan: Saya harap artikel ini bermanfaat tidak hanya bagi pemula, tetapi juga membantu administrator yang lebih berpengalaman untuk merampingkan pengetahuan mereka.

Jadi ayo pergi.

Izin di Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Untuk mengakses file di Linux, izin digunakan. Izin ini diberikan kepada tiga objek: pemilik file, pemilik grup, dan objek lain (yaitu, semua orang). Dalam artikel ini, Anda akan mempelajari cara menerapkan izin.

Artikel ini dimulai dengan ikhtisar konsep dasar, diikuti dengan diskusi tentang izin khusus dan Daftar Kontrol Akses (ACL). Di akhir artikel ini, kami membahas pengaturan izin default melalui umask, serta mengelola atribut pengguna tambahan.

Manajemen kepemilikan file

Sebelum membahas izin, Anda harus mengetahui peran pemilik file dan direktori. Kepemilikan file dan direktori sangat penting untuk menangani izin. Di bagian ini, pertama-tama Anda akan mempelajari cara melihat pemiliknya. Anda kemudian akan mempelajari cara mengubah pemilik grup dan pengguna untuk file dan direktori.

Menampilkan pemilik file atau direktori

Di Linux, setiap file dan direktori memiliki dua pemilik: pengguna dan pemilik grup.

Pemilik ini ditetapkan ketika file atau direktori dibuat. Pengguna yang membuat file menjadi pemilik file tersebut, dan grup utama tempat pengguna tersebut berada juga menjadi pemilik file tersebut. Untuk menentukan apakah Anda, sebagai pengguna, memiliki izin untuk mengakses file atau direktori, shell memeriksa kepemilikannya.

Hal ini terjadi dalam urutan berikut:

  1. Shell memeriksa apakah Anda adalah pemilik file yang ingin Anda akses. Jika Anda pemiliknya, Anda mendapatkan izin dan shell berhenti memeriksa.
  2. Jika Anda bukan pemilik file, shell akan memeriksa apakah Anda adalah anggota grup yang memiliki izin pada file tersebut. Jika Anda adalah anggota grup ini, Anda akan mengakses file dengan izin yang telah ditetapkan grup tersebut, dan shell akan berhenti memeriksa.
  3. Jika Anda bukan pengguna atau pemilik grup, Anda diberikan hak sebagai pengguna lain (Lainnya).

Untuk melihat penetapan pemilik saat ini, Anda dapat menggunakan perintah ls-l. Perintah ini menunjukkan pengguna dan pemilik grup. Di bawah ini Anda dapat melihat pengaturan pemilik untuk direktori di direktori /home.

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

Dengan perintah ls Anda dapat menampilkan pemilik file dalam direktori tertentu. Terkadang berguna untuk mendapatkan daftar semua file di sistem yang memiliki pengguna atau grup tertentu sebagai pemiliknya. Untuk ini, Anda dapat menggunakan menemukan. Argumen temukan pengguna dapat digunakan untuk tujuan ini. Misalnya, perintah berikut mencantumkan semua file yang dimiliki oleh pengguna linda:

find / -user linda

Anda juga bisa menggunakan menemukan untuk mencari file yang memiliki grup tertentu sebagai pemiliknya.

Misalnya, perintah berikut mencari semua file milik grup Pengguna:

find / -group users

Perubahan pemilik

Untuk menerapkan izin yang sesuai, hal pertama yang harus diperhatikan adalah kepemilikan. Ada perintah untuk ini chown. Sintaks perintah ini mudah dimengerti:

chown ΠΊΡ‚ΠΎ Ρ‡Ρ‚ΠΎ

Misalnya, perintah berikut mengubah pemilik direktori /home/account menjadi pengguna linda:

chown linda /home/account

Tim chown memiliki beberapa opsi, salah satunya sangat berguna: -R. Anda dapat menebak fungsinya karena opsi ini juga tersedia untuk banyak perintah lainnya. Ini memungkinkan Anda menyetel pemilik secara rekursif, yang memungkinkan Anda menyetel pemilik direktori saat ini dan semua yang ada di bawahnya. Perintah berikut mengubah kepemilikan direktori /home dan segala sesuatu di bawahnya menjadi pengguna linda:

Sekarang pemiliknya terlihat seperti ini:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

Mari lakukan:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

Sekarang pengguna lisa telah menjadi pemilik direktori akun:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

Mengubah pemilik grup

Ada dua cara untuk mengubah kepemilikan grup. Anda dapat melakukan ini menggunakan chown, tapi ada perintah khusus bernama chgrpitu berhasil. Jika Anda ingin menggunakan perintah chown, menggunakan . ΠΈΠ»ΠΈ : di depan nama grup.

Perintah berikut mengubah pemilik grup /home/account menjadi grup akun:

chown .account /home/account

kamu bisa menggunakan chown untuk mengubah pemilik pengguna dan/atau grup dengan beberapa cara. Berikut beberapa contohnya:

  • chown lisa myfile1 menetapkan pengguna lisa sebagai pemilik myfile1.
  • chown lisa.sales file saya menetapkan pengguna lisa sebagai pemilik file myfile, dan juga menetapkan grup penjualan sebagai pemilik file yang sama.
  • chown lisa: penjualan file saya sama seperti perintah sebelumnya.
  • chown .penjualan file saya menetapkan grup penjualan sebagai pemilik file saya tanpa mengubah pemilik pengguna.
  • chown :penjualan file saya sama seperti perintah sebelumnya.

Anda dapat menggunakan perintah chgrpuntuk mengubah pemilik grup. Perhatikan contoh berikut, di mana Anda dapat menggunakannya chgrp atur pemilik direktori akun ke grup penjualan:

chgrp .sales /home/account

Seperti chown, Anda dapat menggunakan opsi tersebut -R с chgrp, serta mengubah pemilik grup secara rekursif.

Memahami Pemilik Default

Anda mungkin memperhatikan bahwa ketika pengguna membuat file, kepemilikan default diterapkan.
Pengguna yang membuat file secara otomatis menjadi pemilik file tersebut, dan grup utama pengguna tersebut secara otomatis menjadi pemilik file tersebut. Biasanya ini adalah grup yang terdaftar di file /etc/passwd sebagai grup utama pengguna. Namun, jika pengguna adalah anggota lebih dari satu grup, pengguna dapat mengubah grup utama yang efektif.

Untuk menampilkan grup utama efektif saat ini, pengguna dapat menggunakan perintah kelompok:

[root@server1 ~]# groups lisa
lisa : lisa account sales

Jika pengguna linda saat ini ingin mengubah grup utama yang efektif, dia akan menggunakan perintah barudiikuti dengan nama kelompok yang ingin ditetapkan sebagai kelompok primer baru yang efektif. Setelah menggunakan perintah baru grup utama akan aktif sampai pengguna memasukkan perintah keluar atau tidak logout.

Berikut ini menunjukkan bagaimana pengguna linda menggunakan perintah ini, dengan penjualan sebagai grup utama:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

Setelah mengubah grup utama yang efektif, semua file baru yang dibuat oleh pengguna akan memiliki grup tersebut sebagai pemilik grup. Untuk kembali ke setelan grup utama asli, gunakan keluar.

Untuk dapat menggunakan perintah baru, pengguna harus menjadi anggota grup yang ingin mereka gunakan sebagai grup utama. Selain itu, kata sandi grup dapat digunakan untuk grup menggunakan perintah gpasswd. Jika pengguna menggunakan perintah barutetapi bukan anggota grup target, shell akan meminta kata sandi grup. Setelah Anda memasukkan kata sandi grup yang benar, grup utama baru yang efektif akan dibuat.

Pengelolaan hak-hak dasar

Sistem izin Linux ditemukan pada tahun 1970-an. Karena kebutuhan komputasi terbatas pada tahun-tahun itu, sistem perizinan dasar pun sangat terbatas. Sistem izin ini menggunakan tiga izin yang dapat diterapkan pada file dan direktori. Di bagian ini, Anda akan mempelajari cara menggunakan dan mengubah izin ini.

Memahami Izin Baca, Tulis, dan Jalankan

Tiga izin dasar memungkinkan Anda membaca, menulis, dan mengeksekusi file. Efek dari izin ini berbeda ketika diterapkan pada file atau direktori. Untuk suatu file, izin baca memberi Anda hak untuk membuka file tersebut untuk dibaca. Oleh karena itu, Anda dapat membaca isinya, tetapi itu berarti komputer Anda dapat membuka file tersebut untuk melakukan sesuatu dengannya.

File program yang memerlukan akses ke perpustakaan harus, misalnya, memiliki akses baca ke perpustakaan tersebut. Oleh karena itu, izin baca adalah izin paling dasar yang Anda perlukan untuk bekerja dengan file.

Saat diterapkan pada suatu direktori, membaca memungkinkan Anda menampilkan konten direktori tersebut. Anda harus menyadari bahwa izin ini tidak mengizinkan Anda membaca file di direktori. Sistem izin Linux tidak mengetahui pewarisan, dan satu-satunya cara untuk membaca file adalah dengan menggunakan izin baca pada file tersebut.

Seperti yang mungkin bisa Anda tebak, izin menulis, jika diterapkan pada suatu file, memungkinkan penulisan ke file tersebut. Dengan kata lain, ini memungkinkan Anda mengubah konten file yang ada. Namun, itu tidak memungkinkan Anda membuat atau menghapus file baru atau mengubah izin file. Untuk melakukan ini, Anda perlu memberikan izin menulis ke direktori tempat Anda ingin membuat file. Di direktori, izin ini juga memungkinkan Anda membuat dan menghapus subdirektori baru.

Izin eksekusi adalah apa yang Anda perlukan untuk mengeksekusi file. Ini tidak akan pernah diinstal secara default, yang membuat Linux hampir sepenuhnya kebal terhadap virus. Hanya seseorang dengan izin menulis pada direktori yang dapat menerapkan izin eksekusi.

Berikut rangkuman penggunaan izin dasar:

Izin di Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Menggunakan chmod

Perintah ini digunakan untuk mengelola izin. chmod. Menggunakan chmod Anda dapat mengatur izin untuk pengguna (user), grup (group) dan lain-lain (other). Anda dapat menggunakan perintah ini dalam dua mode: mode relatif dan mode absolut. Dalam mode absolut, tiga digit digunakan untuk mengatur izin dasar.

Izin di Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Saat mengatur izin, hitung nilai yang Anda perlukan. Jika Anda ingin mengatur baca/tulis/eksekusi untuk pengguna, baca/eksekusi untuk grup, dan baca/eksekusi untuk orang lain di/somefile maka Anda menggunakan perintah berikut chmod:

chmod 755 /somefile

Ketika Anda menggunakan chmod dengan cara ini, semua izin saat ini digantikan oleh izin yang Anda tetapkan.

Jika Anda ingin mengubah izin terkait dengan izin saat ini, Anda dapat menggunakan chmod dalam mode relatif. Menggunakan chmod dalam mode relatif Anda bekerja dengan tiga indikator untuk menunjukkan apa yang ingin Anda lakukan:

  1. Pertama, Anda menentukan siapa yang ingin Anda ubah izinnya. Untuk melakukan ini, Anda dapat memilih antara pengguna (u), grup (g) dan lain-lain (o).
  2. Anda kemudian menggunakan pernyataan untuk menambah atau menghapus izin dari mode saat ini, atau mengaturnya secara mutlak.
  3. Pada akhirnya Anda gunakan r, w ΠΈ xuntuk menentukan izin mana yang ingin Anda atur.

Saat mengubah izin dalam mode relatif, Anda dapat melewati bagian "ke" untuk menambah atau menghapus izin untuk semua objek. Misalnya, perintah ini menambahkan izin eksekusi untuk semua pengguna:

chmod +x somefile

Saat bekerja dalam mode relatif, Anda juga dapat menggunakan perintah yang lebih kompleks. Misalnya, perintah ini menambahkan izin menulis ke grup dan menghapus izin membaca untuk grup lain:

chmod g+w,o-r somefile

Bila menggunakan chmod -R o+rx /data Anda menetapkan izin eksekusi untuk semua direktori serta file di direktori /data. Untuk mengatur izin eksekusi hanya untuk direktori dan bukan untuk file, gunakan chmod -R o+ rX /data.

Huruf besar X memastikan bahwa file tidak mendapatkan izin eksekusi kecuali file tersebut telah menetapkan izin eksekusi untuk beberapa objek. Hal ini menjadikan X cara yang lebih cerdas untuk menangani izin eksekusi; ini akan menghindari pengaturan izin ini pada file yang tidak diperlukan.

Hak yang diperluas

Selain izin dasar yang baru saja Anda baca, Linux juga memiliki serangkaian izin lanjutan. Ini bukan izin yang Anda tetapkan secara default, namun terkadang memberikan tambahan yang berguna. Di bagian ini, Anda akan mempelajari apa itu dan cara menyiapkannya.

Memahami Izin Perpanjangan SUID, GUID, dan Sticky Bit

Ada tiga izin lanjutan. Yang pertama adalah izin untuk menyetel pengenal pengguna (SUID). Dalam beberapa kasus khusus, Anda dapat menerapkan izin ini ke file yang dapat dieksekusi. Secara default, pengguna yang menjalankan file yang dapat dieksekusi menjalankan file tersebut dengan izin mereka sendiri.

Untuk pengguna biasa, ini biasanya berarti penggunaan program dibatasi. Namun, dalam beberapa kasus, pengguna memerlukan izin khusus, hanya untuk melakukan tugas tertentu.

Misalnya, situasi ketika pengguna perlu mengubah kata sandinya. Untuk melakukan ini, pengguna harus menulis kata sandi barunya ke file /etc/shadow. Namun, file ini tidak dapat ditulis oleh pengguna non-root:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

Izin SUID menawarkan solusi untuk masalah ini. Utilitas /usr/bin/passwd menggunakan izin ini secara default. Ini berarti bahwa ketika mengubah kata sandi, pengguna untuk sementara menjadi root, yang memungkinkan dia untuk menulis ke file /etc/shadow. Anda dapat melihat izin SUID dengan ls-l sebagai s dalam posisi yang biasanya Anda harapkan untuk dilihat x untuk izin khusus:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

Izin SUID mungkin terlihat berguna (dan dalam beberapa kasus memang berguna), namun pada saat yang sama berpotensi berbahaya. Jika tidak diterapkan dengan benar, Anda dapat memberikan izin root secara tidak sengaja. Oleh karena itu, saya menyarankan untuk menggunakannya hanya dengan sangat hati-hati.

Kebanyakan administrator tidak perlu menggunakannya; Anda hanya akan melihatnya di beberapa file yang seharusnya diatur oleh sistem operasi secara default.

Izin khusus kedua adalah pengidentifikasi grup (SGID). Izin ini memiliki dua efek. Ketika diterapkan pada file yang dapat dieksekusi, ini memberi pengguna yang mengeksekusi file izin dari pemilik grup file. Jadi SGID bisa melakukan hal yang kurang lebih sama seperti SUID. Namun, SGID praktis tidak digunakan untuk tujuan ini.

Seperti halnya izin SUID, SGID diterapkan ke beberapa file sistem sebagai pengaturan default.

Saat diterapkan ke suatu direktori, SGID dapat berguna karena Anda dapat menggunakannya untuk menyetel pemilik grup default untuk file dan subdirektori yang dibuat di direktori tersebut. Secara default, saat pengguna membuat file, grup utama efektif mereka ditetapkan sebagai pemilik grup untuk file tersebut.

Hal ini tidak selalu berguna, terutama karena grup utama pengguna Red Hat/CentOS disetel ke grup dengan nama yang sama dengan pengguna, dan pengguna adalah satu-satunya anggotanya. Jadi, secara default, file yang dibuat pengguna akan dibagikan secara massal.

Bayangkan sebuah situasi di mana pengguna linda dan lori bekerja di bidang akuntansi dan menjadi anggota suatu grup rekening. Secara default, pengguna ini adalah anggota grup pribadi yang mana mereka adalah satu-satunya anggotanya. Namun, kedua pengguna tersebut adalah anggota grup akun, tetapi juga sebagai parameter grup sekunder.

Situasi defaultnya adalah ketika salah satu pengguna ini membuat file, grup utama menjadi pemiliknya. Oleh karena itu, secara default linda tidak dapat mengakses file yang dibuat oleh lori, begitu pula sebaliknya. Namun, jika Anda membuat direktori grup bersama (misalnya /groups/account) dan memastikan bahwa izin SGID diterapkan ke direktori tersebut dan akun grup ditetapkan sebagai pemilik grup untuk direktori tersebut, semua file yang dibuat di direktori tersebut dan semua dari subdirektorinya, dapatkan juga akun grup sebagai pemilik grup secara default.

Oleh karena itu, izin SGID adalah izin yang sangat berguna untuk disetel pada direktori grup publik.

Izin SGID ditampilkan dalam output ls-l sebagai s pada posisi di mana Anda biasanya mendapatkan izin untuk mengeksekusi grup:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

Izin khusus ketiga adalah bagian yang lengket. Izin ini berguna untuk melindungi file dari penghapusan yang tidak disengaja di lingkungan di mana banyak pengguna memiliki akses tulis ke direktori yang sama. Jika bit lengket digunakan, pengguna hanya dapat menghapus file jika mereka adalah pengguna pemilik file atau direktori yang berisi file tersebut. Oleh karena itu, izin ini digunakan sebagai izin default untuk direktori /tmp dan juga dapat berguna untuk direktori grup publik.

Tanpa sedikit pun, jika pengguna dapat membuat file di suatu direktori, mereka juga dapat menghapus file dari direktori tersebut. Dalam lingkungan grup publik, hal ini dapat mengganggu. Bayangkan pengguna linda dan lori, yang keduanya memiliki izin menulis ke direktori /data/account dan mendapatkan izin tersebut dengan menjadi anggota grup akun. Oleh karena itu, linda dapat menghapus file yang dibuat oleh lori dan sebaliknya.

Saat Anda menerapkan bit lengket, pengguna hanya dapat menghapus file jika salah satu kondisi berikut ini benar:

  • Pengguna adalah pemilik file;
  • Pengguna adalah pemilik direktori tempat file tersebut berada.

Bila menggunakan ls-l, Anda dapat melihat bagian yang lengket sebagai t di posisi di mana Anda biasanya melihat izin eksekusi untuk orang lain:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

Menerapkan hak yang diperluas

Untuk mengaplikasikan SUID, SGID dan sticky bit juga bisa Anda gunakan chmod. SUID memiliki nilai numerik 4, SGID memiliki nilai numerik 2, dan sticky bit memiliki nilai numerik 1.

Jika Anda ingin menerapkan izin ini, Anda perlu menambahkan argumen empat digit chmod, yang digit pertamanya mengacu pada izin khusus. Baris berikut, misalnya, akan menambahkan izin SGID ke direktori dan mengatur rwx untuk pengguna dan rx untuk grup dan lainnya:

chmod 2755 /somedir

Ini agak tidak praktis jika Anda perlu melihat izin saat ini yang ditetapkan sebelum bekerja chmod dalam mode absolut. (Anda berisiko menimpa izin jika tidak melakukannya.) Jadi saya sarankan menjalankan dalam mode relatif jika Anda perlu menerapkan salah satu izin khusus:

  1. Untuk penggunaan SUID chmod u+s.
  2. Untuk penggunaan SGID chmod g+s.
  3. Untuk penggunaan bit lengket chmod + t, diikuti dengan nama file atau direktori yang ingin Anda atur izinnya.

Tabel ini merangkum semua yang perlu Anda ketahui tentang pengelolaan izin khusus.

Izin di Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Contoh bekerja dengan hak khusus

Dalam contoh ini, Anda menggunakan izin khusus untuk memudahkan anggota grup berbagi file di direktori grup bersama. Anda menetapkan bit ID ke ID grup yang ditetapkan serta bit lengket, dan Anda melihat bahwa setelah ditetapkan, fitur ditambahkan untuk memudahkan anggota grup untuk bekerja sama.

  1. Buka terminal di mana Anda adalah pengguna linda. Anda dapat membuat pengguna dengan perintah tambahkan pengguna linda, tambahkan kata sandi sandi linda.
  2. Buat direktori /data di root dan subdirektori /data/sales dengan perintah mkdir -p /data/sales. Menyelesaikan cd /data/penjualanuntuk pergi ke direktori penjualan. Menyelesaikan sentuh linda1 ΠΈ sentuh linda2untuk membuat dua file kosong milik linda.
  3. Menjalankan su-lisa untuk mengalihkan pengguna saat ini ke pengguna lisa, yang juga merupakan anggota grup penjualan.
  4. Menjalankan cd /data/penjualan dan dari direktori itu jalankan ls-l. Anda akan melihat dua file yang dibuat oleh pengguna linda dan milik grup linda. Menyelesaikan rm -f linda*. Ini akan menghapus kedua file.
  5. Menjalankan sentuh lisa1 ΠΈ sentuh lisa2untuk membuat dua file milik user lisa.
  6. Menjalankan su- untuk meningkatkan hak istimewa Anda untuk melakukan root.
  7. Menjalankan chmod g+s,o+t /data/salesuntuk mengatur bit pengidentifikasi grup (GUID) serta bit lengket di direktori grup bersama.
  8. Menjalankan su-linda. Lalu lakukan sentuh linda3 ΠΈ sentuh linda4. Anda sekarang akan melihat bahwa dua file yang Anda buat adalah milik grup penjualan, yang merupakan pemilik grup dari direktori /data/sales.
  9. Menjalankan rm -rf lisa*. Bit lengket mencegah file-file ini dihapus atas nama pengguna linda, karena Anda bukan pemilik file-file ini. Perhatikan bahwa jika pengguna linda adalah pemilik direktori /data/sales, mereka tetap dapat menghapus file-file ini!

Manajemen ACL (setfacl, getfacl) di Linux

Meskipun izin tambahan yang dibahas di atas menambahkan fungsionalitas yang berguna pada cara Linux menangani izin, hal ini tidak memungkinkan Anda memberikan izin kepada lebih dari satu pengguna atau grup dalam file yang sama.

Daftar kontrol akses menawarkan fitur ini. Selain itu, mereka memungkinkan administrator untuk mengatur izin default dengan cara yang rumit, di mana izin yang ditetapkan mungkin berbeda dari satu direktori ke direktori lainnya.

Memahami ACL

Meskipun subsistem ACL menambahkan fungsionalitas yang hebat ke server Anda, subsistem ini memiliki satu kelemahan: tidak semua utilitas mendukungnya. Oleh karena itu, Anda mungkin kehilangan pengaturan ACL saat menyalin atau memindahkan file, dan perangkat lunak cadangan Anda mungkin gagal mencadangkan pengaturan ACL Anda.

Utilitas tar tidak mendukung ACL. Untuk memastikan pengaturan ACL tidak hilang saat Anda membuat cadangan, gunakan star bukannya tar. star bekerja dengan opsi yang sama seperti tar; itu hanya menambahkan dukungan untuk pengaturan ACL.

Anda juga dapat membuat cadangan ACL dengan getfacl, yang dapat dipulihkan menggunakan perintah setfacl. Untuk membuat cadangan, gunakan getfacl -R /direktori > file.acls. Untuk memulihkan pengaturan dari file cadangan, gunakan setfacl --restore=file.acl.

Kurangnya dukungan beberapa alat seharusnya tidak menjadi masalah. ACL sering diterapkan pada direktori sebagai ukuran struktural, bukan pada file individual.
Oleh karena itu, jumlahnya tidak akan banyak, tetapi hanya sedikit, yang diterapkan di tempat pintar dalam sistem file. Oleh karena itu, memulihkan ACL asli yang Anda gunakan relatif mudah, meskipun perangkat lunak cadangan Anda tidak mendukungnya.

Mempersiapkan sistem file untuk ACL

Sebelum Anda mulai bekerja dengan ACL, Anda mungkin perlu mempersiapkan sistem file Anda untuk mendukung ACL. Karena metadata sistem file perlu diperluas, tidak selalu ada dukungan default untuk ACL di sistem file. Jika Anda mendapatkan pesan "operasi tidak didukung" saat menyiapkan ACL untuk sistem file, sistem file Anda mungkin tidak mendukung ACL.

Untuk memperbaikinya, Anda perlu menambahkan opsi dudukan acl di /etc/fstab sehingga sistem file di-mount dengan dukungan ACL secara default.

Mengubah dan melihat pengaturan ACL dengan setfacl dan getfacl

Untuk mengatur ACL Anda memerlukan perintah setfacl. Untuk melihat pengaturan ACL saat ini, Anda perlu getfacl. Tim ls-l tidak menunjukkan ACL yang ada; itu hanya menampilkan tanda + setelah daftar izin, yang menunjukkan bahwa ACL juga berlaku untuk file tersebut.

Sebelum menyiapkan ACL, sebaiknya tunjukkan pengaturan ACL saat ini getfacl. Pada contoh di bawah, Anda dapat melihat izin saat ini, seperti yang ditunjukkan dengan ls-l, dan juga seperti yang ditunjukkan dengan getfacl. Jika Anda perhatikan lebih dekat, Anda akan melihat bahwa informasi yang ditampilkan sama persis.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Sebagai hasil dari menjalankan perintah getfacl di bawah ini Anda dapat melihat bahwa izin ditampilkan untuk tiga objek berbeda: pengguna, grup, dan lainnya. Sekarang mari tambahkan ACL untuk memberikan izin membaca dan mengeksekusi ke grup penjualan juga. perintah untuk ini setfacl -mg:penjualan:rx /dir. Di tim ini -m menunjukkan bahwa pengaturan ACL saat ini perlu diubah. Setelah itu g:penjualan:rx memberitahu perintah untuk mengatur ACL baca-eksekusi (rx) untuk grup (g) penjualan. Di bawah ini Anda dapat melihat seperti apa perintahnya, serta keluaran dari perintah getfacl setelah mengubah pengaturan ACL saat ini.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Sekarang setelah Anda memahami cara menyiapkan ACL grup, mudah untuk memahami ACL bagi pengguna dan pengguna lain. Misalnya perintah setfacl -mu:linda:rwx /data memberikan izin kepada pengguna linda di direktori /data tanpa menjadikannya pemilik atau mengubah penugasan pemilik saat ini.

Tim setfacl memiliki banyak fitur dan pilihan. Salah satu opsi yang sangat penting, parameternya -R. Jika digunakan, opsi tersebut membuat ACL disetel untuk semua file dan subdirektori yang saat ini ada di direktori tempat Anda menyetel ACL. Disarankan agar Anda selalu menggunakan opsi ini ketika mengubah ACL untuk direktori yang ada.

Bekerja dengan ACL Default

Salah satu keuntungan menggunakan ACL adalah Anda dapat memberikan izin kepada beberapa pengguna atau grup dalam satu direktori. Manfaat lainnya adalah Anda dapat mengaktifkan pewarisan dengan menggunakan ACL default.

Dengan mengatur ACL default, Anda menentukan izin yang akan ditetapkan untuk semua item baru yang dibuat di direktori. Sadarilah bahwa ACL default tidak mengubah izin pada file dan subdirektori yang ada. Untuk mengubahnya, Anda perlu menambahkan ACL normal juga!

Ini penting untuk diketahui. Jika Anda ingin menggunakan ACL untuk mengonfigurasi beberapa pengguna atau grup untuk mengakses direktori yang sama, Anda harus mengatur ACL dua kali. Penggunaan pertama setfacl -R -muntuk mengubah ACL untuk file saat ini. Kemudian gunakan setfacl-md:untuk mengurus semua elemen baru yang juga akan dibuat.

Untuk mengatur ACL default Anda hanya perlu menambahkan opsi d setelah opsi -m (urutan itu penting!). Jadi gunakan setfacl -md:g:penjualan:rx /datajika Anda ingin penjualan grup membaca dan mengeksekusi apa pun yang pernah dibuat di direktori /data.

Saat menggunakan ACL default, mungkin berguna juga untuk mengatur ACL untuk yang lain. Ini biasanya tidak masuk akal karena Anda juga dapat mengubah izin untuk orang lain yang menggunakannya chmod. Namun, apa yang tidak bisa Anda lakukan chmod, adalah untuk menentukan hak yang harus diberikan kepada pengguna lain untuk setiap file baru yang pernah dibuat. Jika Anda ingin mencegah orang lain mendapatkan izin apa pun pada apa pun yang dibuat di /data misalnya gunakan setfacl -md:o::- /data.

ACL dan izin normal tidak selalu terintegrasi dengan baik. Masalah dapat timbul jika Anda menerapkan ACL default ke direktori, kemudian item ditambahkan ke direktori tersebut, dan kemudian mencoba mengubah izin normal. Perubahan yang berlaku pada izin normal tidak akan tercermin dengan baik dalam gambaran umum ACL. Untuk menghindari masalah, atur izin normal terlebih dahulu, lalu atur ACL default (dan cobalah untuk tidak mengubahnya lagi setelah itu).

Contoh Peningkatan Manajemen Hak Menggunakan ACL

Dalam contoh ini, Anda akan melanjutkan dengan direktori /data/account dan /data/sales yang Anda buat sebelumnya. Pada contoh sebelumnya, Anda memastikan bahwa grup penjualan memiliki izin di /data/sales dan grup akun memiliki izin di /data/akun.

Pertama, pastikan grup akun mendapat izin baca di direktori /data/sales dan grup penjualan mendapat izin baca di direktori /data/akun.

Anda kemudian mengatur ACL default untuk memastikan semua file baru memiliki izin yang benar untuk semua item baru.

  1. Buka terminal.
  2. Menjalankan setfacl -mg:akun:rx /data/sales ΠΈ setfacl -mg:penjualan:rx /data/akun.
  3. Menjalankan getfacluntuk memastikan izin diatur sesuai keinginan Anda.
  4. Menjalankan setfacl -md:g:akun:rwx,g:penjualan:rx /data/penjualanuntuk mengatur ACL default untuk direktori penjualan.
  5. Tambahkan ACL default untuk direktori /data/akun menggunakan setfacl -md:g:penjualan:rwx,g:akun:rx /data/akun.
  6. Verifikasi bahwa pengaturan ACL berlaku dengan menambahkan file baru ke /data/sales. Menyelesaikan sentuh /data/penjualan/file baru dan lakukan getfacl /data/sales/newfile untuk memeriksa izin saat ini.

Mengatur izin default dengan umask

Di atas, Anda mempelajari cara bekerja dengan ACL default. Jika Anda tidak menggunakan ACL, ada opsi shell yang menentukan izin default yang akan Anda dapatkan: umask (topeng terbalik). Di bagian ini, Anda akan mempelajari cara mengubah izin default dengan umask.

Anda mungkin memperhatikan bahwa saat Anda membuat file baru, beberapa izin default ditetapkan. Izin ini ditentukan oleh pengaturan umask. Pengaturan shell ini berlaku untuk semua pengguna saat logon. Dalam parameter umask nilai numerik digunakan, yang dikurangi dari izin maksimum yang dapat diatur secara otomatis untuk file; setting maksimal untuk file adalah 666 dan untuk direktori adalah 777.

Namun, beberapa pengecualian berlaku untuk aturan ini. Anda dapat menemukan ikhtisar lengkap pengaturan umask pada tabel di bawah ini.

Dari angka-angka yang digunakan di umask, seperti halnya argumen numerik untuk perintah chmod, digit pertama mengacu pada izin pengguna, digit kedua mengacu pada izin grup, dan digit terakhir mengacu pada izin default yang ditetapkan untuk orang lain. Arti umask defaultnya 022 memberikan 644 untuk semua file baru dan 755 untuk semua direktori baru yang dibuat di server Anda.

Ikhtisar lengkap semua nilai numerik umask dan hasilnya pada tabel di bawah ini.

Izin di Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Cara mudah untuk melihat cara kerja pengaturan umask adalah sebagai berikut: mulai dengan izin default file yang disetel ke 666 dan kurangi umask untuk mendapatkan izin yang efektif. Lakukan hal yang sama untuk direktori dan izin defaultnya yaitu 777.

Ada dua cara untuk mengubah pengaturan umask: untuk semua pengguna dan untuk pengguna individu. Jika Anda ingin mengatur umask untuk semua pengguna, Anda harus memastikan bahwa pengaturan umask diperhitungkan saat memulai file lingkungan shell, seperti yang ditentukan di /etc/profile. Pendekatan yang benar adalah dengan membuat skrip shell bernama umask.sh di direktori /etc/profile.d dan tentukan umask yang ingin Anda gunakan dalam skrip shell tersebut. Jika umask diubah dalam file ini, itu diterapkan ke semua pengguna setelah masuk ke server.

Alternatif untuk mengatur umask melalui /etc/profile dan file terkait, yang berlaku untuk semua pengguna yang masuk, adalah dengan mengubah pengaturan umask dalam file bernama .profile yang dibuat di direktori home masing-masing pengguna.

Pengaturan yang diterapkan dalam file ini hanya berlaku untuk masing-masing pengguna; maka ini adalah metode yang bagus jika Anda memerlukan lebih banyak detail. Saya pribadi menyukai fitur ini untuk mengubah umask default untuk pengguna root menjadi 027 sementara pengguna normal berjalan dengan umask default 022.

Bekerja dengan atribut pengguna yang diperluas

Ini adalah bagian terakhir tentang izin Linux.

Saat bekerja dengan izin, selalu ada hubungan antara objek pengguna atau grup dan izin yang dimiliki objek pengguna atau grup pada file atau direktori. Metode alternatif untuk melindungi file di server Linux adalah dengan bekerja dengan atribut.
Atribut melakukan tugasnya terlepas dari pengguna yang mengakses file.

Seperti halnya ACL, atribut file mungkin perlu menyertakan opsi meningkat.

Ini adalah sebuah pilihan pengguna_xattr. Jika Anda mendapatkan pesan "operasi tidak didukung" saat bekerja dengan atribut pengguna yang diperluas, pastikan untuk menyetel parameternya meningkat di /etc/fstab.

Banyak atribut yang didokumentasikan. Beberapa atribut tersedia tetapi belum diterapkan. Jangan gunakan itu; mereka tidak akan membawakanmu apa pun.

Berikut adalah atribut paling berguna yang dapat Anda terapkan:

A Atribut ini memastikan waktu akses file file tidak berubah.
Biasanya, setiap kali file dibuka, waktu akses file harus dicatat dalam metadata file. Hal ini berdampak negatif terhadap kinerja; jadi untuk file yang sering diakses, atributnya A dapat digunakan untuk menonaktifkan fitur ini.

a Atribut ini memungkinkan Anda menambahkan tetapi tidak menghapus file.

c Jika Anda menggunakan sistem file yang mendukung kompresi tingkat volume, atribut file ini memastikan bahwa file dikompresi saat pertama kali mekanisme kompresi diaktifkan.

D Atribut ini memastikan bahwa perubahan pada file segera ditulis ke disk, bukan di-cache terlebih dahulu. Ini adalah atribut yang berguna pada file database penting untuk memastikan file tersebut tidak hilang di antara cache file dan hard drive.

d Atribut ini memastikan bahwa file tidak akan disimpan dalam cadangan di mana utilitas dump digunakan.

I Atribut ini mengaktifkan pengindeksan untuk direktori yang mengaktifkannya. Ini memberikan akses file yang lebih cepat untuk sistem file primitif seperti Ext3 yang tidak menggunakan database B-tree untuk akses file yang cepat.

i Atribut ini membuat file tidak dapat diubah. Oleh karena itu, tidak ada perubahan yang dapat dilakukan pada file tersebut, yang berguna untuk file yang memerlukan perlindungan tambahan.

j Atribut ini memastikan bahwa, pada sistem file ext3, file tersebut pertama kali ditulis ke jurnal dan kemudian ke blok data di hard disk.

s Timpa blok tempat file disimpan ke 0s setelah menghapus file. Hal ini memastikan bahwa file tidak dapat dipulihkan setelah dihapus.

u Atribut ini menyimpan informasi tentang penghapusan. Ini memungkinkan Anda mengembangkan utilitas yang bekerja dengan informasi ini untuk menyelamatkan file yang terhapus.

Jika Anda ingin menerapkan atribut, Anda dapat menggunakan perintah obrolan. Misalnya, gunakan chattr +s suatu fileuntuk menerapkan atribut ke file tertentu. Perlu menghapus atribut? Kemudian gunakan chattr -s suatu filedan itu akan dihapus. Untuk mendapatkan gambaran umum tentang semua atribut yang diterapkan saat ini, gunakan perintah lsattr.

Ringkasan

Di artikel ini, Anda mempelajari cara bekerja dengan izin. Anda membaca tentang tiga izin dasar, izin lanjutan, dan cara menerapkan ACL pada sistem file. Anda juga mempelajari cara menggunakan opsi umask untuk menerapkan izin default. Di akhir artikel ini, Anda mempelajari cara menggunakan atribut yang diperluas pengguna untuk menerapkan lapisan keamanan sistem file tambahan.

Jika Anda menyukai terjemahan ini, silakan tulis di komentar. Akan ada lebih banyak motivasi untuk membuat terjemahan yang bermanfaat.

Memperbaiki beberapa kesalahan ketik dan kesalahan tata bahasa pada artikel. Mengurangi beberapa paragraf besar menjadi paragraf yang lebih kecil agar lebih mudah dibaca.

Alih-alih "Hanya seseorang dengan hak administratif atas direktori yang dapat menerapkan izin eksekusi." diperbaiki menjadi "Hanya seseorang dengan izin menulis di direktori yang dapat menerapkan izin eksekusi.", yang akan lebih tepat.

Terima kasih atas komentarnya berez.

Diganti:
Jika Anda bukan pemilik pengguna tersebut, shell akan memeriksa apakah Anda adalah anggota suatu grup, yang juga dikenal sebagai grup file.

Pada:
Jika Anda bukan pemilik file, shell akan memeriksa apakah Anda adalah anggota grup yang memiliki izin pada file tersebut. Jika Anda adalah anggota grup ini, Anda akan mengakses file dengan izin yang telah ditetapkan grup tersebut, dan shell akan berhenti memeriksa.

Terima kasih atas komentarmu Bajak Laut Kripto

Sumber: www.habr.com

Tambah komentar