Buat dan Konfigurasi Direktori SetGID untuk Kerjasama - Penyediaan Objektif RHCSA
- 2344
- 148
- Noah Torp
Kebenaran dan hak sistem fail GNU/Linux adalah asas keselamatan sistem, dan salah satu prinsipnya adalah pemisahan hak yang jelas kepada fail dan folder. Dalam persekitaran yang sangat multiuser, seperti pelayan sekolah, hak fail menghalang pengguna secara lalai untuk tidak sengaja memadam atau menimpa dokumen lain. Walau bagaimanapun, terdapat kes penggunaan di mana banyak pengguna perlu mengakses (membaca, menulis, dan juga memadam) fail pengguna lain - seperti yang mungkin berlaku di pelayan sekolah yang disebutkan di atas, di mana pelajar bekerja pada projek yang sama. Dalam bahagian penyediaan peperiksaan RHCSA ini, kami akan belajar bagaimana untuk mewujudkan persekitaran untuk kerjasama sedemikian, menggunakan teknik setgid (setid). Perhatikan bahawa semasa kami melakukan langkah -langkah ini pada sistem operasi baru -baru ini, setgid bukanlah perkara baru, dan anda akan dapati dalam mana -mana dan semua pengagihan.
Dalam tutorial ini anda akan belajar:
- Cara Menambah Pengguna ke Kumpulan Tambahan
- Cara Menggunakan Set-Gid pada Direktori
- Cara memeriksa pemilikan yang betul dalam direktori set-gid
- Cara menggunakan direktori khas sebagai ahli kumpulan
Keperluan perisian dan konvensyen yang digunakan
Kategori | Keperluan, konvensyen atau versi perisian yang digunakan |
---|---|
Sistem | Red Hat Enterprise Linux 8 |
Perisian | GNU Coreutils 8.30 |
Yang lain | Akses istimewa ke sistem linux anda sebagai akar atau melalui sudo perintah. |
Konvensyen | # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak |
Kes penggunaan
Untuk menunjukkan penggunaan setgid, kami mempunyai pelayan maya, dan di atasnya kita perlu membuat sekumpulan pengguna, menambah ahli, dan menyediakan direktori bahawa mereka mempunyai kedua -dua akses. Setakat ini ini hanya a
perkara tetapan kebenaran. Caranya adalah untuk menambah setgid ke direktori, jadi fail yang dibuat di dalam direktori akan mempunyai kumpulan pemilik direktori induk. Oleh kerana kumpulan itu akan membaca dan menulis kebenaran dalam direktori, mana -mana ahli kumpulan boleh membaca dan menulis fail, tanpa memerlukan keahlian kumpulan penetapan pengguna asal secara eksplisit.
Persediaan Asas
Pertama kita membuat objek yang diperlukan. Mari buat direktori projek:
# mkdir -p /student_projects /rocket_science
Dan dua pengguna kami, Sarah
dan John
, Menggunakan arahan userAdd:
# useradd John # useradd Sarah
Kami juga perlu membuat kumpulan pengguna yang akan membolehkan kerjasama antara ahli -ahli itu:
# GroupAdd Rocketengineers
Seterusnya kami menetapkan kumpulan ini sebagai pemilik direktori projek, secara rekursif:
# chown -r: rocketengineers /student_projects /rocket_science
Seterusnya, kami menambah pengguna kami ke Rocketengineers
kumpulan:
# usermod -a -g rocketengineers John # usermod -a -g rocketengineers sarah
Kami menambah kumpulan sebagai kumpulan menengah. Untuk butiran mengenai kumpulan, lihat tutorial Keahlian Kumpulan.
Untuk menyelesaikan persediaan asas, kita perlu menambah kebenaran penuh kepada kumpulan di direktori:
# chmod 770 /student_projects /rocket_science
Dan dengan ini, persediaan asas kami selesai. Kedua -dua pengguna boleh menulis ke direktori, dan fail yang dibuat akan dimiliki oleh pengguna, dan memiliki kumpulan akan menjadi kumpulan utama pengguna. Kita boleh menyemak
keizinan yang kami tetapkan dengan stat
:
# stat/student_projects/rocket_science file:/student_projects/rocket_science Saiz: 6 blok: 0 io blok: 4096 Direktori Peranti: FD00H/64768D inode: 17789698 Pautan: 2 Akses: (0770/ ) GID: (1003/rocketengineers) Konteks: unconfined_u: object_r: default_t: s0 akses: 2020-10-04 18:29:57.500453785 +0200 Modify: 2020-10-04 18:29:47.650278956 +0200 Perubahan: 2020-10-04 18:30:34.809115974 +0200 Kelahiran: -
Pengenal pasti kemungkinan besar akan berbeza. Kita dapat melihat bahawa pemilik direktori itu akar
, sementara pemilikan kumpulan milik Rocketengineers
kumpulan. Ini membolehkan kedua -dua ahli
kumpulan untuk membaca dan menulis dari dan ke direktori.
Kerjasama tanpa setgid
Katakan kedua -dua pengguna ingin berkongsi beberapa nota dengan persediaan ini. Sarah
Mendapat fail teks dengan data penting dalam direktori rumahnya:
$ id uid = 1002 (Sarah) GID = 1002 (Sarah) Kumpulan = 1002 (Sarah), 1003 (Rocketengineers) Konteks = unconfined_u: unconfined_r: unconfined_t: s0-s0: c0.C1023 $ Cat General_Project.Nota teks
Untuk berkongsi dengan John
, Dia menyalin fail ke direktori bersama (jadi masih ada sandaran di direktori rumahnya, sekiranya berlaku):
$ cp umum_project.nota/student_projects/rocket_science/
Dengan memeriksa pemilikan, kita dapat melihat bahawa pemiliknya memang Sarah
, Dan kumpulan yang memiliki fail juga Sarah
, kumpulan utama pengguna:
$ stat/student_projects/rocket_science/General_project.Fail Nota:/student_projects/rocket_science/General_project.Nota Saiz: 5 Blok: 8 IO Blok: 4096 Peranti Fail Biasa: FD00H/64768D Inode: 18019570 Pautan: 1 Akses: (0664/-RW-RW-R--) UID: (1002/Sarah) GID: (1002/ Sarah) Konteks: unconfined_u: object_r: default_t: s0 akses: 2020-10-04 18:31:30.229099624 +0200 Modify: 2020-10-04 18:31:30.229099624 +0200 Perubahan: 2020-10-04 18:31:30.229099624 +0200 Kelahiran: -
Mari beralih ke John
. Dia juga mempunyai beberapa penemuan mengenai projek itu, dan ingin berkongsi mereka.
$ id uid = 1001 (John) gid = 1001 (John) kumpulan = 1001 (John), 1003 (rocketengineers) konteks = unconfined_u: unconfined_r: unconfined_t: s0-s0: c0.c1023 $ echo "mytext"> roket.TXT $ CP ROCKET.txt/student_projects/rocket_science/
Kebenaran yang sama dikenakan, fail yang baru disalin akan dimiliki oleh John
:
$ stat/student_projects/rocket_science/rocket.Fail txt:/student_projects/rocket_science/rocket.TXT Saiz: 7 Blok: 8 IO Blok: 4096 Peranti Fail Biasa: FD00H/64768D Inode: 18356857 Pautan: 1 Akses: (0664/-RW-RW-R--) UID: (1001/John) GID: (1001/ John) Konteks: unconfined_u: object_r: default_t: s0 akses: 2020-10-04 18:32:24.433075710 +0200 Modify: 2020-10-04 18:32:24.433075710 +0200 Perubahan: 2020-10-04 18:32:24.433075710 +0200 Kelahiran: -
Kerana kedua -duanya adalah ahli dari Rocketengineers
kumpulan, mereka dapat membaca kandungan direktori, dan kerana kedua-dua nota mereka boleh dibaca di dunia, kedua-duanya dapat membaca antara satu sama lain
fail.
$ CAT/student_projects/rocket_science/General_Project.Nota teks
Masalahnya timbul ketika John
ingin menambah beberapa nota Sarah
Fail data penting:
$ echo "beberapa komen" >>/student_projects/rocket_science/umum_project.Nota -Bash:/student_projects/rocket_science/General_project.Nota: Kebenaran ditolak
Sebenarnya, mereka tidak dapat mengusahakan fail masing -masing, hanya membacanya. Sekarang Sarah
boleh menetapkan pemilikan kumpulan failnya kepada kumpulan biasa mereka, dengan itu menyelesaikan masalah. Tetapi mengapa dia memerlukan
dengan setiap fail, jika kami mendapat setgid untuk membantu kami?
Menetapkan bendera setgid
Untuk menetapkan bendera setgid, kami gunakan chmod
:
# chmod g+s /student_projects /rocket_science
Perhatikan bendera "S" di Kebenaran Grop (ditetapkan sebagai berani demi kejelasan):
# stat/student_projects/rocket_science file:/student_projects/rocket_science saiz: 53 blok: 0 io blok: 4096 Direktori Peranti: FD00H/64768D inode: 17789698 Pautan: 2 Akses: (2770/s---) Uid: (0/ root) GID: (1003/ rocketengineers) Konteks: unconfined_u: object_r: default_t: S0 akses: 2020-10-04 18:32:29.389167450 +0200 Modify: 2020-10-04 18:32:24.433075710 +0200 Perubahan: 2020-10-04 18:34:04.449927062 +0200 Kelahiran: -
Menguji dan mengesahkan hasilnya
Sekarang Sarah
boleh berkongsi nota penyelidikan barunya:
$ penemuan kucing.TXT Rocket Memerlukan Wings $ CP Penemuan.txt/student_projects/rocket_science/$ stat/student_projects/rocket_science/dapatan.Fail txt:/student_projects/rocket_science/penemuan.Saiz TXT: 19 Blok: 8 IO Blok: 4096 Peranti fail biasa: FD00H/64768D INODE: 18999000 Pautan: 1 Akses: (0664/-RW-RW-R--) UID: (1002/Sarah) GID: ( 1003/Rocketengineers) Konteks: unconfined_u: object_r: default_t: s0 akses: 2020-10-04 18:35:15.195236593 +0200 Modify: 2020-10-04 18:35:15.195236593 +0200 Perubahan: 2020-10-04 18:35:15.195236593 +0200 Kelahiran: -
Pemilikan kumpulan ditetapkan kepada kumpulan direktori induk kerana setgid
di tempat. Yang akan menyebabkan John
Untuk dapat mengulas mengenai nota penyelidikan baru:
$ echo "disahkan!">>/student_projects/rocket_science/penemuan.TXT $ CAT/STODY_PROJEKTS/ROCKET_SCIENCE/Penemuan.Roket TXT memerlukan sayap yang disahkan!
Dan dengan itu kami menyelesaikan matlamat kami untuk menubuhkan direktori kolaborasi untuk sekumpulan pengguna. Kami boleh melakukannya untuk kumpulan lain dengan kaedah di atas, memisahkan data projek yang berbeza oleh
Kebenaran, jadi ahli satu kumpulan tidak boleh secara tidak sengaja memadamkan data projek lain.
# Tajuk Video: Bekerja di direktori setgid
# Penerangan Video: Mengedit fail pengguna lain dalam direktori setgid
# Nama fail video: rhcsa_setgid.Webm
Kesimpulan
Di bawah kebenaran dan hak pemilikan GNU/Linux, setgid
adalah cara mudah untuk membolehkan pengguna sistem berinteraksi dengan fail masing -masing dengan cara yang selamat, membolehkan kumpulan kerja
Tanpa menggunakan beberapa penyelesaian luaran yang berat, atau mengacaukan kumpulan awal dan keizinan pengguna. Dalam contoh di atas, kami tidak perlu menyentuh direktori rumah pengguna, atau seluruh sistem mereka
kebenaran, kami hanya menubuhkan tempat istimewa di mana mereka dapat berkongsi apa yang mereka perlukan.
Latihan
- Buat pelbagai direktori projek dengan kumpulan yang berbeza. Periksa sama ada ahli projek boleh membaca fail projek lain.
- Buat direktori silang projek, di mana mana-mana ahli projek mempunyai akses ke.
- Buat projek silang baca sahaja direktori, di mana hanya satu ahli projek (pengurusan projek) boleh menulis, tetapi ahli semua projek boleh membaca.
Tutorial Linux Berkaitan:
- Pengenalan kepada Automasi, Alat dan Teknik Linux
- Perkara yang hendak dipasang di Ubuntu 20.04
- Menguasai Gelung Skrip Bash
- Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
- Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
- Mengendalikan input pengguna dalam skrip bash
- Berapa kerap anda perlu reboot pelayan Linux anda?
- Muat turun linux
- Cara membuat sandaran tambahan dan pembezaan dengan tar
- Fail Konfigurasi Linux: 30 teratas yang paling penting
- « Cara memeriksa kesihatan cakera keras dari baris arahan menggunakan smartctl
- Cara Tekanan Menguji CPU anda di Linux »