GNU/Linux >> Belajar Linux >  >> Linux

Perintah Chmod di Linux (Izin File)

Di Linux, akses ke file dikelola melalui izin file, atribut, dan kepemilikan. Ini memastikan bahwa hanya pengguna dan proses yang berwenang yang dapat mengakses file dan direktori.

Tutorial ini mencakup cara menggunakan chmod perintah untuk mengubah izin akses file dan direktori.

Izin File Linux #

Sebelum melangkah lebih jauh, mari kita jelaskan model izin Linux dasar.

Di Linux, setiap file dikaitkan dengan pemilik dan grup dan diberikan dengan hak akses izin untuk tiga kelas pengguna yang berbeda:

  • Pemilik file.
  • Anggota grup.
  • Lainnya (semua orang).

Kepemilikan file dapat diubah menggunakan chown dan chgrp perintah.

Ada tiga jenis izin file yang berlaku untuk setiap kelas:

  • Izin membaca.
  • Izin menulis.
  • Izin eksekusi.

Konsep ini memungkinkan Anda untuk menentukan pengguna mana yang diizinkan untuk membaca file, menulis ke file, atau mengeksekusi file.

Izin file dapat dilihat menggunakan ls perintah:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

Karakter pertama menunjukkan jenis file. Ini bisa berupa file biasa (- ), direktori (d ), tautan simbolis(l ), atau jenis file khusus lainnya.

Sembilan karakter berikutnya mewakili hak akses file, tiga kembar tiga masing-masing tiga karakter. Triplet pertama menunjukkan izin pemilik, yang kedua izin grup, dan triplet terakhir menunjukkan izin orang lain. Izin dapat memiliki arti yang berbeda tergantung pada jenis file.

Pada contoh di atas (rw-r--r-- ) berarti pemilik file memiliki izin baca dan tulis (rw- ), grup dan lainnya hanya memiliki izin baca (r-- ).

Masing-masing dari tiga izin triplet dapat dibangun dari karakter berikut dan memiliki efek yang berbeda, tergantung pada apakah mereka disetel ke file atau direktori:

Pengaruh Izin pada File

Izin Karakter Arti pada File
Baca - File tidak dapat dibaca. Anda tidak dapat melihat konten file.
r File dapat dibaca.
Menulis - File tidak dapat diubah atau dimodifikasi.
w File dapat diubah atau dimodifikasi.
Jalankan - File tidak dapat dieksekusi.
x File dapat dieksekusi.
s Jika ditemukan di user triplet itu mengatur setuid sedikit. Jika ditemukan di group triplet, ini mengatur setgid sedikit. Ini juga berarti bahwa x flag disetel.
Bila setuid atau setgid flag diatur pada file yang dapat dieksekusi, file tersebut dieksekusi dengan pemilik file dan/atau hak grup.
S Sama seperti s tapi x bendera tidak diatur. Bendera ini jarang digunakan pada file.
t Jika ditemukan di others triplet itu mengatur sticky bit.
Ini juga berarti x bendera ditetapkan. Bendera ini tidak berguna pada file.
T Sama seperti t tapi x bendera tidak diatur. Bendera ini tidak berguna pada file.

Pengaruh Izin pada Direktori (Folder)

Di Linux, Direktori adalah jenis file khusus yang berisi file dan direktori lain.

Izin Karakter Arti pada Direktori
Baca - Isi direktori tidak dapat ditampilkan.
r Isi direktori dapat ditampilkan.
(mis. Anda dapat membuat daftar file di dalam direktori dengan ls .)
Menulis - Isi direktori tidak dapat diubah.
w Isi direktori dapat diubah.
(mis. Anda dapat membuat file baru, menghapus file ..dst.)
Jalankan - Direktori tidak dapat diubah menjadi.
x Direktori dapat dinavigasi menggunakan cd .
s Jika ditemukan di user triplet, ini menetapkan setuid sedikit. Jika ditemukan di group triplet itu mengatur setgid sedikit. Ini juga berarti bahwa x bendera ditetapkan. Ketika setgid flag disetel pada direktori, file baru yang dibuat di dalamnya mewarisi ID grup direktori (GID), bukan ID grup utama pengguna yang membuat file.
setuid tidak berpengaruh pada direktori.
S Sama seperti s tapi x bendera tidak diatur. Bendera ini tidak berguna di direktori.
t Jika ditemukan di others triplet itu mengatur sticky bit.
Ini juga berarti x bendera ditetapkan. Saat sticky bit disetel pada direktori, hanya pemilik file, pemilik direktori, atau pengguna administratif yang dapat menghapus atau mengganti nama file di dalam direktori.
T Sama seperti t tapi x bendera tidak diatur. Bendera ini tidak berguna di direktori.

Menggunakan chmod #

chmod perintah mengambil bentuk umum berikut:

chmod [OPTIONS] MODE FILE...

chmod perintah memungkinkan Anda untuk mengubah izin pada file menggunakan mode simbolik atau numerik atau file referensi. Kami akan menjelaskan mode secara lebih rinci nanti di artikel ini. Perintah dapat menerima satu atau lebih file dan/atau direktori yang dipisahkan oleh spasi sebagai argumen.

Hanya root, pemilik file, atau pengguna dengan hak sudo yang dapat mengubah izin file. Berhati-hatilah saat menggunakan chmod , terutama saat mengubah izin secara rekursif.

Metode Simbolik (Teks) #

Sintaks dari chmod perintah saat menggunakan mode simbolik memiliki format berikut:

chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...

Kumpulan bendera pertama ([ugoa…] ), tanda pengguna, menentukan kelas pengguna mana yang izin filenya diubah.

  • u - Pemilik file.
  • g - Pengguna yang menjadi anggota grup.
  • o - Semua pengguna lain.
  • a - Semua pengguna, identik dengan ugo .

Jika bendera pengguna dihilangkan, defaultnya adalah a dan izin yang disetel oleh umaskare tidak terpengaruh.

Kumpulan bendera kedua ([-+=] ), flag operasi, menentukan apakah izin akan dihapus, ditambahkan, atau disetel:

  • - Menghapus izin yang ditentukan.
  • + Menambahkan izin tertentu.
  • = Mengubah izin saat ini ke izin yang ditentukan. Jika tidak ada izin yang ditentukan setelah = simbol, semua izin dari kelas pengguna yang ditentukan akan dihapus.

Izin (perms... ) dapat diatur secara eksplisit menggunakan nol atau satu atau lebih huruf berikut:r , w , x , X , s , dan t . Gunakan satu huruf dari kumpulan u , g , dan o saat menyalin izin dari satu ke kelas pengguna lain.

Saat mengatur izin untuk lebih dari satu kelas pengguna ([,…] ), gunakan koma (tanpa spasi) untuk memisahkan mode simbolis.

Di bawah ini adalah beberapa contoh cara menggunakan chmod perintah dalam mode simbolis:

  • Berikan izin kepada anggota grup untuk membaca file, tetapi tidak untuk menulis dan menjalankannya:

    chmod g=r filename
  • Hapus izin eksekusi untuk semua pengguna:

    chmod a-x filename
  • Hapus izin menulis untuk pengguna lain secara rekursif:

    chmod -R o-w dirname
  • Hapus izin baca, tulis, dan eksekusi untuk semua pengguna kecuali pemilik file:

    chmod og-rwx filename

    Hal yang sama juga dapat dilakukan dengan menggunakan formulir berikut:

    chmod og= filename
  • Berikan izin baca, tulis, dan eksekusi kepada pemilik file, izin baca ke grup file, dan tidak ada izin untuk semua pengguna lain:

    chmod u=rwx,g=r,o= filename
  • Tambahkan izin pemilik file ke izin yang dimiliki anggota grup file:

    chmod g+u filename
  • Tambahkan sedikit sticky ke direktori yang diberikan:

    chmod o+t dirname

Metode Numerik #

Sintaks dari chmod perintah saat menggunakan metode numerik memiliki format berikut:

chmod [OPTIONS] NUMBER FILE...

Saat menggunakan mode numerik, Anda dapat mengatur izin untuk ketiga kelas pengguna (pemilik, grup, dan lainnya) secara bersamaan.

NUMBER bisa berupa angka 3 atau 4 digit.

Saat 3 digit angka digunakan, digit pertama mewakili izin pemilik file, yang kedua grup file, dan yang terakhir semua pengguna lain.

Setiap izin menulis, membaca, dan mengeksekusi memiliki nilai angka berikut:

  • r (baca) =4
  • w (tulis) =2
  • x (eksekusi) =1
  • tidak ada izin =0

Nomor izin kelas pengguna tertentu diwakili oleh jumlah nilai izin untuk grup tersebut.

Untuk mengetahui izin file dalam mode numerik cukup hitung total untuk semua kelas pengguna. Misalnya, untuk memberikan izin baca, tulis, dan eksekusi kepada pemilik file, izin baca dan eksekusi ke grup file, dan hanya izin baca ke semua pengguna lain, Anda harus melakukan hal berikut:

  • Pemilik:rwx=4+2+1=7
  • Grup:r-x=4+0+1=5
  • Lainnya:r-x=4+0+0=4

Dengan menggunakan metode di atas, kita sampai pada angka 754 , yang mewakili izin yang diinginkan.

Untuk mengatur setuid , setgid , dan sticky bit bendera menggunakan empat digit angka.

Bila 4 digit angka yang digunakan, digit pertama memiliki arti sebagai berikut:

  • setuid=4
  • setgid=2
  • lengket=1
  • tidak ada perubahan =0

Tiga digit berikutnya memiliki arti yang sama seperti saat menggunakan 3 digit angka.

Jika digit pertama adalah 0 dapat dihilangkan, dan mode dapat diwakili dengan 3 digit. Mode numerik 0755 sama dengan 755 .

Untuk menghitung mode numerik Anda juga dapat menggunakan metode lain (metode biner), tetapi sedikit lebih rumit. Mengetahui cara menghitung mode numerik menggunakan 4, 2, dan 1 sudah cukup untuk sebagian besar pengguna.

Anda dapat memeriksa izin file dalam notasi numerik menggunakan stat perintah:

stat -c "%a" filename
644

Berikut adalah beberapa contoh cara menggunakan chmod perintah dalam mode numerik:

  • Berikan izin baca dan tulis kepada pemilik file dan izin baca saja kepada anggota grup dan semua pengguna lain:

    chmod 644 dirname
  • Berikan izin membaca, menulis, dan mengeksekusi kepada pemilik file, izin membaca dan mengeksekusi kepada anggota grup dan tidak memberikan izin kepada semua pengguna lain:

    chmod 750 dirname
  • Berikan izin baca, tulis, dan eksekusi, dan sedikit sticky ke direktori tertentu:

    chmod 1777 dirname
  • Setel izin baca, tulis, dan eksekusi secara rekursif ke pemilik file dan tidak ada izin untuk semua pengguna lain di direktori tertentu:

    chmod -R 700 dirname

Menggunakan File Referensi #

--reference=ref_file opsi memungkinkan Anda untuk mengatur izin file agar sama dengan file referensi yang ditentukan (ref_file ).

chmod --reference=REF_FILE FILE

Misalnya, perintah berikut akan menetapkan izin file1 ke file2

chmod --reference=file1 file2

Ubah Izin File Secara Rekursif #

Untuk mengoperasikan secara rekursif pada semua file dan direktori di bawah direktori yang diberikan, gunakan -R (--recursive ) pilihan:

chmod -R MODE DIRECTORY

Misalnya, untuk mengubah izin semua file dan subdirektori di bawah /var/www direktori ke 755 Anda akan menggunakan:

chmod -R 755 /var/www

Tautan simbolis selalu memiliki 777 izin.

Secara default, saat mengubah izin symlink, chmod akan mengubah izin pada file yang ditunjuk tautan.

chmod 755 symlink

Kemungkinannya adalah alih-alih mengubah kepemilikan target, Anda akan mendapatkan kesalahan “tidak dapat mengakses ‘symlink’:Izin ditolak”.

Kesalahan terjadi karena secara default pada sebagian besar distribusi Linux, symlink dilindungi, dan Anda tidak dapat beroperasi pada file target. Opsi ini ditentukan di /proc/sys/fs/protected_symlinks . 1 berarti diaktifkan dan 0 dengan disabilitas. Disarankan untuk tidak menonaktifkan perlindungan symlink.

Mengubah Izin File Secara Massal #

Terkadang ada situasi di mana Anda perlu mengubah izin file dan direktori secara massal.

Skenario yang paling umum adalah mengubah izin file situs web secara rekursif menjadi 644 dan izin direktori ke 755 .

Menggunakan metode numerik:

find /var/www/my_website -type d -exec chmod 755 {} \;find /var/www/my_website -type f -exec chmod 644 {} \;

Menggunakan metode simbolis:

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

find perintah akan mencari file dan direktori di bawah /var/www/my_website dan berikan setiap file dan direktori yang ditemukan ke chmod perintah untuk mengatur izin.

Kesimpulan #

chmod perintah mengubah izin file. Izin dapat diatur menggunakan mode simbolik atau numerik.

Untuk mempelajari lebih lanjut tentang chmod kunjungi halaman manual chmod.

Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.


Linux
  1. Dasar-dasar Izin File Linux

  2. Izin Linux:Pengantar chmod

  3. Perintah wc Linux

  1. 9 Contoh Perintah chmod Cepat di Linux

  2. Perintah grep Linux

  3. Perintah chmod Linux

  1. Memahami Izin File Linux

  2. Perintah Ekor Linux

  3. Perintah Sentuh Linux