Bagaimana cara kerja izin file?

37

Bisakah Anda menjelaskan secara singkat konsep utama dan alat baris perintah yang digunakan untuk mengelola izin file?

guillermooo
sumber

Jawaban:

23

Setiap file memiliki hak untuk tiga kategori berbeda:

  • pemilik file,
  • grup yang terkait dengan file tersebut, dan
  • semua orang.

Hak berarti hak untuk membaca file, hak untuk menulis ke file, atau hak untuk mengeksekusi file dalam kasus skrip atau program.

Di CLI, Anda mungkin

  • ganti pemilik dengan chown, mischown guillermooo
  • ganti grup dengan chgrp, mischgrp root
  • ubah haknya dengan chmod, mis. chmod u+w filename.ext(Menambahkan izin menulis untuk pemilik file filename.ext)

Jika Anda ingin tahu lebih banyak tentang masing-masing alat ini, buka terminal dan ketik man [tool], mis man chmod.

ParanoiaPuppy
sumber
8
Ini sedikit lebih rumit dengan direktori - mengeksekusi izin diperlukan untuk mengakses konten direktori. Ini berarti (misalnya) untuk membaca atau menulis file yang Anda perlukan menjalankan akses ke direktori yang berisi itu serta izin yang sesuai pada file itu sendiri. Ini hampir tidak pernah muncul, tapi itu sebabnya dokumentasi / pemahamannya buruk!
adamnfish
Hah. Kamu benar. Saya akan mengeditnya besok, ketika saya kurang mengantuk.
ParanoiaPuppy
1
chown guillermooobukankah ini seharusnya chown guillermooo filename?
Zeynel
32

Peringatan: Mengubah izin file dan direktori berpotensi berbahaya dan dapat membuat sistem Anda tidak dapat digunakan. Ketika dijalankan secara rekursif sebagai root pada jalur yang salah, kita mungkin sampai pada titik di mana kita harus menginstal ulang Ubuntu. Oleh karena itu ide yang baik untuk tidak mengubah izin di luar direktori HOME, dan menjalankan perintah secara rekursif karena root harus dihindari bila memungkinkan.

Izin file

Ubuntu telah mewarisi konsep izin dari Unix ketika untuk file atau direktori ada tiga tugas yang dapat kami izinkan atau tolak:

  • r (baca) file / direktori dapat dibuka untuk akses baca.
  • file / direktori w (tulis) dapat dibuka untuk akses tulis / edit.
  • file x (eksekusi) dapat dieksekusi karena program / direktori dapat dilalui.

( Melintasi direktori pada dasarnya berarti menggunakannya sebagai bagian dari nama jalur. Lihat https://unix.stackexchange.com/a/13891 atau https://unix.stackexchange.com/questions/21251 untuk penjelasan lebih lanjut.)

Selain itu, kami memiliki tiga kasus tentang siapa kami memberikan izin:

  • u (pengguna) pemilik file diberikan izin apa pun.
  • g (grup) grup file milik diberi izin.
  • o (lainnya) semua orang lain diberikan izin.

Sekarang untuk mendapatkan kombinasi ini, kami menggunakan sistem biner di mana setiap bit mendefinisikan izin. Ini paling baik ditunjukkan pada Tabel berikut

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

Sekarang kalau kita mau misalnya

a) pemilik file (= user) memiliki r benar menyebalkan, w ritus, dan e x ecute izin,
b) file kelompok diberikan r benar menyebalkan dan e x ecute perizinan, dan
c) semua orang lain hanya harus memiliki r akses ead.

Maka izin file yang dihasilkan akan:

 u   g   o
rwx r-x r--

Untuk mendapatkan ini dalam angka oktal, mis. untuk chmodperintah atau ketika kita harus memahami pesan kesalahan kita perlu mengisi tabel di atas seperti di bawah ini:

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

Setiap nomor izin harus ditambahkan untuk jumlah pengguna (4 + 2 + 1 = 7), grup (4 + 0 + 1 = 5), dan lainnya (4 + 0 + 0 = 4). Jumlah yang dihasilkan kemudian adalah:

 u   g   o
 7   5   4

Kami sekarang memiliki dua opsi untuk mengubah bit izin dengan chmod:

chmod u+rwx g+rx o+r filename

atau lebih sederhana dengan

chmod 751 filename

Kedua perintah akan melakukan hal yang sama.

Izin default untuk file yang baru dibuat di rumah kami adalah 664 (-rw-rw-r--).

Jika kita ingin file dapat dieksekusi sebagai program, kita harus mengubah izin ini.

  • Perhatikan bahwa kita juga harus mengubah izin direktori yang dapat dieksekusi ini. Hanya jika keduanya, bit file dan direktori yang dapat dieksekusi ditetapkan, kita akan diizinkan menjalankan file ini sebagai program.

  • Saat menyalin file ke rumah kami, itu akan kehilangan izin yang akan digantikan oleh izin default kami sendiri (kecuali jika kami menyalin menggunakan opsi lanjutan misalnya opsi arsip).

  • Juga perhatikan bahwa file dapat mewarisi izin mereka dari titik mount mereka, resp. opsi pemasangan. Ini penting saat memasang drive berformat Windows yang tidak mendukung izin Unix.

Pengguna dan Grup

Kami segera menyadari bahwa ini hanya setengah dari cerita. Kita juga perlu memilah barang-barang. Untuk melakukan ini, setiap file atau folder memiliki pemilik yang ditentukan, dan keanggotaan grup yang ditentukan.

Setiap kali kita membuat file, kita akan menjadi pemilik file, dan grup file juga akan menjadi kita. Dengan ls -lkita dapat melihat izin, kepemilikan, dan grup seperti yang terlihat dari contoh output berikut:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  • Kami hanya diizinkan untuk mengubah izin, grup, atau kepemilikan file yang menjadi milik kami.

Jika kita bukan pemilik file, kita akan mendapatkan Permission deniedkesalahan. Hanya root yang dapat mengubah ini untuk semua file. Inilah sebabnya mengapa kita harus menggunakan sudosaat mengedit izin file yang bukan milik kita. Ada dua perintah bawaan untuk melakukannya chownuntuk pengguna dan chgrpuntuk grup.

Untuk mengubah kepemilikan file dari siapa pun menjadi takkatkami dapat mengeluarkan perintah ini:

sudo chown takkat testfile

Untuk mengubah grup file menjadi yang takkatkami terbitkan

sudo chgrp takkat testfile

Baca halaman manual dari perintah untuk lebih detail dan opsi. Ada juga panduan rumit yang bagus ini direkomendasikan untuk dibaca lebih lanjut:

Temukan juga beberapa pertanyaan terkait di sini:

Takkat
sumber