Kebenaran dalam Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

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

Tolak: Saya harap artikel itu berguna bukan sahaja untuk pemula, tetapi juga akan membantu pentadbir yang lebih berpengalaman memperkemas pengetahuan mereka.

Jadi mari kita pergi.

Kebenaran dalam Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Untuk mengakses fail dalam Linux, kebenaran digunakan. Kebenaran ini diberikan kepada tiga objek: pemilik fail, pemilik kumpulan dan objek lain (iaitu, orang lain). Dalam artikel ini, anda akan belajar cara menggunakan kebenaran.

Artikel ini bermula dengan gambaran keseluruhan konsep asas, diikuti dengan perbincangan mengenai kebenaran Khas dan Senarai Kawalan Akses (ACL). Pada penghujung artikel ini, kami meliputi penetapan kebenaran lalai melalui umask, serta mengurus atribut pengguna lanjutan.

Pengurusan pemilikan fail

Sebelum membincangkan kebenaran, anda harus mengetahui peranan pemilik fail dan direktori. Pemilikan fail dan direktori adalah penting untuk menangani kebenaran. Dalam bahagian ini, anda akan belajar dahulu cara anda boleh melihat pemiliknya. Anda kemudian akan belajar cara menukar pemilik kumpulan dan pengguna untuk fail dan direktori.

Memaparkan pemilik fail atau direktori

Di Linux, setiap fail dan setiap direktori mempunyai dua pemilik: pengguna dan pemilik kumpulan.

Pemilik ini ditetapkan apabila fail atau direktori dibuat. Pengguna yang mencipta fail menjadi pemilik fail itu dan kumpulan utama yang dimiliki oleh pengguna yang sama juga menjadi pemilik fail tersebut. Untuk menentukan sama ada anda, sebagai pengguna, mempunyai kebenaran untuk mengakses fail atau direktori, shell menyemak pemilikan.

Ini berlaku dalam susunan berikut:

  1. Shell menyemak untuk melihat sama ada anda pemilik fail yang ingin anda akses. Jika anda pemilik, anda mendapat kebenaran dan shell berhenti menyemak.
  2. Jika anda bukan pemilik fail, shell akan menyemak sama ada anda ahli kumpulan yang mempunyai kebenaran pada fail tersebut. Jika anda ahli kumpulan ini, anda akan mengakses fail dengan kebenaran yang telah ditetapkan oleh kumpulan dan shell akan berhenti menyemak.
  3. Jika anda bukan pengguna mahupun pemilik sesebuah kumpulan, anda diberi hak pengguna lain (Lain-lain).

Untuk melihat tugasan pemilik semasa, anda boleh menggunakan arahan ls-l. Perintah ini menunjukkan pengguna dan pemilik kumpulan. Di bawah anda boleh melihat tetapan pemilik untuk direktori dalam 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 arahan ls anda boleh memaparkan pemilik fail dalam direktori tertentu. Kadangkala ia berguna untuk mendapatkan senarai semua fail pada sistem yang mempunyai pengguna atau kumpulan tertentu sebagai pemiliknya. Untuk ini anda boleh gunakan mencari. Hujah mencari-pengguna boleh digunakan untuk tujuan ini. Sebagai contoh, arahan berikut menyenaraikan semua fail yang dimiliki oleh pengguna linda:

find / -user linda

Anda juga boleh menggunakan mencari untuk mencari fail yang mempunyai kumpulan tertentu sebagai pemiliknya.

Sebagai contoh, arahan berikut mencari semua fail kepunyaan kumpulan pengguna:

find / -group users

Pertukaran pemilik

Untuk menggunakan kebenaran yang sesuai, perkara pertama yang perlu dipertimbangkan ialah pemilikan. Terdapat arahan untuk ini chown. Sintaks arahan ini mudah difahami:

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

Sebagai contoh, arahan berikut menukar pemilik direktori /home/account kepada linda pengguna:

chown linda /home/account

Pasukan chown mempunyai beberapa pilihan, salah satunya amat berguna: -R. Anda boleh meneka apa yang dilakukannya kerana pilihan ini tersedia untuk banyak arahan lain juga. Ini membolehkan anda menetapkan pemilik secara rekursif, yang membolehkan anda menetapkan pemilik direktori semasa dan segala-galanya di bawah. Perintah berikut mengubah pemilikan direktori /home dan semua yang berada di bawahnya kepada pengguna linda:

Sekarang pemilik kelihatan 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

Jom buat:

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

Kini pengguna lisa telah menjadi pemilik direktori akaun:

[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

Tukar pemilik kumpulan

Terdapat dua cara untuk menukar pemilikan kumpulan. Anda boleh melakukan ini menggunakan chown, tetapi terdapat perintah khas bernama chgrpyang melakukan kerja. Jika anda ingin menggunakan arahan chown, gunakan . atau : di hadapan nama kumpulan.

Perintah berikut menukar mana-mana pemilik kumpulan /home/account kepada kumpulan akaun:

chown .account /home/account

anda boleh menggunakan chown untuk menukar pemilik pengguna dan/atau kumpulan dalam beberapa cara. Berikut adalah beberapa contoh:

  • chown lisa myfile1 menetapkan pengguna lisa sebagai pemilik myfile1.
  • chown lisa.sales myfile menetapkan lisa pengguna sebagai pemilik fail myfile, dan juga menetapkan kumpulan jualan sebagai pemilik fail yang sama.
  • chown lisa:sales myfile sama seperti arahan sebelumnya.
  • chown .sales myfile menetapkan kumpulan jualan sebagai pemilik myfile tanpa menukar pemilik pengguna.
  • chown :sales myfile sama seperti arahan sebelumnya.

Anda boleh menggunakan arahan chgrpuntuk menukar pemilik kumpulan. Pertimbangkan contoh berikut, di mana anda boleh menggunakan chgrp tetapkan pemilik direktori akaun kepada kumpulan jualan:

chgrp .sales /home/account

Seperti chown, anda boleh menggunakan pilihan -R с chgrp, serta menukar pemilik kumpulan secara rekursif.

Memahami Pemilik Lalai

Anda mungkin perasan bahawa apabila pengguna mencipta fail, pemilikan lalai digunakan.
Pengguna yang mencipta fail secara automatik menjadi pemilik fail itu dan kumpulan utama pengguna itu secara automatik menjadi pemilik fail tersebut. Ini biasanya kumpulan yang disenaraikan dalam fail /etc/passwd sebagai kumpulan utama pengguna. Walau bagaimanapun, jika pengguna adalah ahli lebih daripada satu kumpulan, pengguna boleh menukar kumpulan utama yang berkesan.

Untuk menunjukkan kumpulan utama yang berkesan semasa, pengguna boleh menggunakan arahan kumpulan:

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

Jika pengguna linda semasa ingin menukar kumpulan utama yang berkesan, dia akan menggunakan arahan itu newgrpdiikuti dengan nama kumpulan yang dia mahu tetapkan sebagai kumpulan utama berkesan baharu. Selepas menggunakan arahan newgrp kumpulan utama akan aktif sehingga pengguna memasukkan arahan keluar atau tidak log keluar.

Berikut menunjukkan cara pengguna linda menggunakan arahan ini, dengan jualan sebagai kumpulan 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

Selepas menukar kumpulan utama yang berkesan, semua fail baharu yang dibuat oleh pengguna akan mempunyai kumpulan itu sebagai pemilik kumpulan. Untuk kembali kepada tetapan kumpulan utama yang asal, gunakan keluar.

Untuk dapat menggunakan arahan newgrp, pengguna mestilah ahli kumpulan yang mereka mahu gunakan sebagai kumpulan utama. Di samping itu, kata laluan kumpulan boleh digunakan untuk kumpulan menggunakan arahan gpasswd. Jika pengguna menggunakan arahan newgrptetapi bukan ahli kumpulan sasaran, shell meminta kata laluan kumpulan itu. Selepas anda memasukkan kata laluan kumpulan yang betul, kumpulan utama baru yang berkesan akan ditubuhkan.

Pengurusan hak asasi

Sistem kebenaran Linux telah dicipta pada tahun 1970-an. Memandangkan keperluan pengkomputeran adalah terhad pada tahun-tahun tersebut, sistem kebenaran asas agak terhad. Sistem kebenaran ini menggunakan tiga kebenaran yang boleh digunakan pada fail dan direktori. Dalam bahagian ini, anda akan belajar cara menggunakan dan menukar kebenaran ini.

Memahami Kebenaran Baca, Tulis dan Laksanakan

Tiga kebenaran asas membolehkan anda membaca, menulis dan melaksanakan fail. Kesan kebenaran ini berbeza apabila digunakan pada fail atau direktori. Untuk fail, kebenaran baca memberi anda hak untuk membuka fail untuk dibaca. Oleh itu, anda boleh membaca kandungannya, tetapi ini bermakna komputer anda boleh membuka fail untuk melakukan sesuatu dengannya.

Fail program yang memerlukan akses kepada perpustakaan mestilah, sebagai contoh, mempunyai akses baca kepada perpustakaan itu. Ia berikutan bahawa kebenaran baca adalah kebenaran paling asas yang anda perlukan untuk bekerja dengan fail.

Apabila digunakan pada direktori, membaca membolehkan anda memaparkan kandungan direktori tersebut. Anda harus sedar bahawa kebenaran ini tidak membenarkan anda membaca fail dalam direktori. Sistem kebenaran Linux tidak mengetahui warisan, dan satu-satunya cara untuk membaca fail adalah dengan menggunakan kebenaran baca pada fail tersebut.

Seperti yang anda mungkin boleh meneka, menulis kebenaran, jika digunakan pada fail, membenarkan menulis pada fail. Dengan kata lain, ia membolehkan anda menukar kandungan fail sedia ada. Walau bagaimanapun, ia tidak membenarkan anda membuat atau memadam fail baharu atau menukar kebenaran fail. Untuk melakukan ini, anda perlu memberi kebenaran menulis kepada direktori tempat anda ingin mencipta fail. Dalam direktori, kebenaran ini juga membenarkan anda membuat dan memadam subdirektori baharu.

Laksanakan kebenaran adalah perkara yang anda perlukan untuk melaksanakan fail. Ia tidak akan dipasang secara lalai, yang menjadikan Linux hampir kebal sepenuhnya kepada virus. Hanya seseorang yang mempunyai kebenaran menulis pada direktori boleh memohon kebenaran laksana.

Berikut meringkaskan penggunaan kebenaran asas:

Kebenaran dalam Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Menggunakan chmod

Perintah digunakan untuk mengurus kebenaran. Chmod... menggunakan Chmod anda boleh menetapkan kebenaran untuk pengguna (pengguna), kumpulan (kumpulan) dan lain-lain (lain). Anda boleh menggunakan arahan ini dalam dua mod: mod relatif dan mod mutlak. Dalam mod mutlak, tiga digit digunakan untuk menetapkan kebenaran asas.

Kebenaran dalam Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Apabila menetapkan kebenaran, hitung nilai yang anda perlukan. Jika anda ingin menetapkan baca/tulis/laksanakan untuk pengguna, baca/laksanakan untuk kumpulan, dan baca/laksanakan untuk orang lain dalam /somefile maka anda menggunakan arahan berikut Chmod:

chmod 755 /somefile

Apabila anda menggunakan Chmod dengan cara ini, semua kebenaran semasa digantikan dengan kebenaran yang anda tetapkan.

Jika anda ingin menukar kebenaran berbanding dengan kebenaran semasa, anda boleh gunakan Chmod dalam mod relatif. menggunakan Chmod dalam mod relatif anda bekerja dengan tiga penunjuk untuk menunjukkan perkara yang anda mahu lakukan:

  1. Mula-mula anda tentukan untuk siapa anda ingin menukar kebenaran. Untuk melakukan ini, anda boleh memilih antara pengguna (u), kumpulan (g) dan lain lain (o).
  2. Anda kemudian menggunakan pernyataan untuk menambah atau mengalih keluar kebenaran daripada mod semasa, atau menetapkannya secara mutlak.
  3. Pada akhirnya anda gunakan r, w ΠΈ xuntuk menentukan kebenaran yang anda ingin tetapkan.

Apabila menukar kebenaran dalam mod relatif, anda boleh melangkau bahagian "ke" untuk menambah atau mengalih keluar kebenaran untuk semua objek. Sebagai contoh, arahan ini menambah kebenaran pelaksanaan untuk semua pengguna:

chmod +x somefile

Apabila bekerja dalam mod relatif, anda juga boleh menggunakan arahan yang lebih kompleks. Sebagai contoh, arahan ini menambah kebenaran menulis kepada kumpulan dan mengalih keluar kebenaran membaca untuk orang lain:

chmod g+w,o-r somefile

Apabila menggunakan chmod -R o+rx /data anda menetapkan kebenaran laksana untuk semua direktori serta fail dalam direktori /data. Untuk menetapkan kebenaran laksana hanya untuk direktori dan bukan untuk fail, gunakan chmod -R o+ rX /data.

Huruf besar X memastikan bahawa fail tidak mendapat kebenaran laksana melainkan fail telah menetapkan kebenaran laksana untuk beberapa objek. Ini menjadikan X cara yang lebih bijak untuk menangani kebenaran melaksanakan; ini akan mengelakkan daripada menetapkan kebenaran ini pada fail yang tidak diperlukan.

Hak dilanjutkan

Sebagai tambahan kepada kebenaran asas yang baru anda baca, Linux juga mempunyai satu set kebenaran lanjutan. Ini bukan kebenaran yang anda tetapkan secara lalai, tetapi kadangkala ia memberikan tambahan yang berguna. Dalam bahagian ini, anda akan mempelajari apa itu dan cara menyediakannya.

Memahami Kebenaran Lanjutan SUID, GUID dan Sticky Bit

Terdapat tiga kebenaran lanjutan. Yang pertama ialah kebenaran untuk menetapkan pengecam pengguna (SUID). Dalam beberapa kes khas, anda boleh menggunakan kebenaran ini pada fail boleh laku. Secara lalai, pengguna yang menjalankan boleh laku menjalankan fail tersebut dengan kebenaran mereka sendiri.

Bagi pengguna biasa, ini biasanya bermakna penggunaan program adalah terhad. Walau bagaimanapun, dalam beberapa kes, pengguna memerlukan kebenaran khas, hanya untuk melaksanakan tugas tertentu.

Pertimbangkan, sebagai contoh, situasi di mana pengguna perlu menukar kata laluan mereka. Untuk melakukan ini, pengguna mesti menulis kata laluan baharu mereka ke fail /etc/shadow. Walau bagaimanapun, fail ini tidak boleh ditulis oleh pengguna bukan root:

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

Kebenaran SUID menawarkan penyelesaian kepada masalah ini. Utiliti /usr/bin/passwd menggunakan kebenaran ini secara lalai. Ini bermakna apabila menukar kata laluan, pengguna menjadi root buat sementara waktu, yang membolehkan dia menulis ke fail /etc/shadow. Anda boleh melihat kebenaran SUID dengan ls-l sebagai s dalam kedudukan yang biasanya anda harapkan untuk dilihat x untuk kebenaran tersuai:

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

Kebenaran SUID mungkin kelihatan berguna (dan dalam sesetengah kes ia adalah berguna), tetapi pada masa yang sama ia berpotensi berbahaya. Jika tidak digunakan dengan betul, anda secara tidak sengaja boleh memberikan kebenaran root. Oleh itu, saya mengesyorkan menggunakannya hanya dengan berhati-hati.

Kebanyakan pentadbir tidak perlu menggunakannya; anda hanya akan melihatnya dalam beberapa fail di mana sistem pengendalian harus menetapkannya secara lalai.

Kebenaran khas kedua ialah pengecam kumpulan (SGID). Kebenaran ini mempunyai dua kesan. Apabila digunakan pada fail boleh laku, ia memberikan pengguna yang melaksanakan fail itu kebenaran pemilik kumpulan fail. Jadi SGID boleh melakukan lebih kurang perkara yang sama seperti SUID. Walau bagaimanapun, SGID secara praktikalnya tidak digunakan untuk tujuan ini.

Seperti dengan kebenaran SUID, SGID digunakan pada beberapa fail sistem sebagai tetapan lalai.

Apabila digunakan pada direktori, SGID boleh berguna kerana anda boleh menggunakannya untuk menetapkan pemilik kumpulan lalai untuk fail dan subdirektori yang dibuat dalam direktori itu. Secara lalai, apabila pengguna mencipta fail, kumpulan utama mereka yang berkesan ditetapkan sebagai pemilik kumpulan untuk fail tersebut.

Ini tidak selalunya sangat berguna, terutamanya kerana pengguna Red Hat/CentOS menetapkan kumpulan utama mereka kepada kumpulan dengan nama yang sama dengan pengguna, dan yang mana pengguna adalah satu-satunya ahli. Oleh itu, secara lalai, fail yang dibuat pengguna akan dikongsi secara pukal.

Bayangkan situasi di mana pengguna linda dan lori bekerja dalam perakaunan dan menjadi ahli kumpulan akaun. Secara lalai, pengguna ini adalah ahli kumpulan peribadi yang mana mereka merupakan satu-satunya ahli. Walau bagaimanapun, kedua-dua pengguna adalah ahli kumpulan akaun, tetapi juga sebagai parameter kumpulan kedua.

Situasi lalai ialah apabila mana-mana pengguna ini mencipta fail, kumpulan utama menjadi pemilik. Oleh itu, secara lalai, linda tidak boleh mengakses fail yang dibuat oleh lori, dan sebaliknya. Walau bagaimanapun, jika anda mencipta direktori kumpulan kongsi (katakan /kumpulan/akaun) dan pastikan kebenaran SGID digunakan pada direktori itu dan akaun kumpulan ditetapkan sebagai pemilik kumpulan untuk direktori itu, semua fail yang dibuat dalam direktori itu dan semua daripada subdirektorinya , dapatkan juga akaun kumpulan sebagai pemilik kumpulan secara lalai.

Atas sebab ini, kebenaran SGID ialah kebenaran yang sangat berguna untuk ditetapkan pada direktori kumpulan awam.

Kebenaran SGID ditunjukkan dalam output ls-l sebagai s pada kedudukan di mana anda biasanya akan mendapat kebenaran untuk melaksanakan kumpulan:

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

Keizinan khas yang ketiga ialah bit melekit. Kebenaran ini berguna untuk melindungi fail daripada pemadaman tidak sengaja dalam persekitaran yang berbilang pengguna mempunyai akses tulis ke direktori yang sama. Jika bit melekit digunakan, pengguna hanya boleh memadamkan fail jika mereka adalah pemilik pengguna fail atau direktori yang mengandungi fail tersebut. Atas sebab ini, ia digunakan sebagai kebenaran lalai untuk direktori /tmp dan boleh berguna untuk direktori kumpulan awam juga.

Tanpa bit melekit, jika pengguna boleh mencipta fail dalam direktori, mereka juga boleh memadam fail dari direktori itu. Dalam persekitaran kumpulan awam, ini boleh menjengkelkan. Bayangkan pengguna linda dan lori, yang kedua-duanya mempunyai kebenaran menulis ke direktori /data/akaun dan mendapatkan kebenaran tersebut dengan menjadi ahli kumpulan akaun. Oleh itu, linda boleh memadam fail yang dibuat oleh lori dan sebaliknya.

Apabila anda menggunakan bit melekit, pengguna hanya boleh memadamkan fail jika salah satu daripada syarat berikut adalah benar:

  • Pengguna ialah pemilik fail;
  • Pengguna ialah pemilik direktori di mana fail itu berada.

Apabila menggunakan ls-l, anda boleh melihat sedikit melekit sebagai t dalam kedudukan di mana anda biasanya akan melihat kebenaran pelaksanaan untuk orang lain:

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

Memohon hak lanjutan

Untuk memohon SUID, SGID dan sticky bit anda juga boleh menggunakan Chmod. SUID mempunyai nilai angka 4, SGID mempunyai nilai angka 2, dan bit melekit mempunyai nilai angka 1.

Jika anda ingin menggunakan kebenaran ini, anda perlu menambah argumen empat digit Chmod, yang digit pertamanya merujuk kepada kebenaran khas. Baris berikut, sebagai contoh, akan menambah kebenaran SGID pada direktori dan menetapkan rwx untuk pengguna dan rx untuk kumpulan dan lain-lain:

chmod 2755 /somedir

Ini agak tidak praktikal jika anda perlu melihat kebenaran semasa yang ditetapkan sebelum bekerja dengannya Chmod dalam mod mutlak. (Anda menghadapi risiko menulis ganti kebenaran jika anda tidak melakukannya.) Jadi saya syorkan berjalan dalam mod relatif jika anda perlu menggunakan mana-mana kebenaran khas:

  1. Untuk kegunaan SUID chmod u+s.
  2. Untuk kegunaan SGID chmod g+s.
  3. Untuk kegunaan bit melekit chmod +t, diikuti dengan nama fail atau direktori yang anda ingin tetapkan kebenarannya.

Jadual meringkaskan semua yang anda perlu tahu tentang mengurus kebenaran khas.

Kebenaran dalam Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Contoh bekerja dengan hak istimewa

Dalam contoh ini, anda menggunakan kebenaran khas untuk memudahkan ahli kumpulan berkongsi fail dalam direktori kumpulan kongsi. Anda menetapkan bit ID kepada ID kumpulan yang ditetapkan serta bit melekat, dan anda melihat bahawa sebaik sahaja ia ditetapkan, ciri ditambah untuk memudahkan ahli kumpulan bekerjasama.

  1. Buka terminal di mana anda adalah pengguna linda. Anda boleh membuat pengguna dengan arahan Linda, tambah kata laluan passwd Linda.
  2. Cipta direktori /data dalam akar dan subdirektori /data/sales dengan arahan mkdir -p /data/jualan. lengkap cd /data/jualanuntuk pergi ke direktori jualan. lengkap sentuh linda1 ΠΈ sentuh linda2untuk mencipta dua fail kosong milik linda.
  3. Laksanakan su-lisa untuk menukar pengguna semasa kepada lisa pengguna, yang juga ahli kumpulan jualan.
  4. Laksanakan cd /data/jualan dan daripada direktori itu laksanakan ls-l. Anda akan melihat dua fail yang telah dibuat oleh pengguna linda dan tergolong dalam kumpulan linda. lengkap rm -f linda*. Ini akan mengalih keluar kedua-dua fail.
  5. Laksanakan sentuh lisa1 ΠΈ sentuh lisa2untuk mencipta dua fail yang dimiliki oleh pengguna lisa.
  6. Laksanakan su- untuk meningkatkan keistimewaan anda kepada root.
  7. Laksanakan chmod g+s,o+t /data/salesuntuk menetapkan bit pengecam kumpulan (GUID) serta bit melekit dalam direktori kumpulan kongsi.
  8. Laksanakan su-linda. Kemudian lakukan sentuh linda3 ΠΈ sentuh linda4. Anda kini harus melihat bahawa dua fail yang anda buat adalah dimiliki oleh kumpulan jualan, iaitu pemilik kumpulan direktori /data/sales.
  9. Laksanakan rm -rf lisa*. Bit melekit menghalang fail ini daripada dipadamkan bagi pihak pengguna linda, kerana anda bukan pemilik fail ini. Ambil perhatian bahawa jika pengguna linda ialah pemilik direktori /data/sales, mereka boleh memadam fail ini juga!

Pengurusan ACL (setfacl, getfacl) dalam Linux

Walaupun kebenaran lanjutan yang dibincangkan di atas menambah fungsi berguna kepada cara Linux mengendalikan kebenaran, ia tidak membenarkan anda memberikan kebenaran kepada lebih daripada satu pengguna atau kumpulan dalam fail yang sama.

Senarai kawalan akses menawarkan ciri ini. Di samping itu, mereka membenarkan pentadbir menetapkan kebenaran lalai dengan cara yang rumit, di mana kebenaran yang ditetapkan mungkin berbeza-beza dari direktori ke direktori.

Memahami ACL

Walaupun subsistem ACL menambah fungsi hebat pada pelayan anda, ia mempunyai satu kelemahan: tidak semua utiliti menyokongnya. Oleh itu, anda mungkin kehilangan tetapan ACL anda apabila anda menyalin atau memindahkan fail, dan perisian sandaran anda mungkin gagal menyandarkan tetapan ACL anda.

Utiliti tar tidak menyokong ACL. Untuk memastikan tetapan ACL tidak hilang apabila anda membuat sandaran, gunakan bintang bukannya tar. bintang berfungsi dengan pilihan yang sama seperti tar; ia hanya menambah sokongan untuk tetapan ACL.

Anda juga boleh membuat sandaran ACL dengan getfacl, yang boleh dipulihkan menggunakan perintah setfacl. Untuk membuat sandaran, gunakan getfacl -R /directory > file.acls. Untuk memulihkan tetapan daripada fail sandaran, gunakan setfacl --restore=file.acl.

Kekurangan sokongan oleh beberapa alat seharusnya tidak menjadi masalah. ACL sering digunakan pada direktori sebagai ukuran struktur dan bukannya pada fail individu.
Oleh itu, tidak akan ada banyak daripada mereka, tetapi hanya sedikit, digunakan di tempat pintar dalam sistem fail. Oleh itu, memulihkan ACL asal yang anda bekerjasama adalah agak mudah, walaupun perisian sandaran anda tidak menyokongnya.

Menyediakan sistem fail untuk ACL

Sebelum anda mula bekerja dengan ACL, anda mungkin perlu menyediakan sistem fail anda untuk menyokong ACL. Oleh kerana metadata sistem fail perlu dilanjutkan, tidak selalu ada sokongan lalai untuk ACL dalam sistem fail. Jika anda mendapat mesej "operasi tidak disokong" semasa menyediakan ACL untuk sistem fail, sistem fail anda mungkin tidak menyokong ACL.

Untuk membetulkannya, anda perlu menambah pilihan lekap acl dalam /etc/fstab supaya sistem fail dipasang dengan sokongan ACL secara lalai.

Menukar dan melihat tetapan ACL dengan setfacl dan getfacl

Untuk menetapkan ACL anda memerlukan arahan setfacl. Untuk melihat tetapan ACL semasa, anda perlukan getfacl. Pasukan ls-l tidak menunjukkan sebarang ACL sedia ada; ia hanya menunjukkan + selepas senarai kebenaran, yang menunjukkan bahawa ACL digunakan pada fail juga.

Sebelum menyediakan ACL, adalah idea yang baik untuk menunjukkan tetapan ACL semasa dengannya getfacl. Dalam contoh di bawah, anda boleh melihat kebenaran semasa, seperti yang ditunjukkan dengan ls-l, dan juga seperti yang ditunjukkan dengan getfacl. Jika anda melihat dengan teliti, anda akan melihat bahawa maklumat yang ditunjukkan adalah betul-betul sama.

[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

Hasil daripada melaksanakan arahan getfacl di bawah anda boleh melihat bahawa kebenaran ditunjukkan untuk tiga objek berbeza: pengguna, kumpulan dan lain-lain. Sekarang mari tambahkan ACL untuk memberi kebenaran membaca dan melaksanakan kepada kumpulan jualan juga. perintah untuk ini setfacl -mg:sales:rx /dir. Dalam pasukan ini -m menunjukkan bahawa tetapan ACL semasa perlu ditukar. Selepas itu g:jualan:rx memberitahu arahan untuk menetapkan read-execute ACL (rx) untuk kumpulan (g) jualan. Di bawah anda boleh melihat rupa arahan itu, serta output arahan getfacl selepas menukar tetapan ACL semasa.

[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

Kini setelah anda memahami cara menyediakan ACL kumpulan, ACL adalah mudah untuk difahami untuk pengguna dan pengguna lain. Sebagai contoh, arahan setfacl -mu:linda:rwx /data memberikan kebenaran kepada pengguna linda dalam direktori /data tanpa menjadikannya pemilik atau menukar tugasan pemilik semasa.

Pasukan setfacl mempunyai banyak ciri dan pilihan. Satu pilihan adalah sangat penting, parameter -R. Jika digunakan, pilihan menjadikan ACL ditetapkan untuk semua fail dan subdirektori yang wujud pada masa ini dalam direktori tempat anda menetapkan ACL. Adalah disyorkan bahawa anda sentiasa menggunakan pilihan ini apabila menukar ACL untuk direktori sedia ada.

Bekerja dengan ACL Lalai

Salah satu faedah menggunakan ACL ialah anda boleh memberikan kebenaran kepada berbilang pengguna atau kumpulan dalam direktori. Manfaat lain ialah anda boleh mendayakan warisan dengan bekerja dengan ACL lalai.

Dengan menetapkan ACL lalai, anda menentukan kebenaran yang akan ditetapkan untuk semua item baharu yang dibuat dalam direktori. Harap maklum bahawa ACL lalai tidak mengubah kebenaran pada fail dan subdirektori sedia ada. Untuk menukarnya, anda perlu menambah ACL biasa juga!

Ini penting untuk diketahui. Jika anda ingin menggunakan ACL untuk mengkonfigurasi berbilang pengguna atau kumpulan untuk mengakses direktori yang sama, anda mesti menetapkan ACL dua kali. Penggunaan pertama setfacl -R -muntuk menukar ACL bagi fail semasa. Kemudian gunakan setfacl-md:untuk menjaga semua elemen baru yang juga akan dicipta.

Untuk menetapkan ACL lalai anda hanya perlu menambah pilihan d selepas pilihan -m (perintah pesanan!). Jadi gunakan setfacl -md:g:sales:rx /datajika anda mahu jualan kumpulan membaca dan melaksanakan apa sahaja yang pernah dibuat dalam direktori /data.

Apabila menggunakan ACL lalai, ia juga berguna untuk menetapkan ACL untuk orang lain. Ini biasanya tidak masuk akal kerana anda juga boleh menukar kebenaran untuk digunakan oleh orang lain Chmod. Walau bagaimanapun, apa yang anda tidak boleh lakukan Chmod, adalah untuk menentukan hak yang mesti diberikan kepada pengguna lain untuk setiap fail baharu yang pernah dibuat. Jika anda ingin menghalang orang lain daripada mendapat sebarang kebenaran pada apa-apa yang dibuat dalam /data contohnya gunakan setfacl -md:o::- /data.

ACL dan kebenaran biasa tidak selalu disepadukan dengan baik. Masalah boleh timbul jika anda menggunakan ACL lalai pada direktori, kemudian item ditambahkan pada direktori itu, dan kemudian cuba menukar kebenaran biasa. Perubahan yang digunakan pada kebenaran biasa tidak akan ditunjukkan dengan baik dalam gambaran keseluruhan ACL. Untuk mengelakkan masalah, tetapkan kebenaran biasa dahulu, kemudian tetapkan ACL lalai (dan cuba jangan menukarnya lagi selepas itu).

Contoh Pengurusan Hak Ditingkatkan Menggunakan ACL

Dalam contoh ini, anda akan meneruskan dengan direktori /data/akaun dan /data/sales yang anda buat sebelum ini. Dalam contoh sebelumnya, anda memastikan bahawa kumpulan jualan mempunyai kebenaran pada /data/sales dan kumpulan akaun mempunyai kebenaran pada /data/akaun.

Mula-mula, pastikan kumpulan akaun mendapat kebenaran baca pada direktori /data/sales dan kumpulan jualan mendapat kebenaran baca pada direktori /data/akaun.

Anda kemudian menetapkan ACL lalai untuk memastikan semua fail baharu mempunyai kebenaran yang betul ditetapkan untuk semua item baharu.

  1. Buka terminal.
  2. Laksanakan setfacl -mg:account:rx /data/sales ΠΈ setfacl -mg:sales:rx /data/account.
  3. Laksanakan getfacluntuk memastikan kebenaran ditetapkan seperti yang anda mahukan.
  4. Laksanakan setfacl -md:g:account:rwx,g:sales:rx /data/salesuntuk menetapkan ACL lalai untuk direktori jualan.
  5. Tambahkan ACL lalai untuk direktori /data/akaun menggunakan setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. Sahkan bahawa tetapan ACL berkuat kuasa dengan menambahkan fail baharu pada /data/sales. lengkap sentuh /data/sales/newfile dan laksanakan getfacl /data/sales/newfile untuk menyemak kebenaran semasa.

Menetapkan kebenaran lalai dengan umask

Di atas, anda mempelajari cara bekerja dengan ACL lalai. Jika anda tidak menggunakan ACL, terdapat pilihan shell yang menentukan kebenaran lalai yang anda akan dapat: umask (topeng terbalik). Dalam bahagian ini, anda akan belajar cara menukar kebenaran lalai dengan umask.

Anda mungkin perasan bahawa apabila anda mencipta fail baharu, beberapa kebenaran lalai ditetapkan. Kebenaran ini ditentukan oleh tetapan umask. Tetapan shell ini digunakan untuk semua pengguna semasa log masuk. Dalam parameter umask nilai berangka digunakan, yang ditolak daripada kebenaran maksimum yang boleh ditetapkan secara automatik untuk fail; tetapan maksimum untuk fail ialah 666 dan untuk direktori ialah 777.

Walau bagaimanapun, beberapa pengecualian dikenakan pada peraturan ini. Anda boleh mendapatkan gambaran keseluruhan tetapan yang lengkap umask dalam jadual di bawah.

Daripada nombor yang digunakan dalam umask, seperti dalam kes argumen berangka untuk arahan Chmod, digit pertama merujuk kepada kebenaran pengguna, digit kedua merujuk kepada kebenaran kumpulan dan yang terakhir merujuk kepada kebenaran lalai yang ditetapkan untuk orang lain. Maknanya umask lalai 022 memberikan 644 untuk semua fail baharu dan 755 untuk semua direktori baharu yang dibuat pada pelayan anda.

Gambaran keseluruhan lengkap semua nilai berangka umask dan keputusan mereka dalam jadual di bawah.

Kebenaran dalam Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Cara mudah untuk melihat cara tetapan umask berfungsi adalah seperti berikut: mulakan dengan kebenaran lalai fail yang ditetapkan kepada 666 dan tolak umask untuk mendapatkan kebenaran yang berkesan. Lakukan perkara yang sama untuk direktori dan keizinan lalainya 777.

Terdapat dua cara untuk menukar tetapan umask: untuk semua pengguna dan untuk pengguna individu. Jika anda ingin menetapkan umask untuk semua pengguna, anda mesti memastikan tetapan umask diambil kira semasa memulakan fail persekitaran shell, seperti yang dinyatakan dalam /etc/profile. Pendekatan yang betul ialah mencipta skrip shell yang dipanggil umask.sh dalam direktori /etc/profile.d dan nyatakan umask yang anda mahu gunakan dalam skrip shell tersebut. Jika umask ditukar dalam fail ini, ia digunakan untuk semua pengguna selepas log masuk ke pelayan.

Alternatif untuk menetapkan umask melalui /etc/profile dan fail berkaitan, di mana ia terpakai kepada semua pengguna yang log masuk, adalah untuk menukar tetapan umask dalam fail yang dipanggil .profile yang dibuat dalam direktori rumah setiap pengguna.

Tetapan yang digunakan dalam fail ini hanya terpakai kepada pengguna individu; maka ini adalah kaedah yang baik jika anda memerlukan lebih terperinci. Saya secara peribadi menyukai ciri ini untuk menukar umask lalai untuk pengguna root kepada 027 manakala pengguna biasa sedang berjalan dengan umask lalai 022.

Bekerja dengan atribut pengguna lanjutan

Ini adalah bahagian terakhir tentang kebenaran Linux.

Apabila bekerja dengan keizinan, sentiasa ada hubungan antara objek pengguna atau kumpulan dan keizinan yang dimiliki oleh objek pengguna atau kumpulan pada fail atau direktori. Kaedah alternatif untuk melindungi fail pada pelayan Linux adalah dengan bekerja dengan atribut.
Atribut melakukan tugas mereka tanpa mengira pengguna yang mengakses fail.

Seperti ACL, atribut fail mungkin perlu menyertakan pilihan mount.

Ini adalah pilihan pengguna_xattr. Jika anda mendapat mesej "operasi tidak disokong" semasa bekerja dengan atribut pengguna lanjutan, pastikan anda menetapkan parameter mount dalam /etc/fstab.

Banyak atribut didokumenkan. Sesetengah atribut tersedia tetapi belum dilaksanakan lagi. Jangan gunakannya; mereka tidak akan membawa apa-apa kepada anda.

Di bawah ialah atribut paling berguna yang boleh anda gunakan:

A Atribut ini memastikan bahawa masa capaian fail fail tidak berubah.
Biasanya, setiap kali fail dibuka, masa capaian fail mesti direkodkan dalam metadata fail. Ini memberi kesan negatif kepada prestasi; jadi untuk fail yang kerap diakses, atribut A boleh digunakan untuk melumpuhkan ciri ini.

a Atribut ini membolehkan anda menambah tetapi tidak mengalih keluar fail.

c Jika anda menggunakan sistem fail yang menyokong pemampatan tahap kelantangan, atribut fail ini memastikan bahawa fail dimampatkan pada kali pertama mekanisme pemampatan didayakan.

D Atribut ini memastikan bahawa perubahan pada fail ditulis ke cakera dengan segera dan bukannya dicache terlebih dahulu. Ini ialah atribut berguna pada fail pangkalan data penting untuk memastikan ia tidak tersesat antara cache fail dan cakera keras.

d Atribut ini memastikan bahawa fail tidak akan disimpan dalam sandaran tempat utiliti dump digunakan.

I Atribut ini membolehkan pengindeksan untuk direktori di mana ia didayakan. Ini menyediakan akses fail yang lebih pantas untuk sistem fail primitif seperti Ext3 yang tidak menggunakan pangkalan data B-tree untuk akses fail pantas.

i Atribut ini menjadikan fail tidak boleh diubah. Oleh itu, tiada perubahan boleh dibuat pada fail, yang berguna untuk fail yang memerlukan perlindungan tambahan.

j Atribut ini memastikan bahawa, pada sistem fail ext3, fail pertama kali ditulis ke jurnal dan kemudian ke blok data pada cakera keras.

s Tulis ganti blok di mana fail disimpan ke 0s selepas memadamkan fail. Ini memastikan bahawa fail tidak boleh dipulihkan setelah ia dipadamkan.

u Atribut ini menyimpan maklumat tentang pemadaman. Ini membolehkan anda membangunkan utiliti yang berfungsi dengan maklumat ini untuk menyelamatkan fail yang dipadam.

Jika anda ingin menggunakan atribut, anda boleh menggunakan arahan sembang. Sebagai contoh, gunakan chattr +s beberapa failuntuk menggunakan atribut pada fail tertentu. Perlu mengalih keluar atribut? Kemudian gunakan chattr -s somefiledan ia akan dikeluarkan. Untuk mendapatkan gambaran keseluruhan semua atribut yang digunakan pada masa ini, gunakan arahan lsattr.

Ringkasan

Dalam artikel ini, anda mempelajari cara bekerja dengan kebenaran. Anda membaca tentang tiga kebenaran asas, kebenaran lanjutan dan cara menggunakan ACL pada sistem fail. Anda juga mempelajari cara menggunakan pilihan umask untuk menggunakan kebenaran lalai. Pada penghujung artikel ini, anda mempelajari cara menggunakan atribut lanjutan pengguna untuk menggunakan lapisan tambahan keselamatan sistem fail.

Jika anda menyukai terjemahan ini, sila tulis mengenainya dalam ulasan. Akan ada lebih banyak motivasi untuk membuat terjemahan yang berguna.

Membetulkan beberapa kesilapan taip dan tatabahasa dalam artikel. Mengurangkan beberapa perenggan besar kepada yang lebih kecil untuk kebolehbacaan yang lebih baik.

Sebaliknya "Hanya seseorang yang mempunyai hak pentadbiran kepada direktori boleh memohon kebenaran laksana." ditetapkan kepada "Hanya seseorang yang mempunyai kebenaran menulis pada direktori boleh memohon kebenaran laksana.", yang akan menjadi lebih betul.

Terima kasih atas komen berez.

Digantikan:
Jika anda bukan pemilik pengguna, shell akan menyemak sama ada anda adalah ahli kumpulan, juga dikenali sebagai kumpulan fail.

Pada:
Jika anda bukan pemilik fail, shell akan menyemak sama ada anda ahli kumpulan yang mempunyai kebenaran pada fail tersebut. Jika anda ahli kumpulan ini, anda akan mengakses fail dengan kebenaran yang telah ditetapkan oleh kumpulan dan shell akan berhenti menyemak.

terima kasih di atas komen anda CryptoPirate

Sumber: www.habr.com

Tambah komen