Я работаю с рекурсивным поиском файлов и заставил его работать с простыми разрешениями, но я не могу определить, как получить владельца (идентификатор владельца) или группу (идентификатор группы) папки или файла.Я обнаружил, как получить текущие права доступа к файлу или папке.Я получаю uint_32, поэтому около 9 бит используются для сохранения разрешения.Но где и как сохраняется временная метка?а хозяин?В своих исследованиях я читал, что ядро linux позволяет использовать в системе более 4 миллиардов пользователей.Очевидно это не в uint_32, который я получаю.
Я работаю в ржавчине и не побоялся бы написать модуль Си.Но теперь вот мой main.rs:
use std::fs::*;
use std::os::unix::fs::MetadataExt;
use std::os::unix::fs::PermissionsExt;
use std::mem::transmute;
fn main(){
let meta = metadata("./test.txt");
if meta.is_ok(){
let m:u32 = meta.unwrap().permissions().mode();
//let bytes: [u8; 4] = unsafe { transmute(m.to_be()) };//etv. used later
print!("{}",if (m & (0x1<<9)) >= 1 {"d"}else{"-"});
print!("{}",if (m & (0x1<<8)) >= 1 {"r"}else{"-"});
print!("{}",if (m & (0x1<<7)) >= 1 {"w"}else{"-"});
print!("{}",if (m & (0x1<<6)) >= 1 {"x"}else{"-"});
print!("{}",if (m & (0x1<<5)) >= 1 {"r"}else{"-"});
print!("{}",if (m & (0x1<<4)) >= 1 {"w"}else{"-"});
print!("{}",if (m & (0x1<<3)) >= 1 {"x"}else{"-"});
print!("{}",if (m & (0x1<<2)) >= 1 {"r"}else{"-"});
print!("{}",if (m & (0x1<<1)) >= 1 {"w"}else{"-"});
println!("{}",if (m & 0x1) >= 1 {"x"}else{"-"});
println!("{:b}",m);
}
}
Не стесняйтесь изменять мой код, если вы так думаете.
Я делаю это для развлечения и узнать больше о кодепод горизонтом.