GNU/Linux >> Belajar Linux >  >> Linux

Linux – Memahami Izin Unix Dan Jenis File?

Saya tidak pernah benar-benar mengerti bagaimana chmod bekerja sampai hari ini. Saya mengikuti tutorial yang menjelaskan banyak hal kepada saya.

Misalnya, saya telah membaca bahwa Anda memiliki tiga grup izin yang berbeda:

  • pemilik (u )
  • grup (g )
  • semuanya (o )

Berdasarkan ketiga kelompok ini, saya sekarang tahu bahwa:

  • Jika file dimiliki oleh pengguna, izin pengguna menentukan akses.
  • Jika grup file sama dengan grup pengguna, izin grup menentukan akses.
  • Jika pengguna bukan pemilik file, dan tidak ada dalam grup, maka izin lain yang digunakan.

Saya juga mengetahui bahwa Anda memiliki izin berikut:

  • baca (r )
  • tulis (w )
  • jalankan (x )

Saya membuat direktori untuk menguji pengetahuan yang baru saya peroleh:

mkdir test

Kemudian saya melakukan beberapa tes:

chmod u+rwx test/
# drwx------
chmod g+rx test/
# drwxr-x---
chmod u-x test/
# drw-r-x---

Setelah bermain-main selama beberapa waktu, saya pikir saya akhirnya memahami chmod dan cara Anda mengatur izin menggunakan perintah ini.

Tapi…

Saya masih memiliki beberapa pertanyaan:

  • Apa yang dimaksud dengan d di awal berdiri untuk?
  • Apa nama dan kegunaan slot yang berisi dan nilai lain apa yang dapat ditampungnya?
  • Bagaimana cara menyetel dan menghapusnya?
  • Berapa nilai untuk d ini ? (Karena Anda hanya memiliki 7=4+2+1 7=4+2+1 7=4+2+1)
  • Mengapa orang terkadang menggunakan 0777 bukannya 777 untuk mengatur izin mereka?

Tapi karena saya seharusnya tidak mengajukan banyak pertanyaan, saya akan mencoba menanyakannya dalam satu pertanyaan.

Pada sistem berbasis UNIX seperti semua distro Linux, mengenai perizinan, apa yang dilakukan bagian pertama (d ) singkatan dan apa gunanya bagian izin ini?

Jawaban yang Diterima:

Saya akan menjawab pertanyaan Anda dalam tiga bagian:jenis file, izin, dan kasus penggunaan untuk berbagai bentuk chmod .

Jenis file

Karakter pertama dalam ls -l output mewakili jenis file; d berarti itu adalah direktori. Itu tidak dapat disetel atau tidak disetel, itu tergantung pada bagaimana file itu dibuat. Anda dapat menemukan daftar lengkap jenis file dalam dokumentasi ls; yang mungkin Anda temui adalah

  • - :file “reguler”, dibuat dengan program apa pun yang dapat menulis file
  • b :memblokir file khusus, biasanya perangkat disk atau partisi, dapat dibuat dengan mknod
  • c :file karakter khusus, juga dapat dibuat dengan mknod (lihat /dev sebagai contoh)
  • d :direktori, dapat dibuat dengan mkdir
  • l :tautan simbolik, dapat dibuat dengan ln -s
  • p :bernama pipa, dapat dibuat dengan mkfifo
  • s :socket, dapat dibuat dengan nc -U
  • D :pintu, dibuat oleh beberapa proses server di Solaris/openindiana.

Izin

chmod 0777 digunakan untuk mengatur semua izin dalam satu chmod eksekusi, daripada menggabungkan perubahan dengan u+ dll. Masing-masing dari empat digit adalah nilai oktal yang mewakili satu set izin:

  • suid , sgid dan “lengket” (lihat di bawah)
  • izin pengguna
  • izin grup
  • Izin “lainnya”

Nilai oktal dihitung sebagai jumlah dari izin:

  • “baca” adalah 4
  • “tulis” adalah 2
  • “eksekusi” adalah 1

Untuk digit pertama:

  • suid adalah 4; binari dengan set bit ini dijalankan sebagai pengguna pemiliknya (biasanya root )
  • sgid adalah 2; binari dengan bit set ini dijalankan sebagai grup pemiliknya (ini digunakan untuk game sehingga skor tinggi dapat dibagikan, tetapi sering kali merupakan risiko keamanan bila dikombinasikan dengan kerentanan dalam game), dan file yang dibuat dalam direktori dengan bit set ini milik grup pemilik direktori secara default (ini berguna untuk membuat folder bersama)
  • “lengket” (atau “penghapusan terbatas”) adalah 1; file dalam direktori dengan bit set ini hanya dapat dihapus oleh pemiliknya, pemilik direktori, atau root (lihat /tmp untuk contoh umum tentang ini).
Terkait:Linux – prosedur yang benar untuk mengganti MDM dengan LightDM di Linux Mint?

Lihat chmod halaman manual untuk detailnya. Perhatikan bahwa dalam semua ini saya mengabaikan fitur keamanan lain yang dapat mengubah izin pengguna pada file (SELinux, file ACL…).

Bit khusus ditangani secara berbeda tergantung pada jenis file (file atau direktori biasa) dan sistem yang mendasarinya. (Ini disebutkan dalam chmod halaman manual.) Pada sistem yang saya gunakan untuk menguji ini (dengan coreutils 8.23 pada ext4 sistem file, menjalankan kernel Linux 3.16.7-ckt2), perilakunya adalah sebagai berikut. Untuk sebuah file, bit khusus selalu dihapus kecuali secara eksplisit diatur, jadi chmod 0777 setara dengan chmod 777 , dan kedua perintah menghapus bit khusus dan memberikan izin penuh kepada semua orang pada file tersebut. Untuk direktori, bit khusus tidak pernah sepenuhnya dihapus menggunakan bentuk numerik empat digit, jadi berlaku chmod 0777 juga setara dengan chmod 777 tapi itu menyesatkan karena beberapa bagian khusus akan tetap apa adanya. (Versi sebelumnya dari jawaban ini salah.) Untuk menghapus bit khusus pada direktori, Anda perlu menggunakan u-s , g-s dan/atau o-t eksplisit atau tentukan nilai numerik negatif, jadi chmod -7000 akan menghapus semua bit khusus pada direktori.

Dalam ls -l keluaran, suid , sgid dan "lengket" muncul di tempat x entri:suid adalah s atau S alih-alih x . pengguna , sgid adalah s atau S alih-alih x group grup , dan "lengket" adalah t atau T alih-alih x orang lain . Huruf kecil menunjukkan bahwa bit khusus dan bit yang dapat dieksekusi diatur; huruf besar menunjukkan bahwa hanya bit khusus yang disetel.

Berbagai bentuk chmod

Karena perilaku yang dijelaskan di atas, menggunakan empat digit penuh di chmod bisa membingungkan (setidaknya ternyata saya bingung). Ini berguna ketika Anda ingin mengatur bit khusus serta bit izin; jika tidak, bit akan dihapus jika Anda memanipulasi file, disimpan jika Anda memanipulasi direktori. Jadi chmod 2750 memastikan Anda akan mendapatkan setidaknya sgid dan persis u=rwx,g=rx,o=; tapi chmod 0750 belum tentu menghapus bit khusus.

Menggunakan mode numerik alih-alih perintah teks ([ugo][=+-][rwxXst] ) mungkin lebih merupakan kasus kebiasaan dan tujuan dari perintah. Setelah Anda terbiasa menggunakan mode numerik, seringkali lebih mudah untuk hanya menentukan mode lengkap seperti itu; dan berguna untuk memikirkan izin menggunakan mode numerik, karena banyak perintah lain dapat menggunakannya (install , mknod …).

Beberapa varian teks dapat berguna:jika Anda hanya ingin memastikan file dapat dieksekusi oleh siapa saja, chmod a+x akan melakukan itu, terlepas dari apa izin lainnya. Demikian juga, +X menambahkan izin eksekusi hanya jika salah satu izin eksekusi sudah disetel atau file adalah direktori; ini dapat berguna untuk memulihkan izin secara global tanpa harus ke file kasus khusus v. direktori. Jadi, chmod -R ug=rX,u+w,o= setara dengan menerapkan chmod -R 750 ke semua direktori dan file yang dapat dieksekusi dan chmod -R 640 ke semua file lainnya.


Linux
  1. Izin File di Linux dengan Contoh

  2. UNIX / Linux:Cara Menggunakan Sticky Bit pada Direktori dan File

  3. Ikhtisar Proses UNIX (Di Dalam Proses Linux, dan Jenis Proses)

  1. Pertanyaan Wawancara Linux – Izin File dan Direktori Dasar

  2. unix - kepala DAN ekor file

  3. Memahami izin UNIX dan tipe file

  1. Cara Menyalin Izin dan Kepemilikan File ke File Lain di Linux

  2. Dasar-dasar Izin File Linux

  3. Izin Linux:Pengantar chmod