Yang lebih banyak digunakan: chmod 777 atau chmod a + rwx [ditutup]


20

Dari dua opsi untuk mengubah izin:

  • chmod 777 file.txt
  • chmod a+rwx file.txt

Saya menulis dokumen yang merinci bahwa pengguna perlu mengubah izin file dari file tertentu. Saya ingin memerinci ini sebagai cara paling umum untuk mengubah izin file.

Saat ini dikatakan:

- Set permissions on file.txt as per the example below:
    - chmod 777 /tmp/file.txt

Ini hanya contoh, dan tidak akan mengubah file untuk memiliki izin penuh untuk semua orang.


6
solusi pertama lebih pendek dan lebih banyak digunakan, saya tidak pernah melihat yang kedua.
Archemar

2
pengaturan baca, tulis, dan jalankan izin untuk semua orang benar-benar bukan ide yang baik dalam hal keamanan. Anda harus menggunakan chmod 773 sebagai gantinya.
Martin Erhardt

1
@ MartinErhardt Saya biasanya hanya menggunakan 775atau 755untuk file yang dapat dieksekusi saja.
Kevdog777

3
chmod 777seperti chmod a=rwx, tidak chmod a+rwx.
Stéphane Chazelas

1
777atau 666sederhana dan jauh lebih mudah diingat daripada ugo+rwx, a+rwxatau ugo+rwyang sangat membingungkan karena oambigu dan dapat berarti bagi Anda baik pemilik atau orang lain, Anda pilih. Jadi alih-alih membuat kesalahan besar, Anda terus memeriksa manuntuk memverifikasi mana yang mana, atau hanya menggunakan angka.
kenorb

Jawaban:


29

Google memberikan:

chmod 777 sekitar 3 kali lebih populer.

Yang mengatakan, saya lebih suka menggunakan opsi panjang dalam dokumentasi dan skrip, karena mereka mendokumentasikan diri. Jika Anda mengikuti instruksi Anda dengan "Jalankan ls -l | grep file.txtdan verifikasi izin", Anda mungkin ingin menggunakan chmod a+rwxkarena itulah cara ls akan menampilkan izin.


Terima kasih untuk ini. Saya kira dengan menuliskannya secara penuh (alfanumerik) akan mencegah orang bertanya apa 7artinya, dll.
Kevdog777

1
Saya pikir alasannya chmod 777lebih populer (seperti conjetured sebelum melihat nomor Anda) hanya karena Anda mengetikkan 2 karakter lebih sedikit :)
Ángel

Jika Anda menambahkan tip dalam dokumentasi Anda, Anda bisa menambahkan tip yang chmod 777merupakan jalan pintas yang berguna untuk mencapai efek yang sama. Pembaca Anda akan menghargai elemen pendidikan dalam dokumentasi Anda. 777 lebih populer karena jauh lebih mudah dan lebih cepat untuk memukul 7 tiga kali, tetapi ketika pengguna baru melihat 777 untuk pertama kalinya mereka mungkin tidak tahu apa artinya sebenarnya. Itu sebabnya ini adalah pilihan yang buruk sebagai dokumentasi utama. Tapi itu pasti layak disebut sebagai tip.
ADTC

Sebagai garis singgung, saudara lelaki saya dan teman-temannya akan menggunakan teknik ini untuk memungkinkan kata-kata Scrabble. Mereka memiliki beberapa ambang batas untuk jumlah klik Google sebelum sebuah kata dianggap 'nyata'
Wayne Werner

Saya pikir itu populer karena lebih tua (notasi simbolis ditambahkan kemudian), jadi ketika ada yang memilih, mereka mencari di google atau apa pun yang setara dengan waktu itu dan pergi bersama orang banyak. Saya pikir lebih mudah untuk menggunakan simbol, karena pada saat saya sudah berhasil menghitung angka saya bisa mengetik simbol, saya juga cenderung mendapatkannya dengan benar pertama kali.
ctrl-alt-delor

26

[Saya mengedit untuk menambahkan praktik terbaik, mengikuti saran Dotancohen dalam jawabannya. Saya harap itu tidak membuatnya kurang jelas, dan bahwa kebiasaan yang baik diambil]

Informasi tambahan penting: Mereka tidak setara.

chmod a+rwx: atur 3 oktal terakhir menjadi 777, sehingga memastikan bahwa Pemilik, Grup dan Pengguna memiliki set "rwx". Jika ada bit tambahan di oktal pertama (setuid, setgid, dan / atau Sticky bit) itu membuat mereka tidak tersentuh. Pikirkan itu sebagai biner "atau 00777".

chmod 777 : setel hak ke 00777, sehingga memastikan Pemilik, Grup dan Pengguna memiliki set "rwx", DAN TIDAK ADA LEBIH BANYAK. Itu juga memastikan bit tambahan (setuid, setgid, dan / atau bit Sticky) diatur ke 0.

Jadi gunakan formulir pertama, jika Anda hanya ingin memastikan untuk memberikan akses kepada semua orang (dan tolong buat dobel, triple pastikan bahwa itu diperlukan ... itu membuka pintu untuk semua jenis masalah keamanan, beberapa di antaranya secara tak terduga melebar pada apa mereka mengizinkan pengguna jahat untuk melakukan)

Gunakan formulir 777 jika Anda juga ingin memastikan untuk mereset bit setuid / setgid / sticky, yaitu jika file harus "00777", yang mungkin lebih mungkin dalam kasus Anda (hak file diketahui, dan harus menjadi : 00777). Di sini juga, pastikan triple bahwa itu benar-benar diperlukan ...

Biasanya yang terbaik adalah menjaga akses ke pemilik (dan kadang-kadang grup): kemudian gunakan grup untuk memberikan akses ke beberapa pengguna tertentu ke file / direktori. a + rwx mudah dan biasanya cara yang salah untuk memberikan akses (tentu saja ada kasus yang sangat jarang ketika itu adalah satu-satunya cara ...)

http://en.wikipedia.org/wiki/Chmod adalah bacaan yang baik karena menjelaskan apa yang diwakili setiap angka atau huruf (termasuk setuid / setgid / sticky)


1
Selain itu, chmod a + w (yang termasuk + rwx) pada file suid sangat berbahaya. Apakah saya perlu menguraikan chmod a + w *?
Joshua

Apa gunanya mengatur othersizin? Jika Anda masuk ke mesin sebagai pengguna, maka tentunya Anda bisa menggunakan usersizin?
Kevdog777

@ Kevdog777: Yang lain adalah untuk orang yang bukan pemilik atau dalam grup, alias semua orang di sistem
Olivier Dulac

1
@ Kevdog777: jika hanya root dan pengguna perlu akses: chmod 00600 (jika tidak perlu menjalankan file) atau chmod 00700 (jika perlu menjalankan file -atau- direktori itu). atau chmod 00400 untuk menambahkan (kecil, mudah diganti) perlindungan terhadap memodifikasi / menulis ke file (00500 untuk direktori). Kemudian yang lain (dan orang-orang dalam grup tetapi bukan pengguna) tidak dapat mengakses file / dir. (mengikuti catatan dotandcohen, saya menambahkan oktal ke-4 di sana + a "0" sebelumnya: tidak membuat perbedaan untuk shell, tetapi membantu jika Anda mengatur melalui perl / C / etc dan oktal ke-4 adalah semacam pengingat bahwa itu ada , dan sudah diatur juga)
Olivier Dulac

4
chmod 777seperti chmod a=rwx.
Stéphane Chazelas

1

Saya biasanya berpikir tentang perbedaannya adalah bahwa menetapkan izin ke 0777 secara eksplisit menetapkannya ke 0777. Seperti yang disebutkan sebelumnya, 0 yang terkemuka akan disimpulkan jika Anda hanya mengetikkan 777. Sedangkan a + rwx menambahkan baca / tulis / jalankan meninggalkan setuid / sticky sedikit tidak tersentuh.

Misalkan Anda hanya ingin memastikan bahwa file dapat dieksekusi, Anda dapat menggunakan + x sehingga Anda dapat memodifikasi hak eksekusi tanpa khawatir atau memodifikasi izin lainnya. Jika Anda menggunakan representasi oktal, Anda perlu mengetahui izin apa yang saat ini diatur untuk memastikan bahwa Anda tidak mengubah izin dengan cara lain selain yang Anda inginkan.


0

Saya akan mengatakan bahwa memberikan nilai numerik jauh lebih umum di "panduan orang sederhana" seperti yang diproduksi untuk pengguna web hosting murah. Namun, berhati-hatilah untuk menetapkannya sebagai nilai oktal , bukan desimal,:

$ chmod 0777 some_dir

Catatan terkemuka 0di 0777. Meskipun Bash dan lingkungan CLI lainnya melakukan hal yang benar dengan menggunakan unpadded 777, banyak bahasa pemrograman seperti PHP dan Perl memiliki fungsi serupa yang memang membutuhkan yang terdepan 0. Jadi saya merekomendasikan penggunaannya di Bash juga, untuk mengingat bahwa itu seharusnya ada di sana.

Catatan untuk downvoters: Seperti yang diklarifikasi dalam komentar, chmodperintah sebenarnya tahu untuk lulus direktif sebagai oktal bahkan jika notasi desimal ditentukan. Namun, tidak semua lingkungan mendukung hal ini, sehingga merupakan praktik terbaik untuk membiasakan menetapkannya secara eksplisit.


10
chmodtidak pernah memperlakukan angka sebagai desimal. chmod 777 filedan chmod 0777 filesepenuhnya setara.
celtschk

3
@ Kevdog777: "oktal" berarti basis-8. Tetapi Anda tidak perlu peduli tentang hal itu, sejauh menyangkut penggunaan chmodperintah shell; Anda bisa menganggap ketiga digit itu independen satu sama lain, masing-masing memberi tahu Anda satu set izin.
celtschk

3
Untuk chmod, 0 in 0777 sebenarnya berarti "hapus setuid, setgid, dan bit lengket". Ini setara dengan 777, karena argumen selalu diisi dengan nol mengarah ke empat digit. Untuk alasan yang sama, chmod 77sama dengan chmod 077.
Emil Jeřábek mendukung Monica

1
The chmodperintah menafsirkan argumen modus dalam oktal. Anda perlu memperhatikan jika Anda menggunakan sebagian besar bahasa pemrograman (C, Perl, ...), tetapi dalam skrip shell itu oktal untuk chmod.
Gilles 'SO- stop being evil'

1
Beri +1 untuk catatan Anda, karena memang baik untuk selalu menambahkan 0 (bahkan jika menetapkan semua 4 oktal: 01777 misalnya) karena tidak ada bedanya dengan shell, tetapi pastikan C, perl dan lainnya mengartikannya sebagai oktal
Olivier Dulac
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.