Jawaban:
Seperti yang disarankan oleh @Gustave , stat
program (yang merupakan bagian dari GNU coreutils dan pada dasarnya program "Linux" untuk alasan itu, meskipun Anda mungkin memiliki port atau paket dalam sistem BSD) dapat melakukan ini. Perintah
stat -c "%a %n"
mengajukan
menghasilkan daftar diformat hanya dengan mode oktal (termasuk bit setuid, setgid dan sticky dikodekan) dan nama file. Menurut dokumentasi
%a
adalah "Hak akses dalam oktal"%n
adalah "Nama file"Misalnya, diberikan skrip ini:
#!/bin/sh
for name in $*
do
ls -ld "$name"
stat -c '%a %n' "$name"
done
Anda mungkin melihat output seperti ini dari myscript /usr/bin /usr/bin/X /usr/bin/bsd-write
:
drwxr-xr-x 5 root root 118784 Jul 11 19:55 /usr/bin
755 /usr/bin
-rwsr-sr-x 1 root root 9232 Dec 16 2011 /usr/bin/X
6755 /usr/bin/X
-rwxr-sr-x 1 root tty 11000 Jun 17 2010 /usr/bin/bsd-write
2755 /usr/bin/bsd-write
Anda akan melihat 3 atau 4 digit oktal dikembalikan untuk hak akses , tergantung pada apakah setuid, dll. Diatur. Digit terdepan (keempat) bergabung
The hak akses kembali mengecualikan bit ekstra dikembalikan oleh system call stat
yang mengatakan apakah nama adalah direktori ( S_IFDIR
) atau berkas ( S_IFREG
). Omong-omong, semua bit tersebut masuk ke dalam nilai 16-bit karena implementasi Unix yang lama di tahun 1970-an dan awal 1980-an — dan memiliki nilai standar . Karena hak akses mengecualikan jenis file, Anda dapat menggunakan nilai apa adanya pada chmod
perintah (dan juga chmod
fungsi), karena itu oktal, dan chmod
perintah mengharapkan itu. Bahkan setuid, dll, bekerja dengan oktal meskipun hal-hal seperti
chmod u+s /usr/bin/whatever
lebih mudah dibaca.
Untuk bacaan lebih lanjut
Mendapatkan: seperti yang dijawab Gustave.
Pengaturan:
chmod 0755 myfile
Sama untuk direktori. Untuk bit sticky, digit pertama harus 1. Tentang bit sticky: https://askubuntu.com/a/432703