Tại sao FreeBSD mất mặt nạ w nhưng Debian vẫn giữ nó?


10

Tôi đang cố gắng tìm hiểu sự khác biệt trong hành vi giữa FreeBSD ACL và Linux ACLs. Cụ thể, cơ chế kế thừa cho các ACL mặc định.

Tôi đã sử dụng như sau trên cả Debian 9.6 và FreeBSD 12:

$ cat test_acl.sh
#!/bin/sh

set -xe

mkdir storage
setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage

touch outside
cd storage
touch inside
cd ..

ls -ld outside storage storage/inside

getfacl -d storage
getfacl storage
getfacl outside
getfacl storage/inside

umask

Tôi nhận được đầu ra sau từ Debian 9.6:

$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r--  1 aaa aaa    0 Dec 28 11:16 outside
drwxr-xr-x+ 2 aaa aaa 4096 Dec 28 11:16 storage
-rw-rw----+ 1 aaa aaa    0 Dec 28 11:16 storage/inside

+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---

+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::---

+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--

+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx          #effective:rw-
mask::rw-
other::---

+ umask
0022

Lưu ý rằng các tập tin outsideinsidecó quyền khác nhau. Cụ thể, outsidetệp có -rw-r--r--, là mặc định cho người dùng này và insidetệp có -rw-rw----, tôn trọng các ACL mặc định mà tôi đã gán storagethư mục.

Đầu ra của cùng một tập lệnh trên FreeBSD 12:

$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r--  1 aaa  aaa    0 Dec 28 03:16 outside
drwxr-xr-x  2 aaa  aaa  512 Dec 28 03:16 storage
-rw-r-----+ 1 aaa  aaa    0 Dec 28 03:16 storage/inside

+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---

+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x

+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--

+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx      # effective: r--
mask::r--
other::---

+ umask
0022

(Lưu ý Debian getfaclcũng sẽ hiển thị các ACL mặc định ngay cả khi không sử dụng -dở đâu như FreeBSD không có, nhưng tôi không nghĩ các ACL thực tế storagekhác nhau.)

Ở đây, các tệp outsideinsidecũng có các quyền khác nhau, nhưng insidetệp không có quyền ghi nhóm mà phiên bản Debian làm, có lẽ vì mặt nạ trong Debian giữ lại wtrong khi mặt nạ trong FreeBSD bị mất w.

Tại sao FreeBSD mất wmặt nạ nhưng Debian vẫn giữ nó?


1
Điều gì getfacl storagethể hiện trên cả hai hệ thống?
Mikel

Điều này có hoạt động giống hệt nếu bạn không sử dụng bit nhóm dính ( g+s) không?
sebasth

@Mikel Tôi đã cập nhật nội dung câu hỏi ban đầu để hiển thị getfaclthông tin.
Roxy

@sebasth Tôi đã cập nhật câu hỏi ban đầu để xóa bit setgid. Nó không liên quan.
Roxy

Sau khi đặt ACL thành storage, ls sẽ hiển thị+ , tương tự như tôi mong đợi getfaclđầu ra tương tự như những gì bạn có trên hệ thống Debian. Đã setfacltrả lại mã thoát thành công?
sebasth

Câu trả lời:


1

Nói tóm lại, tôi nói (giả sử) họ đang sử dụng umask khác nhau.

0022 chính xác là không đặt nhóm khác W. Bạn có thể thay đổi ô để xóa lệnh cấm ghi và kiểm tra kết quả.

Việc trích dẫn Solaris hay còn gọi là hướng dẫn sử dụng SunOS (và cả nhận xét) vì điều đó dường như có liên quan khá nhiều: "Vách ngăn (1) sẽ không được áp dụng nếu thư mục chứa các mục ACL mặc định.


1
Là một đúng và khác sai? Có một tiêu chuẩn mà điều này được cho là phải tuân thủ?
Roxy

Tôi không phải là chuyên gia về vấn đề này nhưng (trớ trêu thay) người đàn ông WEB của FreeBSD có mục nhập để thực hiện "chính tắc" (có thể nói là) (SunOS) nói rõ rằng không nên tính umask: freebsd.org/cgi/man.cgi?query= setfacl & manpath = SunOS + 5.10
poige 30/12/18

"Không thể áp dụng umask (1) nếu thư mục chứa các mục ACL mặc định."
poige 30/12/18

Trang người đàn ông của FreeBSD không được đề cập umask, vì vậy đây dường như là một hành vi chưa được xác định rõ ràng. Việc triển khai ACL của FreeBSD có được coi là hoạt động giống như SunOS không?
Roxy

Rõ ràng là nó không (đề cập) gây ra nếu không nó sẽ được thấy rõ mâu thuẫn giữa những điều đã nêu và được thực hiện.
poige
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.