GNU/Linux >> Belajar Linux >  >> Linux

Buat dan konfigurasikan direktori setgid untuk kolaborasi – Persiapan Tujuan RHCSA

Izin dan hak sistem file GNU/Linux adalah dasar dari keamanan sistem, dan salah satu prinsipnya adalah pemisahan yang jelas antara hak untuk file dan folder. Dalam lingkungan yang sangat banyak pengguna, seperti server sekolah, hak file mencegah pengguna secara default untuk secara tidak sengaja menghapus atau menimpa dokumen orang lain. Namun, ada kasus penggunaan di mana banyak pengguna perlu mengakses (membaca, menulis, dan bahkan menghapus) file pengguna lain – seperti yang mungkin terjadi di server sekolah yang disebutkan di atas, di mana siswa mengerjakan proyek yang sama. Di bagian persiapan ujian RHCSA ini, kita akan mempelajari cara membuat lingkungan untuk kolaborasi semacam itu, menggunakan teknik setgid (set groupID). Perhatikan bahwa saat kami melakukan langkah-langkah ini pada sistem operasi terbaru, setgid bukanlah hal baru, dan Anda akan menemukannya di setiap dan semua distribusi.

Dalam tutorial ini Anda akan mempelajari:

  • Cara menambahkan pengguna ke grup tambahan
  • Cara menggunakan set-GID pada direktori
  • Cara memeriksa kepemilikan yang benar dalam direktori set-GID
  • Cara menggunakan direktori khusus sebagai anggota grup

Mengaktifkan kolaborasi dengan direktori setgid.

Persyaratan dan Konvensi Perangkat Lunak yang Digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan
Sistem Red Hat Enterprise Linux 8
Perangkat Lunak GNU Coreutils 8.30
Lainnya Akses istimewa ke sistem Linux Anda sebagai root atau melalui sudo perintah.
Konvensi # – membutuhkan perintah linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ – membutuhkan perintah linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa

Kasus penggunaan

Untuk mendemonstrasikan penggunaan setgid, kami memiliki server virtual, dan di atasnya kami perlu membuat grup pengguna, menambahkan anggota, dan menyiapkan direktori yang dapat diakses keduanya. Sejauh ini hanya
masalah pengaturan izin. Triknya adalah menambahkan setgid ke direktori, sehingga file yang dibuat di dalam direktori akan memiliki grup pemilik dari direktori induk. Karena grup akan memiliki izin baca dan tulis di dalam direktori, setiap anggota grup dapat membaca dan menulis file, tanpa memerlukan keanggotaan grup pengaturan pengguna asli secara eksplisit.

Penyiapan dasar

Pertama kita buat objek yang dibutuhkan. Mari buat direktori proyek:

# mkdir -p /student_projects/rocket_science

Dan dua pengguna kami, sarah dan john , menggunakan perintah useradd:

# useradd john# useradd sarah

Kami juga perlu membuat grup pengguna yang memungkinkan kolaborasi antara anggotanya:

# grouptambahkan ahli roket

Selanjutnya kita set grup ini sebagai pemilik direktori proyek, secara rekursif:

# chown -R :rocketengineers /student_projects/rocket_science

Selanjutnya, kami menambahkan pengguna kami ke rocketengineers grup:

# usermod -a -G rocketengineers john# usermod -a -G rocketengineers sarah

Kami menambahkan grup sebagai grup sekunder. Untuk detail tentang grup, lihat tutorial keanggotaan grup.

Untuk menyelesaikan pengaturan dasar, kita perlu menambahkan izin penuh ke grup di direktori:

# chmod 770 /student_projects/rocket_science

Dan dengan ini, pengaturan dasar kita selesai. Kedua pengguna dapat menulis ke direktori, dan file yang dibuat akan dimiliki oleh pengguna, dan grup pemilik akan menjadi grup utama pengguna. Kita dapat memeriksa
izin yang kita atur dengan stat :

# stat /student_projects/rocket_science File:/student_projects/rocket_science Ukuran:6 Blok:0 IO Blok:4096 direktoriPerangkat:fd00h/64768d Inode:17789698 Link:2Access:(0770/drwxrwx---) Uid:( 0/ root) Gid:( 1003/rocketengineers)Konteks:unconfined_u:object_r:default_t:s0Access:04-10-2020 18:29:57.500453785 +0200Modifikasi:04-10-2020 18:29:47.650278956 +0200Ubah:04-10-2020 18:30:34.809115974 +0200 Kelahiran:-

Pengidentifikasi kemungkinan besar akan berbeda. Kita dapat melihat bahwa pemilik direktori adalah root , sedangkan kepemilikan grup adalah milik rocketengineers kelompok. Ini memungkinkan kedua anggota
grup untuk membaca dan menulis dari dan ke direktori.

Kolaborasi tanpa setgid

Katakanlah dua pengguna ingin berbagi beberapa catatan dengan pengaturan ini. sarah mendapat file teks dengan data penting di direktori home-nya:

$ iduid=1002(sarah) gid=1002(sarah) groups=1002(sarah),1003(rocketengineers) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023$ cat general_project.notes teks 

Untuk membagikannya dengan john , dia menyalin file ke direktori bersama (jadi masih ada cadangan di direktori home-nya, untuk berjaga-jaga):

$ cp general_project.notes /student_projects/rocket_science/

Dengan memeriksa kepemilikan, kita dapat melihat bahwa pemiliknya memang sarah , dan grup pemilik file juga sarah , grup utama pengguna:

$ stat /student_projects/rocket_science/general_project.notes File:/student_projects/rocket_science/general_project.notes Ukuran:5 Blok:8 IO Blok:4096 file biasaPerangkat:fd00h/64768d Inode:18019570 Tautan:1Access:(0664/- rw-rw-r--) Uid:( 1002/ sarah) Gid:( 1002/ sarah)Context:unconfined_u:object_r:default_t:s0Access:2020-10-04 18:31:30.229099624 +0200Modify:2020-10-04 18:31:30.229099624 +0200Perubahan:04-10-2020 18:31:30.229099624 +0200 Lahir:-

Mari beralih ke john . Dia juga memiliki beberapa temuan tentang proyek tersebut, dan ingin membagikannya.

$ iduid=1001(john) gid=1001(john) groups=1001(john),1003(roketengineers) konteks=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023$ echo "teks saya"> roket. txt$ cp rocket.txt /student_projects/rocket_science/

Izin yang sama berlaku, file yang baru disalin akan dimiliki oleh john :

$ stat /student_projects/rocket_science/rocket.txt File:/student_projects/rocket_science/rocket.txt Ukuran:7 Blok:8 IO Blok:4096 file biasaPerangkat:fd00h/64768d Inode:18356857 Link:1Access:(0664/- rw-rw-r--) Uid:( 1001/ john) Gid:( 1001/ john)Konteks:unconfined_u:object_r:default_t:s0Access:04-10-2020 18:32:24.433075710 +0200Modifikasi:04-10-2020 18:32:24.433075710 +0200Perubahan:04-10-2020 18:32:24.433075710 +0200 Lahir:-

Karena keduanya adalah anggota rocketengineers grup, mereka dapat membaca konten direktori, dan karena kedua catatan mereka dapat dibaca dunia, mereka berdua dapat saling membaca
file.

$ cat /student_projects/rocket_science/general_project.notes teks

Masalah muncul ketika john ingin menambahkan beberapa catatan di sarah file data penting:

$ echo "beberapa komentar">> /student_projects/rocket_science/general_project.notes -bash:/student_projects/rocket_science/general_project.notes:Izin ditolak

Akibatnya, mereka tidak dapat bekerja pada file satu sama lain, hanya membacanya. Sekarang sarah dapat mengatur kepemilikan grup filenya ke grup bersama mereka, sehingga menyelesaikan masalah. Tapi mengapa dia membutuhkan
itu dengan setiap file, jika kita mendapatkan setgid untuk membantu kita?

Menyetel tanda setgid

Untuk mengatur flag setgid, kita menggunakan chmod :

# chmod g+s /student_projects/rocket_science

Perhatikan tanda “s” pada izin grop (ditetapkan sebagai huruf tebal demi kejelasan):

# stat /student_projects/rocket_science File:/student_projects/rocket_science Ukuran:53 Blok:0 IO Blok:4096 direktoriPerangkat:fd00h/64768d Inode:17789698 Tautan:2Access:(2770/drwxrws ---) Uid:( 0/ root) Gid:( 1003/rocketengineers)Konteks:unconfined_u:object_r:default_t:s0Access:04-10-2020 18:32:29.389167450 +0200Modifikasi:04-10-2020 18:32:24.433075710 +0200Perubahan:04-10-2020 18:34:04.449927062 +0200 Kelahiran:-

Menguji dan memverifikasi hasil

Sekarang sarah dapat membagikan catatan penelitian barunya:

$ roket temuan.txt membutuhkan sayap$ cp temuan.txt /student_projects/rocket_science/$ stat /student_projects/rocket_science/findings.txt File:/student_projects/rocket_science/findings.txt Ukuran:19 Blok:8 Blok IO:4096 file biasaPerangkat:fd00h/64768d Inode:18999000 Links:1Access:(0664/-rw-rw-r--) Uid:( 1002/ sarah) Gid:( 1003/rocketengineers )Konteks:unconfined_u:object_r:default_t:s0Access:04-10-2020 18:35:15.195236593 +0200Modifikasi:04-10-2020 18:35:15.195236593 +0200Ubah:04-10-2020 18:35:15.195236593 +0200 Kelahiran :-

Kepemilikan grup disetel ke grup direktori induk karena setgid di tempat. Itu akan menyebabkan john untuk dapat mengomentari catatan penelitian baru:

$ echo "terverifikasi!">> /student_projects/rocket_science/findings.txt$ cat /student_projects/rocket_science/findings.txt perlu verifikasi sayap!

Dan dengan itu kami menyelesaikan tujuan kami untuk menyiapkan direktori kolaborasi untuk sekelompok pengguna. Kita dapat melakukannya untuk grup lain dengan metode di atas, memisahkan data proyek yang berbeda dengan
izin, sehingga anggota dari satu grup tidak dapat menghapus data proyek lain secara tidak sengaja.

# Judul Video:Bekerja di direktori setgid
# Deskripsi Video:Mengedit file pengguna lain di direktori setgid
# Nama file video:rhcsa_setgid.webm

Bekerja di direktori setgid – Mengedit file pengguna lain di direktori setgid

Kesimpulan

Di bawah izin ketat GNU/Linux dan hak kepemilikan, setgid adalah cara sederhana untuk memungkinkan pengguna sistem berinteraksi dengan file satu sama lain dengan cara yang aman, memungkinkan kerja kelompok
tanpa menggunakan beberapa solusi eksternal yang berat, atau mengacaukan grup dan izin awal pengguna. Dalam contoh di atas, kami tidak perlu menyentuh direktori beranda pengguna, atau izin
seluruh sistem mereka, kami hanya menyiapkan tempat khusus di mana mereka dapat membagikan apa yang mereka butuhkan.

Latihan

  1. Buat beberapa direktori proyek dengan grup yang berbeda. Periksa apakah anggota satu proyek dapat membaca file proyek lain.
  2. Buat direktori lintas proyek, yang dapat diakses oleh setiap anggota proyek.
  3. Buat lintas proyek hanya baca direktori, di mana hanya satu anggota proyek (manajemen proyek) yang dapat menulis, tetapi anggota semua proyek dapat membaca.

Linux
  1. Membuat, Menghapus, dan Mengelola Direktori di Linux

  2. 5 contoh untuk membuat banyak direktori di Linux

  3. Buat file zip dan abaikan struktur direktori

  1. Membuat Tautan Keras Direktori Secara Paksa?

  2. Mengapa Disarankan Membuat Grup Dan Pengguna Untuk Beberapa Aplikasi?

  3. Buat folder khusus untuk setiap file zip di direktori dan ekstrak file zip

  1. Cara membuat dan menghapus grup pengguna di Linux

  2. Buat File Sebagai Pengguna Dan Grup Yang Berbeda?

  3. Bagaimana cara memaksa grup dan izin untuk file yang dibuat di dalam direktori tertentu?