Apa perbedaan utama antara chmod dan chown?


43

Dalam beberapa contoh, saya melihat bahwa beberapa digunakan chownsebagai ganti chmod. Saya tidak tahu di mana harus menggunakan chmoddan chown. Tolong jelaskan kepada saya perbedaan di antara mereka, kapan dan mengapa saya harus menggunakan keduanya.


18
Belum ada yang membuatnya secara eksplisit: satu ch anges mod e dan yang lain ch anges er sendiri . Baca juga pria itu .
Stop Harming Monica

1
Dan sementara chownjuga dapat ch ange yang gr ou p , ada chgrpyang didedikasikan khusus untuk tugas ini.
Stop Harming Monica

6
Apa perbedaan utama antara pisang dan kursi? Jangan duduk di pisang.
Shadur

Jawaban:


48

Mari kita buat file

touch rainbow

Mari kita lihat metadata file

$ ls -l rainbow
-rw-rw-r-- 1 zanna zanna 0 May 24 10:09 rainbow

Bagian pertama dari informasi adalah jenis file ( -pada awalnya berarti itu file biasa) dan bit izin

Setelah itu kita melihat pemilik (zanna) dan grup (zanna). Kita dapat menggunakan chownperintah untuk mengubahnya:

$ sudo chown pixie rainbow
$ ls -l rainbow
-rw-rw-r-- 1 pixie zanna 0 May 24 10:09 rainbow

Dan kami gunakan chmoduntuk mengubah bit izin

$ sudo chmod 333 rainbow
$ ls -l rainbow
--wx-wx-wx 1 pixie zanna 0 May 24 10:09 rainbow

Karena bit izin ditetapkan secara terpisah untuk pemilik, grup, dan lainnya, Anda dapat mengontrol izin file untuk pengguna yang berbeda dengan menggabungkan chowndan chmod. Lihat panduan singkat ini untuk kursus kilat tentang izin di Linux.


1
+1 untuk gambar .. Tidak ada def oktal? Atau chmod a+wcontoh? Yang memakan waktu untuk dilakukan tetapi mendapat lebih banyak suara saya pikir: D
WinEunuuchs2Unix

2
@ WinEunuuchs2Unix haha ​​terima kasih ... Saya sengaja memilih pengaturan izin yang tidak berguna. Jika saya benar-benar mulai menjelaskan kapan dan mengapa menggunakan setiap kemungkinan permutasi chmoddan chown(yang merupakan pertanyaan yang terlalu luas) jawaban saya akan berlangsung selamanya. Mencoba membuatnya tetap sederhana
Zanna

96

Secara sederhana istilah chownini digunakan untuk mengubah kepemilikan suatu file sedangkan chmoduntuk mengubah bit mode file.

  • chown mendefinisikan siapa yang memiliki file tersebut.
  • chmod mendefinisikan siapa yang dapat melakukan apa.

Ketika Anda menjadikan seseorang pemilik file, ia dapat melakukan hampir di mana pun ia ingin file itu, misalnya ia dapat menggunakan chmoduntuk mengubah mod-modnya (katakanlah izin) untuk menentukan siapa yang dapat melakukan apa.

$ ls -l file
-rwxrwxr-x  2  ravexina admins   26 May  9 12:49 file

Pada baris di atas kita dapat melihat bahwa itu ravexinaadalah pemilik file dan adminsmerupakan grup. Saya dapat menggunakan: sudo chown dave:sudo fileuntuk mengubah pemilik file davedan grup menjadi sudo; Sekarang file tersebut milik "dave" dan semua orang di grup "sudo".

Namun dengan chmodkita mendefinisikan siapa yang bisa melakukan apa? yang memiliki hak untuk membaca file, menulis ke file atau menjalankannya. misalnya:

chmod 777 file

memberikan hak baca, tulis, dan eksekusi kepada semua orang termasuk pemilik, grup, dan semua orang lainnya.

Dari turnoff.us : masukkan deskripsi gambar di sini


1
Pemilik tidak dapat melakukan apa pun yang mereka inginkan pada file - menghapus atau memindahkan memerlukan izin tulis pada direktori yang berisi.
muru

2
@uru itu benar;) Maksud saya baca / tulis / exec, ada juga chattryang dapat mempengaruhi file saya kira.
Ravexina

1
@ KamilMaciorowski Anda tahu itu, saya tahu itu, Ravexina tahu itu, tetapi kebanyakan orang tidak.
muru

2
@KamilMaciorowski Saya belum meminta Anda untuk berpura-pura. Apa yang Anda lewatkan adalah bahwa kebanyakan orang tidak berpikir untuk menghapus atau mengganti nama file sebagai operasi pada direktori, tetapi sebagai operasi pada file. Itu sebabnya kami memiliki pertanyaan seperti ini: superuser.com/q/373115/334516 , unix.stackexchange.com/q/48579/70524 , askubuntu.com/q/240424/158442 Jelas Anda tahu ini adalah operasi pada direktori (selamat !), tapi ada kesalahpahaman umum tentang itu, jadi saya mencatat bahwa mengubah nama atau menghapus melibatkan izin pada direktori, bukan file. ...
muru

1
@KamilMaciorowski ... Pertanyaan ini oleh pengguna yang tidak tahu perbedaan antara chmod dan chown, jadi sepertinya masuk akal bagi saya bahwa mereka tidak akan tahu bahwa mengganti nama file akan memerlukan izin pada direktori.
muru

19

Saat mempertimbangkan izin file (atau direktori, atau apa pun), ada dua faktor:

  • siapa yang memiliki file - pengguna dan grup, dan
  • apa yang dapat mereka lakukan dengannya - baca, tulis, jalankan, atau kombinasi keduanya.

chownberurusan dengan siapa . chmodberurusan dengan apa . Anda tidak bisa menggunakan yang satu daripada yang lain.

Izin Unix sederhana mengklasifikasikan pengguna yang mencoba mengakses file menjadi tiga jenis:

  1. pemilik file
  2. pengguna yang merupakan anggota grup yang memiliki file
  3. semua orang

chowndigunakan untuk mengubah dua yang pertama. chmoddigunakan untuk mengubah hak yang diberikan untuk jenis ini.


7

Beberapa poin / tips untuk ditambahkan ke jawaban luar biasa sebelumnya:

  • Anda harus memiliki izin mengeksekusi pada direktori (dan semua yang di atasnya) untuk mengaksesnya
  • Gunakan opsi -R untuk menerapkan perubahan secara rekursif untuk segala sesuatu termasuk dan di bawah target, misalnya chown -R www-data files/
  • Anda dapat mengubah pengguna dan grup secara bersamaan dengan menggunakan sintaks chown user:group myfile
  • Seringkali lebih mudah / lebih baik menggunakan opsi '+' dan '-' daripada mengatur izin absolut, terutama ketika berhadapan dengan kombinasi file dan direktori. Misalnya jika Anda ingin memberikan izin menulis grup ke direktori dan semua yang ada di bawahnya, chmod -R 775 files/akan membuat 'file /' dan semua yang ada di dalamnya dapat dieksekusi dan dapat dibaca oleh semua, yang mungkin bukan hasil yang diinginkan untuk setiap file. Menggunakan chmod -R g+w files/hanya akan menambahkan izin menulis grup tanpa menyentuh yang lain.

6

Jawabannya sudah sangat bagus, tetapi saya ingin memberikan kontribusi di mana izinnya sangat mudah dimengerti

chmod u=r+w,o=r-w,g=-r-w test.php

u = user
o = other
g = group

Dengan cara ini Anda dapat dengan mudah menambahkan izin ke file. Dalam contoh di atas

user = read + write
other = read but not write
group = not read not write

Dan jangan lupa -Rjika Anda ingin mengubah izin secara rekursif.


1

chownAkan mengubah siapa yang memiliki file dan grup apa yang dimilikinya, sementara chmodmengubah cara pemilik dan grup dapat mengakses file (atau jika mereka dapat mengaksesnya sama sekali).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.