Dimulai dengan kernel Linux 4.7 (komit), umask tersedia di /proc/<pid>/status
.
$ grep '^Umask:' "/proc/$$/status"
Umask: 0022
Umask tidak diekspos di procfs. Ada upaya untuk menambahkannya tanpa banyak keberhasilan.
Ada cara untuk mendapatkan umask menggunakan gdb
, seperti yang telah dijelaskan di sini sebelumnya:
$ gdb --pid=4321
(gdb) call/o umask(0)
$1 = 077
(gdb) call umask($1)
$3 = 0
Perlu diingat bahwa gdb menghentikan proses dan utasnya, sehingga perubahan umask sementara dapat diabaikan.
Jika itu cocok untuk kasus Anda, Anda dapat menggunakan oneliner ini:
$ gdb --batch -ex 'call/o umask(0)' -ex 'call umask($1)' --pid=4321 2> /dev/null | awk '$1 == "$1" {print $3}'
077
Alternatif lainnya adalah, jika Anda dapat mengontrol proses yang berjalan, menulis umask ke file, output, atau yang serupa dan mendapatkannya dari sana.
Di Linux, dengan systemtap
(sebagai root
), Anda bisa melakukannya
stap -e 'probe kernel.function("do_task_stat") {
printf("%o\n", $task->fs->umask);
exit()
}
probe begin {system("cat /proc/4321/stat>/dev/null")}'
Melakukan cat /proc/4321/stat
akan memicu penyelidikan itu pada do_task_stat
tempat kita dapat mengakses fs->umask
bidang proses yang sesuai 'task_struct
di kernel.