Saya melihat perubahan kode di tempat kerja, di mana nilai mode diubah dari 777 menjadi 0777 untuk membuat setftr nfs bekerja. Apa perbedaan dalam 2 nilai?
mkdir(). 0777 vs 777
Saya melihat perubahan kode di tempat kerja, di mana nilai mode diubah dari 777 menjadi 0777 untuk membuat setftr nfs bekerja. Apa perbedaan dalam 2 nilai?
mkdir(). 0777 vs 777
Jawaban:
Jika Anda meneruskannya ke chmod(program baris perintah), tidak ada perbedaan. Tetapi dalam program C atau yang serupa, 0777adalah oktal (tiga set tiga 1 bit, yang adalah apa yang Anda inginkan), sementara 777desimal, dan itu pola bit yang sangat berbeda. ( chmodakan menafsirkan argumen numerik apa pun sebagai oktal, oleh karena itu tidak diperlukan nol di depan.)
0777 (oktal) == biner 0b 111 111 111 == izin rwxrwxrwx (== desimal 511)
777 (desimal) == biner 0b 1 100 001 001== izin sr----x--x(== oktal 1411)
chmodperintah selalu diartikan sebagai oktal. Menggunakan chmod 888akan memberikan kesalahan.
chmodmenafsirkan argumen numerik sebagai oktal, terlepas dari awalan. (Tapi sebenarnya nomor itu sendiri tidak memiliki fungsi; hanya digit, atau lebih tepatnya bit.)
1777, Anda perlu menulis 01777?
1777ditulis 01777dalam C. (Atau Anda bisa menulis 1023, yang merupakan angka yang sama dalam desimal. Tapi jangan :-)
Bit pertama digunakan untuk bit yang lengket http://en.wikipedia.org/wiki/Sticky_bit
Jika Anda menetapkan izin menggunakan 4 digit, yang pertama akan mengatur atau menghapus bit ini.
Jawaban yang menarik adalah:
0700dan 700, seperti yang dijelaskan dalam jawaban lain00700dan 0700(untuk direktori)Setidaknya itulah yang terjadi pada versi chmod GNU coreutils, yang merupakan default di Linux.
Lihat contoh ini:
$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
Ini untuk menghindari penghapusan bit setuid / setgid secara tidak sengaja untuk direktori. Untuk detailnya, lihat dokumentasi chmod .
Di sistem Linux ada dua jenis izin yang tersedia:
Dalam Izin file, kami menetapkan izin pada file dan folder:
Izinnya adalah:
Sedangkan dalam izin khusus, tiga jenis izin adalah:
Dalam pertanyaan Anda, Anda bertanya apa perbedaannya, jadi tidak ada perbedaan antara chmod 777 and 0777karena ada no any octal valueyang menunjukkan nilai (0) nol.