GNU/Linux >> Belajar Linux >  >> Linux

Pengenalan perintah chmod Linux

Setiap objek di sistem Linux Anda memiliki mode izin yang menjelaskan tindakan apa yang dapat dilakukan pengguna di dalamnya. Ada tiga jenis izin:baca (r ), tulis (w ), dan jalankan (x ).

Untuk membaca sebuah file adalah untuk melihat isinya. Misalnya, file teks harus memiliki baca izin bagi seseorang untuk membaca teks di dalamnya. Jika pengguna ingin menambahkan kalimat ke file itu, perlu tulis izin. eksekusi izin memungkinkan seseorang untuk menjalankan file, seperti skrip shell atau file program biner.

Izin dasar

ls -l perintah menampilkan izin yang diberikan ke file. Misalnya:

ls -l
-rw-rw-r-- 1 bruce bruce    0 Jul 30 16:25 schedule1.txt

Beberapa izin (rw ) muncul lebih dari sekali karena merujuk ke entitas yang berbeda:pengguna , grup , dan lainnya . Pengguna identik dengan pemiliknya, dan grup merujuk ke grup utama pengguna, keduanya bruce . Lainnya merujuk ke semua pengguna lain.

Posisi pertama menunjukkan jenis objek:- untuk sebuah file, d untuk direktori, dan l untuk tautan simbolis. Sembilan posisi berikutnya dikelompokkan menjadi tiga dan menggambarkan mode izin. Posisi diurutkan r ,dengan ,x , dan grup diurutkan sebagai pengguna , grup , lainnya .

------- rwx rwx rwx
uuu ggg ooo u=pengguna, g=grup, o=lainnya

File

File dengan bit baca, tulis, dan eksekusi yang ditetapkan untuk semua entitas akan muncul:

rwxrwxrwx 

Tentu saja, kami biasanya tidak mengonfigurasi file ini secara permisif di dunia nyata; ini hanya ilustrasi bagaimana setiap posisi digunakan.

Dalam contoh berikut, file dikonfigurasi untuk pemiliknya (pablo ) memiliki izin membaca dan menulis, anggota grup hanya memiliki izin membaca, dan semua orang tidak memiliki izin.

-rw-r----- 1 pablo pablo    0 Jul 30 16:25 textfile

chmod perintah memodifikasi mode izin objek dalam sistem. Ini adalah salah satu perintah yang paling sering digunakan dan penting dalam rangkaian perintah keamanan Linux.

Nilai tambah (+ ) simbol menambahkan izin, dan tanda minus (- ) simbol menghapus izin. Anda dapat membaca chmod u+r sebagai "pengguna plus baca", karena memberi pengguna baca izin. Perintah chmod u-r berarti "pengguna dikurangi baca", karena diperlukan baca izin dari pengguna.

Direktori

Tiga izin yang sama juga berlaku untuk direktori. Direktori harus memiliki baca izin bagi pengguna untuk melihat isinya. Ini akan membutuhkan tulis izin bagi pengguna untuk menambahkan ke direktori (mis., Untuk membuat file baru). Bagi pengguna untuk mengubah ke direktori (cd ), harus memiliki eksekusi izin.

drw-rw-r-- 2 pablo pablo 4096 Jul 30 15:56 JBOSS

Pablo mungkin adalah pemilik direktori JBOSS, tetapi karena dia tidak memiliki izin eksekusi, dia tidak dapat cd ke dalamnya. Dia bisa menggunakan perintah chmod u+x untuk menambahkan izin, lalu dia dapat cd ke dalamnya.

$ cd JBOSS
bash: cd: JBOSS: Permission denied
$ chmod u+x JBOSS
$ ls -l
drwxrw-r-- 2 pablo pablo 4096 Jul 30 15:56 JBOSS
$ cd JBOSS
$ pwd
/opt/JBOSS

Argumen gabungan

Anda dapat menggabungkan argumen menggunakan koma. Dalam contoh ini, Anda hanya perlu satu perintah untuk mengatur izin sehingga grup tidak dapat menulis ke file atau seluruh dunia tidak dapat membacanya:

$ chmod o-r,g-w readme.txt
$ ls -l
-rw-r----- 1 pablo share 0 Jul 31 13:34 readme.txt

Anda dapat membaca ini sebagai "lainnya dikurangi membaca dan grup dikurangi menulis."

Misalkan Denise telah menulis skrip Bash yang disebut home_backup.sh dan ingin memberikannya eksekusi izin. Dia juga ingin mencegah orang lain membaca, menulis, atau mengeksekusinya. Salah satu cara untuk melakukannya adalah dengan simbol plus dan minus:

$ chmod go-rw,u+x home_backup.sh

Cara lain adalah dengan menggunakan persamaan (= ) simbol. Ini akan mengatur izin sepenuhnya tanpa memperhatikan pengaturan sebelumnya. Perhatikan bahwa ada spasi setelah yang kedua sama dengan; ini menunjukkan nilai none :

$ chmod u=rwx,go= home_backup.sh

Anda dapat membaca ini sebagai "izin untuk pengguna yang sama membaca, menulis, dan mengeksekusi dan izin untuk grup dan lainnya tidak sama."

Mode numerik

Chmod juga mendukung mode numerik, yang menggunakan nilai yang ditetapkan untuk setiap posisi:

pemilik grup lainnya
r w x r w x r w x
400 200 100 40 20 10 4 2 1

Nilai total dari satu set izin dapat dihitung dan diteruskan ke perintah chmod sebagai argumen tunggal. Ambil contoh dengan Denise dan skrip cadangannya. Jika dia menggunakan mode numerik untuk mengatur izin pada skripnya, dia harus terlebih dahulu menghitung total nilai:

-rwx------ 1 denise denise 0 Jul 31 13:53 home_backup.sh

Denise menambahkan angka yang sesuai dengan setiap izin yang ingin dia terapkan:

400 + 200 + 100 =700

Perintahnya adalah chmod 700 home_backup.sh . Misalkan Denise ingin mengatur ulang izin asli pada file:

-rw-rw-r-- 1 denise denise 0 Jul 31 13:53 home_backup.sh

Nilai izin ini dihitung menjadi 664:

400 + 200 + 40 + 20 + 4 =664

Denise dapat menggunakan perintah chmod 664 home_backup.sh untuk memulihkan izin asli.

Mode khusus

Tiga mode lain dapat diatur pada objek:

nama simbolis numerik
setuid s 4000
setgid s 2000
lengket t 1000

SetUID bit memberlakukan kepemilikan pengguna pada file yang dapat dieksekusi. Saat disetel, file akan dijalankan dengan ID pengguna pemilik file, bukan orang yang menjalankannya.

$ chmod u+s

SetGID bit memberlakukan kepemilikan grup pada file dan direktori. Ketika disetel, file atau direktori apa pun yang dibuat dalam direktori akan mendapatkan kepemilikan grup direktori, bukan milik pengguna. Ketika disetel pada file, file akan selalu dieksekusi sebagai grup pemiliknya dan bukan sebagai pengguna:

$ chmod g+s

lengket bit, juga disebut sebagai "tanda penghapusan terbatas", dapat diatur pada direktori untuk mencegah siapa pun kecuali pemilik direktori menghapus file di direktori tersebut:

$ chmod o+t

Bit lengket dapat diatur dalam mode numerik dengan menambahkan nilainya ke izin lainnya. Jika Anda memiliki objek dengan nilai 755 dan Anda ingin mengatur bit yang lengket, tambahkan 1000:

1000 + 400 + 200 + 100 + 40 + 10 + 4 + 1 =1755

Perintah ini akan menjadi chmod 1755 . Beberapa metode simbolis setara; salah satu contohnya adalah chmod u=rwx,go=rx,o+t .

Ekstra

Huruf a adalah jalan pintas untuk memberikan izin kepada semua pengguna. Perintah chmod a+rwx setara dengan chmod ugo+rwx .

Rekursif

Seperti banyak perintah Linux lainnya, chmod memiliki argumen rekursif, -R , yang memungkinkan Anda untuk beroperasi pada direktori dan isinya secara rekursif. Dengan rekursif, Ini berarti bahwa perintah akan mencoba untuk beroperasi pada semua objek di bawah direktori yang ditentukan daripada hanya direktori itu sendiri. Contoh ini dimulai di direktori kosong dan menambahkan -v (verbose) argumen, jadi chmod akan melaporkan apa yang dilakukannya:

$ ls -l . conf
.:
drwxrwxr-x 2 alan alan 4096 Aug  5 15:33 conf

conf:
-rw-rw-r-- 1 alan alan 0 Aug  5 15:33 conf.xml
$ chmod -vR 700 conf
mode of 'conf' changed from 0775 (rwxrwxr-x) to 0700 (rwx------)
mode of 'conf/conf.xml' changed from 0664 (rw-rw-r--) to 0700 (rwx------)

Referensi

Perintah file referensi (--reference=RFILE ) dapat digunakan untuk menduplikasi mode file lain (RFILE ), yang dikenal sebagai file referensi. Ini berguna saat Anda mengubah mode pada file agar sesuai dengan konfigurasi tertentu atau saat Anda tidak mengetahui mode yang tepat—atau tidak ingin meluangkan waktu untuk menghitungnya:

$ ls -l
-rw-r--r-x 1 alan alan 0 Aug  5 17:10 notes.txt
-rw-rw-r-- 1 alan alan 0 Aug  5 17:10 readme.txt
$ chmod --reference=readme.txt notes.txt
$ ls -l
-rw-rw-r-- 1 alan alan 0 Aug  5 17:10 notes.txt
-rw-rw-r-- 1 alan alan 0 Aug  5 17:10 readme.txt

Laporkan perubahan

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Perintah chmod juga memiliki -c (--perubahan ) argumen, yang memberi tahu chmod untuk melaporkan hanya ketika perubahan dibuat (dibandingkan -v , atau -verbose , yang memberitahu chmod untuk melaporkan semua outputnya). Chmod masih akan melaporkan hal-hal lain, seperti jika suatu operasi tidak diizinkan.

Argumen -f (--diam , --tenang ) menekan sebagian besar pesan kesalahan. Menggunakan argumen ini dengan -c hanya akan menampilkan perubahan nyata.

Pertahankan root

Akar (/ ) dari sistem file Linux harus diperlakukan dengan sangat hormat. Jika seseorang membuat kesalahan perintah pada level ini, konsekuensinya bisa sangat buruk dan membuat sistem tidak berguna sama sekali, terutama saat Anda menjalankan perintah rekursif yang akan membuat perubahan apa pun—atau lebih buruk:penghapusan. Untungnya, perintah chmod --preserve-root argumen akan melindungi dan melestarikan root. Jika argumen digunakan dengan perintah chmod rekursif di root, tidak akan terjadi apa-apa, dan Anda akan melihat pesan ini:

[alan@localhost ~]# chmod -cfR --preserve-root a+w /
chmod: it is dangerous to operate recursively on '/'
chmod: use --no-preserve-root to override this failsafe

Opsi tidak berpengaruh jika tidak digunakan dengan rekursif. Namun, jika pengguna root menjalankan perintah, izin / akan berubah, tetapi tidak untuk file atau direktori lain.

[alan@localhost ~]$ chmod -c --preserve-root a+w /
chmod: changing permissions of '/': Operation not permitted
[root@localhost /]# chmod -c --preserve-root a+w /
mode of '/' changed from 0555 (r-xr-xr-x) to 0777 (rwxrwxrwx)

Anehnya, ini bukan argumen default; --tanpa-pertahankan-root adalah. Jika Anda menjalankan perintah tanpa opsi "pertahankan", itu akan menjadi mode default "tidak ada perlindungan" dan mungkin mengubah izin pada file yang tidak boleh diubah.

[alan@localhost ~]$ chmod -cfR a+x /
mode of '/proc/1525/task/1525/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1541/task/1541/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1541/task/1580/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1541/task/1592/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1557/task/1557/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1558/task/1558/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1561/task/1561/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)

Kesimpulan

Semua objek pada sistem Linux memiliki satu set izin. Penting untuk memeriksa dan memeliharanya sesekali untuk mencegah akses yang tidak diinginkan.


Linux
  1. Pengantar menggunakan tcpdump di baris perintah Linux

  2. Pengantar perintah chown Linux

  3. Izin Linux:Pengantar chmod

  1. Kuasai perintah Linux ls

  2. Pengantar perintah alternatif di Linux

  3. Pengantar perintah diff

  1. Perintah chmod Linux

  2. Perintah cari di Linux

  3. Contoh Perintah Dasar "chmod" di Linux