Android

Perintah Chmod di linux (izin file)

Menggunakan Terminal Linux - File Permission (Hak Akses File)

Menggunakan Terminal Linux - File Permission (Hak Akses File)

Daftar Isi:

Anonim

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

Tutorial ini mencakup cara menggunakan perintah chmod 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 ditugaskan dengan hak akses izin untuk tiga kelas pengguna yang berbeda:

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

Kepemilikan file dapat diubah menggunakan perintah chown dan chgrp .

Ada tiga jenis izin file yang berlaku untuk setiap kelas:

  • Izin baca. Izin menulis. Izin eksekusi.

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

Izin file dapat dilihat menggunakan perintah ls :

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 tipe file. Ini bisa berupa file biasa ( - ), direktori ( d ), tautan simbolik ( l ), atau jenis file khusus lainnya.

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

Dalam contoh di atas ( rw-r--r-- ) berarti bahwa pemilik file telah membaca dan menulis izin ( rw- ), grup dan yang lainnya hanya memiliki izin baca ( r-- ).

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

Pengaruh Izin pada File

Izin Karakter Berarti 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.
Menjalankan - File tidak dapat dieksekusi.
x File dapat dieksekusi.
s Jika ditemukan di triplet user itu mengatur bit setuid . Jika ditemukan di triplet group , itu mengatur bit setgid . Ini juga berarti bahwa x flag disetel.

Ketika flag setuid atau setgid ditetapkan pada file yang dapat dieksekusi, file dieksekusi dengan pemilik file dan / atau hak istimewa grup.

S Sama seperti s tetapi bendera x tidak disetel. Bendera ini jarang digunakan pada file.
t Jika ditemukan di triplet yang others itu mengatur bit sticky .

Ini juga berarti bahwa x flag disetel. Bendera ini tidak berguna untuk file.

T Sama seperti t tetapi bendera x tidak disetel. Bendera ini tidak berguna untuk file.

Pengaruh Izin pada Direktori (Folder)

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

Izin Karakter Berarti di Direktori
Baca - Isi direktori tidak dapat ditampilkan.
r Konten direktori dapat ditampilkan.

(mis. Anda dapat membuat daftar file di dalam direktori dengan ls .)

Menulis - Isi direktori tidak dapat diubah.
w Konten direktori dapat diubah.

(mis. Anda tidak dapat membuat file baru, menghapus file.. dll)

Menjalankan - Direktori tidak dapat diubah menjadi.
x Direktori dapat dinavigasi menggunakan cd .
s Jika ditemukan di triplet user , itu mengatur bit setuid . Jika ditemukan di triplet group itu menetapkan bit setgid . Ini juga berarti bahwa x flag disetel. Ketika flag setgid diatur pada direktori, file-file baru yang dibuat di dalamnya mewarisi ID grup direktori (GID), alih-alih ID grup utama dari pengguna yang membuat file.

setuid tidak berpengaruh pada direktori.

S Sama seperti s tetapi bendera x tidak disetel. Bendera ini tidak berguna di direktori.
t Jika ditemukan di triplet yang others itu mengatur bit sticky .

Ini juga berarti bahwa x flag disetel. Ketika bit sticky diatur pada direktori, hanya pemilik file, pemilik direktori, atau pengguna administratif yang dapat menghapus atau mengganti nama file dalam direktori.

T Sama seperti t tetapi bendera x tidak disetel. Bendera ini tidak berguna di direktori.

Menggunakan chmod

Perintah chmod mengambil bentuk umum berikut:

chmod MODE FILE…

Perintah chmod memungkinkan Anda untuk mengubah izin pada file menggunakan mode simbolik atau numerik atau file referensi. Kami akan menjelaskan mode secara lebih rinci nanti. 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 perintah chmod saat menggunakan mode simbolik memiliki format berikut:

chmod perms… FILE…

Set bendera pertama ( ), flag pengguna, menentukan pengguna mana saja yang hak aksesnya diubah.

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

Jika flag pengguna dihilangkan, yang standar adalah a dan izin yang diatur oleh umask tidak terpengaruh.

Set kedua bendera ( ), flag operasi, menentukan apakah izin harus dihapus, ditambahkan, atau disetel:

  • - Menghapus izin yang ditentukan. + Menambahkan izin yang ditentukan. = 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 secara eksplisit diatur menggunakan nol atau satu atau lebih dari huruf-huruf berikut: r , w , x , X , s , dan t . Gunakan satu huruf dari set 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 simbolik.

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

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

    chmod g=r filename

    Hapus izin eksekusi untuk semua pengguna:

    chmod ax filename

    Secara tegas menghapus izin menulis untuk pengguna lain:

    chmod -R ow dirname

    Hapus izin baca, tulis, dan jalankan untuk semua pengguna kecuali pemilik file:

    chmod og-rwx filename

    Hal yang sama dapat dicapai dengan menggunakan formulir berikut:

    chmod og= filename

    Berikan izin baca, tulis, dan jalankan kepada pemilik file, baca izin untuk 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 perintah chmod saat menggunakan metode numerik memiliki format berikut:

chmod NUMBER FILE…

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

NUMBER dapat berupa angka 3 atau 4 digit.

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

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

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

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

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, baca dan jalankan izin untuk grup file dan hanya baca izin untuk semua pengguna lain yang akan Anda lakukan sebagai berikut:

  • Pemilik: rwx = 4 + 2 + 1 = 7Group: rx = 4 + 0 + 1 = 5Lain-lain: rx = 4 + 0 + 0 = 4

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

Untuk mengatur flag sticky bit setuid , setgid , dan sticky bit gunakan empat digit angka.

Ketika nomor 4 digit digunakan, digit pertama memiliki arti sebagai berikut:

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

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

Jika digit pertama adalah 0 maka dapat dihilangkan, dan mode dapat direpresentasikan dengan 3 digit. Mode angka 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 angka menggunakan perintah stat :

stat -c "%a" filename

644

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

  • Berikan izin kepada pemilik file untuk membaca dan menulis dan hanya baca izin untuk anggota grup dan semua pengguna lain:

    chmod 644 dirname

    Berikan pemilik file membaca, menulis, dan mengeksekusi izin, membaca dan mengeksekusi izin untuk anggota grup dan tidak ada izin untuk semua pengguna lain:

    chmod 750 dirname

    Berikan membaca, menulis, dan mengeksekusi izin, dan sedikit lengket ke direktori yang diberikan:

    chmod 1777 dirname

    Secara rekursif mengatur baca, tulis, dan jalankan izin untuk pemilik file dan tidak ada izin untuk semua pengguna lain pada direktori yang diberikan:

    chmod -R 700 dirname

Menggunakan File Referensi

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

chmod --reference=REF_FILE FILE

Sebagai contoh, perintah berikut akan menetapkan izin file1 ke file2

chmod --reference=file1 file2

Secara Berurutan Mengubah Izin File

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

chmod -R MODE DIRECTORY

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

chmod -R 755 /var/www

Beroperasi pada Tautan Simbolik

Tautan simbolik selalu memiliki 777 izin.

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

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 dinonaktifkan. Disarankan untuk tidak menonaktifkan perlindungan symlink.

Mengubah Izin File dalam Jumlah Besar

Kadang-kadang ada situasi di mana Anda perlu mengubah file dan izin direktori secara massal.

Skenario yang paling umum adalah mengubah secara perizinan file situs web menjadi 644 dan izin direktori menjadi 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 {} ;

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

Kesimpulan

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

Untuk mempelajari lebih lanjut tentang chmod kunjungi halaman manual chmod.

terminal chmod