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, 0777
adalah oktal (tiga set tiga 1 bit, yang adalah apa yang Anda inginkan), sementara 777
desimal, dan itu pola bit yang sangat berbeda. ( chmod
akan 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
)
chmod
perintah selalu diartikan sebagai oktal. Menggunakan chmod 888
akan memberikan kesalahan.
chmod
menafsirkan 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
?
1777
ditulis 01777
dalam 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:
0700
dan 700
, seperti yang dijelaskan dalam jawaban lain00700
dan 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 0777
karena ada no any octal value
yang menunjukkan nilai (0) nol.