Buat dan Konfigurasi Direktori SetGID untuk Kerjasama - Penyediaan Objektif RHCSA

Buat dan Konfigurasi Direktori SetGID untuk Kerjasama - Penyediaan Objektif RHCSA

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
Membolehkan Kerjasama dengan Direktori Setgid.

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
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 SarahFail 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

Bekerja dalam direktori setgid - Mengedit fail pengguna lain dalam direktori setgid

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

  1. Buat pelbagai direktori projek dengan kumpulan yang berbeza. Periksa sama ada ahli projek boleh membaca fail projek lain.
  2. Buat direktori silang projek, di mana mana-mana ahli projek mempunyai akses ke.
  3. 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