Android

Perintah Chmod dalam linux (kebenaran fail)

Linux команда chmod - команда изменения прав доступа.

Linux команда chmod - команда изменения прав доступа.

Isi kandungan:

Anonim

Di Linux, akses ke fail diuruskan melalui kebenaran fail, atribut, dan pemilikan. Ini memastikan bahawa hanya pengguna dan proses yang dibenarkan boleh mengakses fail dan direktori.

Tutorial ini merangkumi cara menggunakan perintah chmod untuk menukar kebenaran akses fail dan direktori.

Kebenaran Fail Linux

Sebelum meneruskan, mari kita jelaskan model kebenaran asas Linux.

Di Linux, setiap fail dikaitkan dengan pemilik dan kumpulan dan diberikan hak akses kebenaran untuk tiga kelas pengguna yang berbeza:

  • Pemilik fail. Anggota kumpulan. Lebih-lebih lagi (orang lain).

Pemilikan fail boleh diubah menggunakan perintah chown dan chgrp .

Terdapat tiga jenis kebenaran fail yang digunakan untuk setiap kelas:

  • Kebenaran membaca. Menulis kebenaran. Laksanakan izin.

Konsep ini membolehkan anda menentukan pengguna mana yang dibenarkan untuk membaca fail, menulis ke fail, atau melaksanakan fail.

Kebenaran fail boleh dilihat menggunakan arahan 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

Watak pertama menunjukkan jenis fail. Ia boleh menjadi fail biasa ( - ), direktori ( d ), pautan simbolik ( l ), atau sebarang jenis fail khas yang lain.

Sembilan aksara seterusnya mewakili kebenaran fail, tiga tiga kali ganda daripada tiga aksara setiap satu. Triplet pertama menunjukkan keizinan pemilik, keizinan kumpulan kedua, dan triplet terakhir menunjukkan semua orang keizinan. Kebenaran boleh mempunyai makna yang berbeza bergantung pada jenis fail.

Dalam contoh di atas ( rw-r--r-- ) bermakna pemilik fail telah membaca dan menulis kebenaran ( rw- ), kumpulan dan yang lain hanya membaca kebenaran ( r-- ).

Setiap satu daripada tiga helai kebenaran boleh dibina dari aksara berikut dan mempunyai kesan yang berbeza, bergantung kepada sama ada ia ditetapkan ke fail atau ke direktori:

Kesan Kebenaran pada Fail

Kebenaran Watak Makna pada Fail
Baca - Fail tidak boleh dibaca. Anda tidak boleh melihat kandungan fail.
r Fail boleh dibaca.
Tulis - Fail tidak boleh diubah atau diubah suai.
w Fail boleh diubah atau diubah suai.
Jalankan - Fail tidak dapat dilaksanakan.
x Fail boleh dilaksanakan.
s Sekiranya terdapat dalam triplet user ia menetapkan bit setuid . Sekiranya terdapat dalam triplet group , ia menetapkan bit setgid . Ia juga bermaksud bahawa bendera x ditetapkan.

Apabila bendera setuid atau setgid ditetapkan pada fail boleh laku, fail itu dilaksanakan dengan hak milik pemilik dan / atau kumpulan.

S Sama seperti s tetapi bendera x tidak ditetapkan. Bendera ini jarang digunakan pada fail.
t Sekiranya terdapat di triplets yang others ia menetapkan sedikit sticky .

Ia juga bermaksud bahawa bendera x ditetapkan. Bendera ini tidak berguna pada fail.

T Sama seperti t tetapi bendera x tidak ditetapkan. Bendera ini tidak berguna pada fail.

Kesan Kebenaran pada Direktori (Folder)

Di Linux, Direktori adalah jenis khas fail yang mengandungi fail dan direktori lain.

Kebenaran Watak Makna di Direktori
Baca - Kandungan direktori tidak dapat ditunjukkan.
r Kandungan direktori boleh ditunjukkan.

(cth. Anda boleh menyenaraikan fail di dalam direktori dengan ls .)

Tulis - Kandungan direktori tidak boleh diubah.
w Kandungan direktori boleh diubah.

(contohnya Anda tidak boleh membuat fail baru, padam fail.. etc)

Jalankan - Direktori ini tidak boleh ditukar kepada.
x Direktori ini boleh dilayari menggunakan cd .
s Sekiranya terdapat dalam triplet user , ia menetapkan bit setuid . Sekiranya terdapat dalam triplet group ia menetapkan bit setgid . Ia juga bermaksud bahawa bendera x ditetapkan. Apabila bendera setgid ditetapkan pada direktori, fail-fail baru yang dibuat di dalamnya mewarisi kumpulan ID direktori (GID), dan bukannya ID kumpulan utama pengguna yang membuat fail tersebut.

setuid tidak mempunyai kesan ke atas direktori.

S Sama seperti s tetapi bendera x tidak ditetapkan. Bendera ini tidak berguna pada direktori.
t Sekiranya terdapat di triplets yang others ia menetapkan sedikit sticky .

Ia juga bermaksud bahawa bendera x ditetapkan. Apabila bit melekit ditetapkan pada direktori, hanya pemilik fail, pemilik direktori, atau pengguna pentadbiran boleh memadam atau menamakan semula fail dalam direktori.

T Sama seperti t tetapi bendera x tidak ditetapkan. Bendera ini tidak berguna pada direktori.

Menggunakan chmod

Perintah chmod mengambil bentuk umum berikut:

chmod MODE FILE…

Perintah chmod membolehkan anda menukar keizinan pada fail menggunakan mod simbolik atau angka atau fail rujukan. Kami akan menerangkan mod lebih terperinci kemudian. Perintah itu boleh menerima satu atau lebih fail dan / atau direktori yang dipisahkan oleh ruang sebagai argumen.

Hanya root, pemilik fail atau pengguna dengan hak istimewa sudo boleh menukar keizinan fail. Lebih berhati-hati apabila menggunakan chmod , terutamanya apabila menukar kebenaran secara rekursif.

Kaedah simbolik (Teks)

Sintaks perintah chmod apabila menggunakan mod simbolik mempunyai format berikut:

chmod perms… FILE…

Set pertama bendera ( ), bendera pengguna, mendefinisikan kelas pengguna yang keizinan ke fail diubah.

  • u - Pemilik fail. g - Pengguna yang menjadi ahli kumpulan. o - Semua pengguna lain. a - Semua pengguna, sama dengan ugo .

Jika bendera pengguna diabaikan, satu lalai adalah dan kebenaran yang ditetapkan oleh umask tidak terjejas.

Set kedua bendera ( ), bendera operasi, menentukan sama ada keizinan itu akan dialih keluar, ditambah atau ditetapkan:

  • - Menghapuskan kebenaran yang ditentukan. + Menambah keizinan yang ditentukan. = Perubahan keizinan semasa ke kebenaran yang ditentukan. Sekiranya tiada keizinan ditentukan selepas simbol = semua izin daripada kelas pengguna yang ditentukan akan dikeluarkan.

Kebenaran ( perms… ) boleh ditetapkan secara eksplisit menggunakan sifar atau satu atau lebih huruf berikut: r , w , x , X , s , dan t . Gunakan satu huruf dari set u , g , dan o apabila menyalin kebenaran daripada satu kepada kelas pengguna lain.

Apabila menetapkan keizinan untuk lebih daripada satu kelas pengguna ( ), gunakan koma (tanpa ruang) untuk memisahkan mod simbolik.

Berikut adalah beberapa contoh bagaimana untuk menggunakan perintah chmod dalam mod simbolik:

  • Berikan ahli-ahli keizinan kumpulan untuk membaca fail tersebut, tetapi tidak menulis dan melaksanakannya:

    chmod g=r filename

    Keluarkan kebenaran pelaksanaan untuk semua pengguna:

    chmod ax filename

    Mengeluarkan kebenaran menulis secara berulang untuk pengguna lain:

    chmod -R ow dirname

    Keluarkan kebenaran baca, tulis dan laksanakan untuk semua pengguna kecuali pemilik fail:

    chmod og-rwx filename

    Perkara yang sama juga boleh dilakukan dengan menggunakan borang berikut:

    chmod og= filename

    Beri baca, tulis dan laksanakan kebenaran kepada pemilik fail tersebut, baca keizinan pada kumpulan fail dan tidak ada kebenaran kepada semua pengguna lain:

    chmod u=rwx, g=r, o= filename

    Tambah keizinan pemilik fail kepada kebenaran yang ahli mempunyai kumpulan fail:

    chmod g+u filename

    Tambah sedikit melekat pada direktori yang diberikan:

    chmod o+t dirname

Kaedah Numerik

Sintaks perintah chmod apabila menggunakan kaedah angka mempunyai format berikut:

chmod NUMBER FILE…

Apabila menggunakan mod angka, anda boleh menetapkan keizinan untuk ketiga-tiga kelas pengguna (pemilik, kumpulan, dan semua yang lain) pada masa yang sama.

NUMBER boleh menjadi nombor 3 atau 4 digit.

Apabila nombor 3 digit digunakan, angka pertama mewakili kebenaran pemilik fail, yang kedua dari kumpulan fail dan yang terakhir semua pengguna lain.

Setiap menulis, membaca, dan melaksanakan keizinan mempunyai nilai nombor berikut:

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

Nombor kebenaran kelas pengguna tertentu diwakili oleh jumlah nilai kebenaran untuk kumpulan itu.

Untuk mengetahui keizinan fail dalam mod angka hanya mengira jumlah untuk semua kelas pengguna. Sebagai contoh, untuk memberi kebenaran membaca, menulis dan melaksanakan pemilik fail, baca dan laksanakan kebenaran ke kumpulan fail dan hanya baca kebenaran kepada semua pengguna lain yang akan anda lakukan sebagai berikut:

  • Pemilik: rwx = 4 + 2 + 1 = 7Group: rx = 4 + 0 + 1 = 5Orang: rx = 4 + 0 + 0 = 4

Dengan menggunakan kaedah di atas, kita dapat mencapai nombor 754 , yang mewakili keizinan yang diingini.

Untuk menubuhkan setuid , setgid dan bendera sticky bit menggunakan empat nombor digit.

Apabila nombor 4 digit digunakan, digit pertama mempunyai makna yang berikut:

  • setuid = 4setgid = 2sticky = 1ntuk berubah = 0

Tiga digit seterusnya mempunyai makna yang sama seperti apabila menggunakan 3 nombor digit.

Jika digit pertama adalah 0, ia boleh ditinggalkan, dan mod boleh diwakili dengan 3 digit. Mod angka 0755 adalah sama dengan 755 .

Untuk mengira mod angka anda juga boleh menggunakan kaedah lain (kaedah binari), tetapi ia agak rumit. Mengetahui cara mengira mod angka menggunakan 4, 2, dan 1 adalah mencukupi untuk kebanyakan pengguna.

Anda boleh menyemak keizinan fail dalam notasi angka menggunakan perintah stat :

stat -c "%a" filename

644

Berikut adalah beberapa contoh bagaimana untuk menggunakan perintah chmod dalam mod angka:

  • Berikan pemilik fail membaca dan menulis kebenaran dan hanya membaca kebenaran kepada ahli kumpulan dan semua pengguna lain:

    chmod 644 dirname

    Beri pemilik fail membaca, menulis dan melaksanakan kebenaran, baca dan laksanakan kebenaran kepada ahli kumpulan dan tidak ada kebenaran kepada semua pengguna lain:

    chmod 750 dirname

    Berikan baca, tulis, dan laksanakan kebenaran, dan sedikit melekat pada direktori yang diberikan:

    chmod 1777 dirname

    Secara rawak set baca, tulis, dan laksanakan kebenaran kepada pemilik fail dan tidak ada kebenaran untuk semua pengguna lain pada direktori tertentu:

    chmod -R 700 dirname

Menggunakan Fail Rujukan

- Pilihan --reference=ref_file pilihan --reference=ref_file membolehkan anda untuk menetapkan keizinan fail untuk menjadi sama seperti fail rujukan tertentu ( ref_file ).

chmod --reference=REF_FILE FILE

Sebagai contoh, arahan berikut akan memberikan kebenaran file1 ke file2

chmod --reference=file1 file2

Secara Rekursif Tukar Kebenaran Fail

Untuk beroperasi secara --recursive pada semua fail dan direktori di bawah direktori yang diberikan, gunakan pilihan -R (- --recursive ):

chmod -R MODE DIRECTORY

Sebagai contoh, untuk menukar keizinan semua fail dan subdirektori di bawah direktori /var/www kepada 755 anda akan menggunakan:

chmod -R 755 /var/www

Mengendalikan Pautan Simbolik

Pautan simbolik sentiasa mempunyai 777 kebenaran.

Secara lalai, apabila menukar keizinan symlink, chmod akan menukar keizinan pada fail yang ditunjuk pautan.

chmod 755 symlink

Kebarangkalian bahawa bukannya menukar pemilikan sasaran, anda akan mendapat "symlink" tidak dapat mengakses 'Permissions denied'.

Ralat berlaku kerana secara lalai pada kebanyakan symlinks distribusi Linux dilindungi, dan anda tidak boleh beroperasi pada fail sasaran. Pilihan ini dinyatakan dalam /proc/sys/fs/protected_symlinks . 1 bermakna diaktifkan dan 0 orang kurang upaya. Adalah disyorkan untuk tidak melumpuhkan perlindungan symlink.

Menukar Kebenaran Fail dalam Bulk

Kadang-kadang terdapat situasi di mana anda perlu menukar fail dan kebenaran direktori secara pukal.

Senario yang paling biasa ialah mengubah rekod fail laman web secara rekursif kepada 644 dan keizinan direktori kepada 755 .

Menggunakan kaedah angka:

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

Menggunakan kaedah simbolik:

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 fail dan direktori di bawah /var/www/my_website dan lulus setiap fail dan direktori yang terdapat pada perintah chmod untuk menetapkan kebenaran.

Kesimpulannya

Perintah chmod mengubah keizinan fail. Kebenaran boleh ditetapkan menggunakan mod simbolik atau angka.

Untuk mengetahui lebih lanjut mengenai chmod lawati halaman lelaki chmod.

terminal chmod