Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
1ab23ae085 | |||
367678b804 | |||
![]() |
29a51767c8 |
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -31,7 +31,7 @@ checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a"
|
||||
|
||||
[[package]]
|
||||
name = "posix-acl"
|
||||
version = "0.1.4"
|
||||
version = "0.1.5"
|
||||
dependencies = [
|
||||
"acl-sys",
|
||||
"anyhow",
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "posix-acl"
|
||||
version = "0.1.4"
|
||||
version = "0.1.6"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
|
45
src/lib.rs
45
src/lib.rs
@ -123,8 +123,6 @@ impl PosixACL {
|
||||
return Err(anyhow!("Failed to get ACL entry"));
|
||||
}
|
||||
|
||||
println!("entry: {:?}", entry);
|
||||
|
||||
let mut tag_type: i32 = 0;
|
||||
check_return(
|
||||
unsafe { acl_get_tag_type(entry, &mut tag_type) },
|
||||
@ -167,7 +165,6 @@ impl PosixACL {
|
||||
"acl_get_permset",
|
||||
);
|
||||
|
||||
println!("permset: {:?}", permset);
|
||||
let perm = if permset.is_null() {
|
||||
0
|
||||
} else {
|
||||
@ -179,6 +176,46 @@ impl PosixACL {
|
||||
entries.push(ACLEntry(qual, permset));
|
||||
}
|
||||
|
||||
// There should be at leas a UserObj, GroupObj, Other and Mask on the non default ACL entries. If they dont exist, create them
|
||||
|
||||
if !default {
|
||||
let mut found_user = false;
|
||||
let mut found_group = false;
|
||||
let mut found_other = false;
|
||||
let mut found_mask: Option<PermSet> = None;
|
||||
|
||||
for ent in entries.iter() {
|
||||
match ent.0 {
|
||||
Qualifier::UserObj => {
|
||||
found_user = true;
|
||||
}
|
||||
Qualifier::GroupObj => {
|
||||
found_group = true;
|
||||
}
|
||||
Qualifier::Other => {
|
||||
found_other = true;
|
||||
}
|
||||
Qualifier::Mask => found_mask = Some(ent.1),
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
let def_perm = found_mask.unwrap_or(ACL_RWX);
|
||||
|
||||
if !found_user {
|
||||
entries.push(ACLEntry(Qualifier::UserObj, def_perm.clone()));
|
||||
}
|
||||
if !found_group {
|
||||
entries.push(ACLEntry(Qualifier::GroupObj, def_perm.clone()));
|
||||
}
|
||||
if !found_other {
|
||||
entries.push(ACLEntry(Qualifier::Other, def_perm.clone()));
|
||||
}
|
||||
if found_mask.is_none() {
|
||||
entries.push(ACLEntry(Qualifier::Mask, def_perm.clone()));
|
||||
}
|
||||
}
|
||||
|
||||
Ok(PosixACL { entries })
|
||||
}
|
||||
|
||||
@ -305,7 +342,6 @@ impl<T> Drop for AclPtr<T> {
|
||||
}
|
||||
|
||||
pub(crate) fn check_return(ret: i32, func: &str) {
|
||||
println!("ret: {} fnc: {}", ret, func);
|
||||
assert_eq!(
|
||||
ret,
|
||||
0,
|
||||
@ -340,7 +376,6 @@ mod test {
|
||||
let mut acl_r = PosixACL::new_from_file(path, false).unwrap();
|
||||
acl_r.entries.sort();
|
||||
|
||||
println!("{:?}", acl);
|
||||
assert_eq!(acl.entries.len(), acl_r.entries.len());
|
||||
let missing = acl
|
||||
.entries
|
||||
|
Loading…
x
Reference in New Issue
Block a user