Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

dacscheck - Trực tuyến trên đám mây

Chạy dacscheck trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

Đây là lệnh dacscheck có thể được chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


dacscheck - kiểm tra ủy quyền

SYNOPSIS


kiểm tra dacs [-quản trị viên] [Ứng dụng tên ứng dụng] [-định nghĩa bài văn hồ sơ] [-Dtên = giá trị]
[-F trường_sep] [-fd miền] [-fh hostname] [-fj họ tên] [-fn tên ăn]
[-bãi rác] [-các nhóm nhóm_vfs] [-h] [-i danh tính] [-anh ta danh tính]
[-ilg danh tính] [-ieuid] [-ieuidg] [-iuid] [-iuidg] [-lg] [-NS mức đăng nhập]
[-tên_so sánh phương pháp] [-q]
[-chuyển hướng] [-vai trò role_vfs] [-quy tắc quy tắc_vfs] [-v] [-var tên = giá trị]
[-vfs vfs_uri] [--] vật

MÔ TẢ


Chương trình này là một phần của DAC Thượng hạng. Đây là một chương trình độc lập không chấp nhận
thông thường DAC tùy chọn dòng lệnh (dacoption) cũng như truy cập bất kỳ DAC cấu hình
các tập tin.

Đơn giản thôi, kiểm tra dacs xem xét các quy tắc kiểm soát truy cập để kiểm tra xem một người dùng nhất định có được ủy quyền hay không
để làm một cái gì đó hoặc truy cập một cái gì đó. Trạng thái thoát của lệnh cho kết quả là
kiểm tra, và trừ khi -q cờ được đưa ra, một dòng được in ra stdout cho biết
kết quả. Nó cung cấp quyền truy cập đơn giản, có mục đích chung vào DACquy tắc kiểm soát truy cập của
công cụ đánh giá, ngay cả đối với các chương trình không phải là dịch vụ web và nó tự cho mình
các quyết định kiểm soát truy cập chi tiết.

Cụ thể hơn, kiểm tra dacs kiểm tra xem một yêu cầu đối với đối tượng có được cấp theo
quy tắc kiểm soát truy cập cụ thể và bối cảnh đánh giá nhất định. Để thực hiện công việc của nó, kiểm tra dacs
chỉ cần biết một số điều:

1. nơi để tìm các quy tắc kiểm soát truy cập để áp dụng;

2. tên của đối tượng được truy cập; và

3. tùy chọn, bối cảnh đánh giá chỉ định danh tính mà quyền truy cập đang được
được kiểm tra và các biến có thể được tham chiếu bởi các quy tắc.

Lệnh không thực hiện bất kỳ xác thực nào; nó giả định rằng người gọi (hoặc
môi trường thực thi) đã thiết lập danh tính mà kiểm soát truy cập
quyết định là bắt buộc. Nó có thể được sử dụng giống như bất kỳ lệnh nào khác: chạy từ dòng lệnh hoặc
một tập lệnh shell, được thực thi bởi một chương trình đã biên dịch hoặc được gọi từ một ngôn ngữ kịch bản như
as Perl[1], PHP[2. Python[3], hồng ngọc[4] và Tcl / Tk[5.

Một số ví dụ đơn giản sẽ minh họa cách kiểm tra dacs có thể được sử dụng.

Chú thích
Các ví dụ trong tài liệu này đã được đơn giản hóa để dễ đọc; trong sử dụng thực tế,
tên đường dẫn tuyệt đối sẽ xuất hiện, kiểm tra lỗi phải được thực hiện, v.v. Cũng thế,
các kiểm tra dacs chương trình và các quy tắc mà nó yêu cầu phải có quyền đối với tệp
thích hợp.

Ví dụ đầu tiên cho thấy cách một tập lệnh shell có thể gọi kiểm tra dacs để kiểm tra xem người dùng
chạy nó được phép làm như vậy. Nó lấy được danh tính của người dùng từ hệ điều hành;
nó giả định rằng người dùng đã gọi tập lệnh từ dòng lệnh và do đó
đã đăng nhập vào hệ thống. Trong ví dụ, kiểm tra dacs có được danh tính thông qua một
lệnh gọi hệ thống, nhưng một tập lệnh có thể chọn để chuyển giá trị của TÊN ĐĂNG NHẬP or USER
biến môi trường.

Tập lệnh shell chỉ cần hỏi kiểm tra dacs nếu uid hiệu quả (xem người lém lỉnh(2)[6]) là
được phép truy cập / myapp. Trạng thái thoát của kiểm tra dacs ($?) cho kết quả. Các
pathname / myapp về cơ bản là một nhãn được sử dụng để tìm quy tắc kiểm soát truy cập
nộp đơn; trong ví dụ này, nó chỉ đại diện cho tên của chương trình. Nó có thể là
tên tệp của chương trình, nhưng nó không cần thiết.

#! / Bin / sh

dacscheck -q -ieuid -rules / usr / local / myapp / rules / myapp
st = "$?"
nếu kiểm tra "$ {st}"! = 0
sau đó
echo "Quyền truy cập bị từ chối"
thoát khỏi "$ {st}"
fi

echo "Quyền truy cập đã được cấp"

# Làm một số thứ

thoát 0

Thư mục / usr / local / myapp / rules có thể bao gồm một tệp có tên acl-app.0 cấp
chỉ truy cập vào bob và alice:








người dùng (": bob") hoặc người dùng (": alice")




Chú thích
Các quy tắc kiểm soát truy cập được mô tả trong dacs.acls(5)[7]. Như với dacs_acs(8)[8], những
các quy tắc phải được lập chỉ mục bởi dacsacl(1)[9]. Ví dụ, trong một trường hợp sử dụng phổ biến, DAC
tập tin cấu hình không được sử dụng, bộ quy tắc được tư vấn bởi kiểm tra dacs có thể là
được lập chỉ mục bằng cách sử dụng một lệnh như:

% dacsacl -un -vfs "[acls] file: /// users / bobo / my-rules" -vfs "[dacsacls]: file: /// dev / null"

If dacsacl thành công trong ví dụ trên, một tệp có tên INDEX sẽ được tạo hoặc
được cập nhật trong thư mục / users / bobo / my-rules, nơi các tệp chứa các quy tắc
cũng được tìm thấy. Thông báo cảnh báo thường có thể bị bỏ qua miễn là INDEX trông đúng.

Một chương trình CGI có thể có được danh tính của người dùng gọi nó từ REMOTE_USER
biến môi trường và cuộc gọi kiểm tra dacs, như được trình bày trong tập lệnh shell sau,
sử dụng quy tắc tương tự như trên:

#! / Bin / sh

nếu kiểm tra "$ {REMOTE_USER} x" = "x"
sau đó
idarg = ""
khác
idarg = "- tôi $ {REMOTE_USER}"
fi

echo "Loại ngữ cảnh: văn bản / đơn giản"
quăng đi ""

# Lưu ý: nối 2> & 1 vào cuối dòng tiếp theo để ghi lại thông báo lỗi
dacscheck -q $ {idarg} -rules / usr / local / myapp / rules / myapp

st = "$?"
nếu kiểm tra "$ {st}" = 0
sau đó
echo "Quyền truy cập đã được cấp"
khác
echo "Quyền truy cập bị từ chối"
fi

thoát 0

Ví dụ này có thể dễ dàng được dịch sang bất kỳ ngôn ngữ kịch bản nào cho phép
chương trình được gọi và trạng thái thoát của nó được kiểm tra. Đây là một ví dụ tương tự trong PHP:

$ user = $ _SERVER ["REMOTE_USER"];
putenv ("REMOTE_USER = $ người dùng");
system ("/ usr / local / dacs / bin / dacscheck -q -fn DEMO -icgi
-rules / usr / local / myapp / rules / myapp ", $ st);
if ($ st! = 0) {
// Quyền truy cập bị từ chối, cứu trợ
thoát ra ($ st);
}

// Quyền truy cập được cấp, tiếp tục

Chú thích
Một số người có thể thắc mắc về điểm có một cuộc gọi chương trình kiểm tra dacs để kiểm tra xem người dùng
gọi nó chỉ được phép chạy chương trình. Thoạt nhìn có thể thấy rằng
người ta có thể đạt được kết quả tương tự bằng cách chỉ cần thiết lập các quyền đối với tệp sao cho
bob và alice có thể chạy chương trình. Nếu điều đó có thể được thực hiện, thử nghiệm chi tiết
hoan thanh bởi kiểm tra dacs trong các ví dụ sẽ là không cần thiết. Hóa ra là có
hơn thế nữa.

Việc đặt quyền đối với tệp để đạt được điều này trên hệ thống kiểu Unix truyền thống yêu cầu
tạo một nhóm mới trong / etc / group, điều gì đó thường chỉ có thể được thực hiện bởi
quản trị hệ thống. Người dùng bình thường do đó phải làm phiền hệ thống
quản trị viên mỗi khi một nhóm như vậy phải được tạo hoặc sửa đổi, hoặc tìm một số nhóm khác
cách để đạt được kết quả tương tự (ví dụ: bằng mã hóa, sử dụng setuid hoặc setgid đặc biệt
lệnh cung cấp quyền truy cập được bảo vệ bằng mật khẩu hoặc một số khác vụng về và có thể
giải pháp không an toàn).

Để giải quyết hạn chế này và những hạn chế khác, nhiều hệ điều hành kiểu Unix hiện bao gồm
hệ thống tệp mở rộng quyền truy cập tệp Unix truyền thống với một ACL dựa trên
cơ chế (ví dụ: cung cấp getfacl(1)[10] và thiết lập(1)[11] lệnh, và
acl(3)[12] API bảo mật ACL).

kiểm tra dacs cung cấp chức năng tương tự nhưng cho tùy ý tên, không chỉ cho các đối tượng
trong hệ thống tệp và liên quan đến tùy ý danh tính, không chỉ cho những người đã biết
vào hệ điều hành. Ví dụ: một tập lệnh CGI có thể gọi kiểm tra dacs để kiểm tra quyền truy cập
thay mặt cho một người dùng được biết đến với máy chủ web (ví dụ: thông qua một tài khoản được tạo bằng cách sử dụng
htpasswd(1)[13]) nhưng không có tài khoản trên hệ thống cơ bản. Vì vậy,
ngoài khả năng di động trên các nền tảng và khả dụng trên các hệ thống không có tệp loại ACL
quyền, kiểm tra dacs là một giải pháp tổng quát hơn nhiều so với những gì hầu hết hoạt động
hệ thống cung cấp. Tuy nhiên, trái ngược với cơ chế dựa trên ACL do hệ thống cung cấp,
kiểm tra dacs is không được gọi một cách minh bạch (tức là, nó không được gọi tự động bởi
hệ điều hành khi một tài nguyên như tệp được truy cập). Ngoài ra, đối với
kiểm tra xem người dùng có được phép chạy một chương trình hay không, chương trình đó thường sẽ
tự thực hiện kiểm tra và do đó phải bắt đầu thực hiện.

Để biết thêm thông tin chi tiết:

· Sử dụng FreeBSD's ACL[14], Dru Lavigne, ONLamp.com[15], 22-05-XNUMX.

· POSIX ACL in Linux[16], Mike Peters, linux.com[17], ngày 2 tháng 04-ngày XNUMX.

· Đối với Solaris, Solaris 10 acl(2)[18], mặt trời Hệ thống vi mô[19] và Sử dụng Solaris
ACL[20] bởi Phòng of Máy tính Khoa học, Duke Đại Học[21.

Bởi vì việc kiểm tra ủy quyền được thực hiện bởi kiểm tra dacs hoàn toàn tách biệt với điều đó
được thực hiện bởi hệ điều hành cho các cuộc gọi hệ thống, Unix bản sắc chẳng hạn như gốc không có
các quyền hoặc khả năng đặc biệt trong chừng mực kiểm tra dacs có liên quan trừ khi các quy tắc đã được
được viết để cấp cho họ. Điều tương tự cũng áp dụng cho ứng dụng của Unix nhóm.

Ví dụ tiếp theo cho thấy một số Perl mã có thể được cải thiện bởi kiểm tra dacs. Các
đoạn mã:

if ($ logged_in_as_root || $ logged_in_as_current_admin) {
# Làm điều gì đó đặc quyền ...
}

điều này phụ thuộc vào việc hai biến được khởi tạo đúng cách tùy thuộc vào giá trị của
$ tên người dùng, có thể được thay thế bằng cái này:

# Xác định xem $ tên người dùng có đặc quyền quản trị viên hay không
$ output = `dacscheck -q -i $ username -app myapp / myapp / admin`;
$ is_admin = ($? >> 8) == 0;

if ($ is_admin) {
# Làm điều gì đó đặc quyền ...
}

# Một lát sau...
if ($ is_admin) {
# Làm điều gì đó khác có đặc quyền ...
}

Kiểm tra ủy quyền mới phụ thuộc vào danh tính đang chạy chương trình ($ tên người dùng)
và bộ quy tắc riêng biệt xác định xem liệu danh tính đó có được cấp quyền truy cập vào
/ myapp / admin, chỉ đơn giản là một nhãn cho quy tắc có thể trông giống như sau:








người dùng ("%: admin")




Quy tắc này cấp quyền truy cập nếu và chỉ khi $ tên người dùng là thành viên của DAC nhóm có tên quản trị viên
hoặc được liên kết với điều đó DAC vai diễn. Tư cách thành viên trong nhóm đó có thể được thay đổi động,
và thậm chí có thể được giảm xuống XNUMX.

Quan sát quan trọng là các điều kiện việc này xác định liệu các người sử dụng chạy
điều này Perl hành chính đặc quyền đang xác định bên ngoài of các chương trình có thể be
thay đổi không có sửa đổi các thường không có cũng sửa đổi truy cập điều khiển quy tắc.

Một số khái niệm được sử dụng trong tài liệu này được mô tả ở những nơi khác. Biến, biến
không gian tên và biểu thức được sử dụng trong các quy tắc kiểm soát truy cập được thảo luận trong
dacs.exprs(5)[22]. Đặt tên trong DAC được thảo luận trong dac(1)[23] và DAC nhóm và vai trò
được bao phủ trong dacs.groups(5)[24.

Bảo mật
rõ ràng kiểm tra dacs, trình gọi của nó và các tài nguyên được đề cập phải được "cách ly" với
người dùng thay mặt cho họ kiểm tra dacs đang được chạy, nếu không người dùng có thể truy cập vào
tài nguyên trực tiếp hoặc lật đổ các bài kiểm tra kiểm soát truy cập. Vì vậy, kiểm tra dacs và của mình
người gọi phải có nhiều đặc quyền hơn người dùng mà nó đang được chạy thay mặt hoặc
cả hai chương trình phải chạy trong bối cảnh an toàn. Điều này thường có nghĩa là cả hai kiểm tra dacs
và trình gọi của nó phải được chạy cách ly với người dùng (như trên máy chủ từ xa) hoặc dưới dạng
ID người dùng hiệu quả khác với ID của người dùng.

Ưu điểm
Các chương trình thực hiện kiểm tra ủy quyền thường chứa mã như:

· "Nếu người dùng hiện tại đã cung cấp mật khẩu phù hợp, hãy thực hiện như sau
mã, nếu không thì không ", hoặc

· "Nếu người dùng hiện tại là quản trị viên, hãy làm như sau" hoặc

· "Nếu người dùng hiện tại được phép thực hiện thao tác cập nhật, hãy hiển thị menu này
các mục, nếu không thì không hiển thị chúng "

Các ứng dụng phức tạp có thể được rải rác với các loại thử nghiệm này, khiến chúng dễ bị
lỗi và các vấn đề bảo mật. Các thay đổi đối với chính sách bảo mật có thể liên quan đến các sửa đổi
trong một ứng dụng hoặc bộ ứng dụng. Ngoài ra, việc xử lý mật khẩu thường
kết hợp vào các chương trình đó; bởi vì quản lý mật khẩu có thể yêu cầu một
nỗ lực thực hiện và khó thực hiện một cách an toàn, có vẻ như khôn ngoan khi cố gắng tận dụng
triển khai hiện có.

So với các giải pháp được mã hóa tùy chỉnh, kiểm tra dacs có nhiều lợi thế:

Chính sách theo hướng dữ liệu
Trái ngược với logic kiểm soát truy cập được viết đặc biệt, theo hướng dữ liệu (dựa trên quy tắc)
chức năng vượt trội vì:

· Các quy tắc kiểm soát truy cập tách biệt với mã, vì vậy các thay đổi đối với một bộ quy tắc
tự động áp dụng cho tất cả việc sử dụng các quy tắc đó trong một ứng dụng hoặc tập hợp
của các ứng dụng; mã không cần phải được sửa đổi nếu chính sách được thay đổi.

· Các bản sửa lỗi và cải tiến đối với các quy tắc sẽ tự động có sẵn cho các chương trình
sử dụng kiểm tra dacs; không cần biên dịch lại các ứng dụng.

· Người quản lý các quy tắc không nhất thiết phải là người của ứng dụng
lập trình viên (hoặc thậm chí là người hiểu mã), do đó, ủy quyền
trách nhiệm dễ dàng hơn nhiều. Điều này làm giảm số lượng lập trình cần thiết
khi các thay đổi được yêu cầu, giảm nỗ lực bảo trì mã và giảm
cơ hội sai sót.

· Thường dễ hiểu (và diễn đạt) một bộ quy tắc mô tả một
chính sách kiểm soát truy cập; mã thực hiện cùng một chính sách sẽ phức tạp hơn
và khó hiểu, làm tăng khả năng mắc lỗi.

Hiệu quả lập trình

· Các ứng dụng được đơn giản hóa và giảm thời gian và công sức lập trình vì
mã kiểm soát truy cập hiện có (ví dụ: kiểm tra dacs) được sử dụng lại.

· Các quy tắc phức tạp có thể được xây dựng mà không cần phải viết bất kỳ mã nào. DAC
các tính năng có sẵn, chẳng hạn như vai trò và nhóm, và có thể được sử dụng để xây dựng
các chính sách ủy quyền đơn giản và rõ ràng hơn khả năng
mã hóa bằng tay.

Tính di động
Các quy tắc độc lập với nền tảng, có thể được lưu trữ từ xa từ các ứng dụng sử dụng
chúng và có thể được đánh giá từ xa. kiểm tra dacs có sẵn cho nhiều loại
của các nền tảng.

Tăng chia sẻ
Các quy tắc có thể được chia sẻ và sử dụng trong các tình huống khác nhau và bởi các chương trình khác nhau.

Linh hoạt

· Bởi vì nó không dựa vào máy chủ web, nó có thể được sử dụng bởi hầu hết mọi
Chương trình dựa trên CGI.

· Đối với DAC, nó có thể được sử dụng trong các trường hợp mod_auth_dacs[25]
mô-đun không thể được sử dụng với Apache, hoặc ở đâu Apache không thể được sử dụng ở tất cả.

· Bởi vì nó được thực hiện như một lệnh thông thường, kiểm tra dacs có thể được sử dụng từ
dòng lệnh hoặc được gọi từ hầu hết mọi tập lệnh hoặc chương trình.

· Đối với các chương trình dựa trên CGI, kiểm tra dacs có thể được sử dụng mà không cần bất kỳ sự hỗ trợ nào từ hệ thống
người quản lý; ví dụ: nó không yêu cầu máy chủ web được định cấu hình để cung cấp
ủy quyền cho chương trình CGI vì tất cả chức năng kiểm soát truy cập là
thực hiện trong chương trình.

Tăng cường an ninh
kiểm tra dacs không thực hiện xác thực cũng như không dựa vào bất kỳ xác thực cụ thể nào
, do đó, phương pháp xác thực có thể được thay đổi mà không ảnh hưởng đến
ứng dụng sử dụng kiểm tra dacs. Có thể sử dụng bất kỳ phương tiện xác thực nào được hỗ trợ, không
chỉ có phương pháp dựa trên mật khẩu điển hình.

Trong khi hiệu suất của kiểm tra dacs không nên là một yếu tố cho nhiều ứng dụng,
API C / C ++ có thể được sử dụng nếu nó là một vấn đề. API này có thể được sử dụng để kết hợp kiểm tra dacs
chức năng thành các chương trình đã biên dịch và các ngôn ngữ có thể mở rộng, chẳng hạn như Perl, Python,
Tcl / TkPHP.

Danh tính
Danh tính mà quyền truy cập sẽ được kiểm tra được cấp cho chương trình hoặc có được bởi
chương trình từ môi trường thực thi của nó. Danh tính này được chuyển đổi thành DACS's nội bộ
sự đại diện.

Có thể chỉ định nhiều hơn một danh tính; séc được thực hiện thay mặt cho công đoàn của tất cả
danh tính. Ví dụ: nếu danh tính bob và alice được chỉ định, một quy tắc
hài lòng bởi một trong hai danh tính có thể cấp quyền truy cập.

Nếu không có danh tính nào được cung cấp, séc được thực hiện thay mặt cho người dùng chưa được xác thực.

Một danh tính có thể là:

· Tên đăng nhập kiểm tra dacs ánh xạ đến từ uid thực hoặc hiệu quả của chương trình
(tức là người dùng đang chạy chương trình);

· A DAC danh tính người dùng (ví dụ: carol, DSS: bob, hoặc EXAMPLE-COM :: DEMO: alice, xem
dac(1)[26]);

· Một tên đơn giản (bob tương đương với: bob); hoặc là

· Một cái tên được thể hiện trong ngắn gọn cú pháp[27], cung cấp tên người dùng và, tùy chọn,
vai trò và thuộc tính cho danh tính. Bất kỳ danh tính đã hết hạn không được sử dụng.

Chú ý
· kiểm tra dacs xác thực cú pháp của một danh tính mà nó được cung cấp, chuyển đổi và mở rộng nó
sang cú pháp ngắn gọn nếu cần và sau đó chuyển nó thành
đại diện cho thông tin xác thực. Các thông tin xác thực này bị hủy khi chương trình
chấm dứt.

Bất kể nó được chỉ định như thế nào, mỗi danh tính phải đáp ứng cú pháp
yêu cầu của một DAC danh tính người dùng sau khi chuyển đổi và mở rộng này (xem
dac(1)[26]). Ví dụ: nếu tên đăng nhập được chỉ định làm danh tính, thì tên đó phải là
hợp lệ như một thành phần của DAC danh tính người dùng; do đó, nó không thể chứa bất kỳ
ký tự không hợp lệ.

· Nếu không có địa chỉ IP nào được cung cấp cho danh tính, thì địa chỉ IP đó được lấy từ REMOT_ADDR
biến môi trường khi có sẵn, nếu không thì sử dụng mặc định là 127.0.0.1. Các
Địa chỉ IP được liên kết với thông tin xác thực được kiểm tra bằng cách sử dụng người sử dụng() Thuộc tính.

· Nếu danh tính đang được kiểm tra bao gồm tên liên kết, vì giá trị mặc định
tên liên đoàn không chắc là chính xác, có lẽ cần phải nói
kiểm tra dacs tên liên kết nào để so sánh với việc sử dụng -fn cờ.

Dưới đây là một số ví dụ về danh tính có thể tuân theo -i cờ:

ngũ cốc
: bob
DSS: bob
{u = bập}
{u = "bob"}
{u = "alice", g = "admin"}
{u = "DSS: bob", g = "khách"}
{u = "bob", a = "a", g = "khách"}

Chú thích
Chuỗi này có thể cần được trích dẫn một cách thích hợp trên dòng lệnh vì dấu ngoặc
các ký tự có ý nghĩa đối với một số shell; ví dụ,

-i '{u = "bob"}'

Apache và các máy chủ web khác đặt biến môi trường REMOTE_USER để xác thực
danh tính đã gọi một dịch vụ web. Miễn là cú pháp của nó phù hợp, danh tính này có thể
đã vượt qua kiểm tra dacs. Đối với DAC-dịch vụ web được bao bọc, DAC danh tính có sẵn trong này
biến.

Theo mặc định, liên kết, khu vực tài phán và tên máy chủ được liên kết với các quy tắc là
bắt nguồn từ tên máy chủ của hệ thống như được trả về bởi lấy tên máy chủ(3)[28]. Nếu tên đó là
không phù hợp vì nó không phải là FQDN (tức là nó không phải là một tên miền đủ điều kiện vì
nó không chứa dấu chấm), mỗi tên bí danh sẽ được kiểm tra (sử dụng
gethostbyname(3)[29]) cho đến khi tìm thấy FQDN. Tên khu vực pháp lý bắt nguồn từ
thành phần ngoài cùng bên trái của FQDN đã chọn và tên miền và tên liên kết đến từ
các thành phần còn lại. Nếu không tìm thấy FQDN, tên máy chủ của hệ thống sẽ được chọn làm
tên khu vực pháp lý và các giá trị mặc định sẽ được sử dụng làm tên miền và tên liên kết (EXAMPLE.COM
và EXAMPLE-COM, tương ứng).

Nếu tên máy chủ của hệ thống được phát hiện là (hoặc được cung cấp rõ ràng là) demo.example.com, đối với
ví dụ, các biến sau sẽ được đặt như được chỉ ra trong quá trình đánh giá quy tắc:

· $ {Conf :: FEDERATION_NAME}$ {DACS :: FEDERATION} cả hai đều được đặt thành EXAMPLE-COM (các dấu chấm là
được ánh xạ tới dấu gạch ngang để tạo thành một tên hợp lệ)

· $ {Conf :: FEDERATION_DOMAIN} được đặt thành EXAMPLE.COM

· $ {Conf :: JURISDICTION_NAME}$ {DACS :: JURISDICTION} được đặt thành tên khu vực pháp lý,
BẢN GIỚI THIỆU

· $ {DACS :: HTTP_HOST} được đặt thành demo.example.com:80

Thông thường, các quy tắc và danh tính có thể được thể hiện sao cho các tên được chọn cho liên đoàn
và quyền tài phán là không quan trọng. Tuy nhiên, khi trường hợp này không xảy ra và các giá trị mặc định
chọn bởi kiểm tra dacs không chính xác, chúng có thể được đặt trên dòng lệnh. Trong một số
các trường hợp có thể thích hợp để tên khu vực tài phán là tên của
ứng dụng, chẳng hạn.

Bất kể nguồn gốc của chúng là gì, tên liên đoàn và khu vực tài phán phải luôn là
cú pháp hợp lệ (xem dac(1)[26]).

Đối tượng
Mặc dù một đối tượng thường sẽ là một thứ thực tế, chẳng hạn như tệp, menu hoặc biến, nó có thể
cũng là một sự trừu tượng, chẳng hạn như một phép toán. kiểm tra dacs hoạt động với tên - dưới dạng
URI - thay vì đối tượng mỗi se. It làm không kết hợp bất kì riêng có nghĩa là với
tên, it chỉ đơn thuần là sử dụng họ đến xác định vị trí an áp dụng truy cập điều khiển loại trừ. Do đó,
miễn là người viết quy tắc và các ứng dụng tham khảo quy tắc đồng ý về việc đặt tên
sơ đồ, những cái tên được chọn phần lớn không liên quan.

Một ứng dụng gán tên cho mọi đối tượng hoặc lớp đối tượng cần
được tham chiếu bởi các quy tắc kiểm soát truy cập. Đơn giản nhất, chỉ cần một tên (tên
của ứng dụng, chẳng hạn). Trong các tình huống phức tạp hơn, nhiều đối tượng
cần được đặt tên. Sự lựa chọn tên và chi tiết của hệ thống phân cấp đặt tên là tùy thuộc vào
ứng dụng cụ thể, giống như tổ chức thời gian chạy của gói phần mềm
tổ chức tệp và thư mục phụ thuộc vào gói cụ thể.

Sản phẩm vật đối số là tên được so khớp với các dịch vụ được chỉ định trong quyền truy cập
các quy tắc kiểm soát. Nó có thể là một URI hoặc một tên đường dẫn tuyệt đối (một tên bắt đầu bằng
ký tự gạch chéo), và có thể có một thành phần chuỗi truy vấn tùy chọn được đính kèm. Một
tên đường dẫn tuyệt đối con đường được ánh xạ nội bộ tới một URI dưới dạng tệp: //con đường; ví dụ, / myapp là
được hiểu là tệp: /// myapp (xem RFC 1738[30]).

Các thành phần khác nhau của URI đặt tên cho đối tượng có sẵn dưới dạng DAC biến
và các biến môi trường (xem bên dưới). Nếu một chuỗi truy vấn được đưa ra, nó sẽ được phân tích cú pháp và
các đối số riêng lẻ được cung cấp cho các quy tắc thông qua lập luận không gian tên, cũng như đối với
DAC-dịch vụ web được bao bọc.

Chú thích
Chỉ con đường thành phần của URI được xem xét khi DAC khớp với tên của một đối tượng
chống lại url_pattern của quy tắc kiểm soát truy cập. Hiện tại, tên đối tượng không
tự động được chuẩn hóa hoặc giải quyết (xem RFC 3986[31]), như thường được thực hiện bởi
máy chủ web, vì vậy các thành phần đường dẫn tương đối chẳng hạn như "." và ".." nên được tránh.

Quy tắc Đánh giá Bối cảnh
Các quy tắc được đánh giá trong bối cảnh thực thi có thể ảnh hưởng đến đánh giá biểu thức
ngầm định hoặc có thể được kiểm tra một cách rõ ràng thông qua các biến.

từ kiểm tra dacs không tham khảo ý kiến DAC tệp cấu hình, Conf không gian tên là
khởi tạo với ít biến. Hiện tại, chỉ có các chỉ thị VFS có sẵn trong đó.

Sản phẩm lập luận không gian tên được khởi tạo nếu một vật đối số có thành phần chuỗi truy vấn.

Sản phẩm DAC không gian tên được khởi tạo với một vài biến tiêu chuẩn (chẳng hạn như
$ {DACS :: JURISDICTION}) nhưng cũng có thể được khởi tạo theo nhiều cách khác nhau từ dòng lệnh
và từ các tệp.

Sản phẩm Env không gian tên được khởi tạo từ môi trường. Biến không hợp lệ về mặt cú pháp
những cái tên bị bỏ qua một cách im lặng.

Nhiều biến thường được thiết lập bởi một máy chủ web được khởi tạo bởi kiểm tra dacs dựa trên
tên của môn học. Các biến này có sẵn trong EnvDAC không gian tên. Ví dụ, nếu
tên đối tượng là https://example.com:8443/myapp/edit-menu?entry=item1, như sau
các biến sẽ được đặt như được chỉ ra:

$ {Env :: HTTPS} = bật
$ {Env :: SERVER_NAME} = example.com
$ {Env :: SERVER_ADDR} = 142.179.101.118
$ {Env :: HTTP_HOST} = example.com: 8443
$ {Env :: SERVER_PORT} = 8443
$ {Env :: REQUEST_URI} = / myapp / edit-menu
$ {Env :: DOCUMENT_ROOT} = /
$ {Env :: REQUEST_METHOD} = NHẬN
$ {Env :: SERVER_SOFTWARE} = dacscheck-1.4.8b
$ {Env :: QUERY_STRING} = entry = item1
$ {Env :: ARG_COUNT} = 1
$ {Env :: CURRENT_URI} = / myapp / edit-menu? Entry = item1
$ {Env :: CURRENT_URI_NO_QUERY} = / myapp / edit-menu

Các biến cùng tên cũng sẽ được đặt trong DAC không gian tên và được xuất dưới dạng
các biến môi trường. Giá trị của $ {Args :: entry} sẽ là item1. Phương thức yêu cầu
mặc định là GET. Biến $ {Env :: REMOTE_USER} (và do đó $ {DACS :: REMOTE_USER}
biến môi trường REMOTE_USER) sẽ được đặt dựa trên danh tính đầu tiên được chỉ định trên
dòng lệnh; nếu không có danh tính nào được chỉ định, biến này sẽ không được xác định.

An Ví dụ Các Ứng Dụng
Để minh họa cách các mảnh khớp với nhau, chúng ta hãy xem xét một giả thuyết (nhưng thực tế)
ứng dụng lịch có tên vôi nó được viết bằng Perl và được gọi là chương trình CGI. Tốt
cho phép người dùng đã được xác thực bởi máy chủ web chỉ đọc, tạo hoặc cập nhật
lịch của riêng cô ấy, trừ khi chủ nhân của lịch cho phép cô ấy đọc
hoặc cập nhật hoạt động trên lịch. Mỗi chủ sở hữu có thể chỉ định người dùng nào có quyền truy cập vào cô ấy
lịch riêng và (các) loại quyền truy cập được phép.

Chính sách ủy quyền này có thể được chỉ định khá dễ dàng. Một cách tiếp cận là sử dụng:

· Quy tắc chính ủy nhiệm trách nhiệm chỉ định chính sách bảo mật cho từng
lịch của người dùng cho người dùng đó.

· Quy tắc cho mỗi người dùng, mỗi lịch cho biết người dùng nào có thể truy cập vào lịch và trong những gì
cách hoặc nhiều cách.

Quản trị viên của chương trình có thể thu thập tất cả các tệp thời gian chạy cho ứng dụng trong
thư mục / usr / local / cal và các thư mục con của nó, và tổ chức nó như sau:

/usr/local/cal/rules/{acl-rule.0,acl-rule.1, ...}
Quy tắc chung cho ứng dụng

/ usr / local / cal / users /tên truy nhập
Thư mục gốc cho lịch thuộc sở hữu của tên truy nhập

/ usr / local / cal / users /tên truy nhập/ cal-1 / data / *
Tệp dữ liệu theo lịch

/ usr / local / cal / users /tên truy nhập/rules/{acl-cal1.0,acl-cal2.0, ...}
Mỗi lịch DAC truy cập các tập tin kiểm soát

/ usr / local / cal / users /tên truy nhập/các nhóm/*
Mỗi người dùng DAC danh sách nhóm, mỗi danh sách một tệp

Đưa ra các quy ước đặt tên sau:

· Để kiểm tra xem nó có nên thực hiện một hoạt động cụ thể hay không, ứng dụng sẽ gọi
kiểm tra dacs, yêu cầu nó sử dụng các quy tắc mà nó tìm thấy trong / usr / local / cal / rules.

· Các quy tắc chung cho ứng dụng sẽ ủy quyền các quyết định kiểm soát truy cập cho
các đối tượng có tên trùng khớp / người dùng /tên truy nhập/ * đến các quy tắc kiểm soát truy cập được tìm thấy trong
thư mục / usr / local / cal / users /tên truy nhập/quy tắc. Các quy tắc này sẽ mô tả những người dùng nào,
nếu có, sẽ được phép thực hiện một thao tác nhất định trên lịch.

· Ứng dụng sẽ sử dụng tên đối tượng của biểu mẫu / người dùng /tên truy nhập/ cal-1? OP =hoạt động
như các đối số để kiểm tra dacs. Bộ quy tắc cho cal-1 sẽ xác định liệu một
danh tính được phép thực hiện yêu cầu hoạt động trên lịch. Ví dụ,
alice (chủ sở hữu) có thể được cấp quyền truy cập bất kể giá trị của OP lý lẽ,
trong khi bob chỉ có thể được cấp quyền truy cập nếu OP = read và tất cả những thứ khác có thể bị từ chối
truy cập. Sau đó, alice có thể xác định một nhóm người dùng mà cô ấy đặt tên là họ và thay đổi
quy tắc cho phép bất kỳ thành viên nào trong nhóm đó có quyền truy cập đọc và cập nhật.

Bản thân các quy tắc kiểm soát truy cập của người dùng có thể nằm trong tầm kiểm soát truy cập. Một dòng lệnh, GUI,
hoặc giao diện web sẽ cung cấp cho quản trị viên và người dùng khả năng quản lý các quy tắc.

Xem VÍ DỤ[32] phần cho các quy tắc ví dụ.

Đây hoàn toàn không phải là cách duy nhất để sắp xếp lịch và dựa trên sự ủy quyền
cách tiếp cận không bắt buộc. Thay vào đó, quản trị viên có thể đặt tất cả các quy tắc dưới một
thư mục chung, như / usr / local / cal / rules / acl-tên truy nhập.0 / {acl-cal1.0, acl-cal2.0, ...} hoặc
đặt họ gần hơn với lịch mà họ đang kiểm soát, như
/ usr / local / cal / users /tên truy nhập/cal-1/acl-cal1.0.

Thay vì kiểm tra xem một hoạt động có được phép hay không, các quy tắc có thể được viết để trả về
chuỗi ràng buộc cho người gọi biết loại (hoặc các loại) truy cập nào được phép. Các
dòng đầu ra của chương trình sẽ bao gồm chuỗi ràng buộc trong dấu ngoặc kép.

So sánh kiểm tra dacs với dacs_acs
dacs_acs(8)[8] là DAC thành phần được gọi bởi Apache (bằng DAC
mod_auth_dacs[25] mô-đun, thực tế) để thực hiện xử lý kiểm soát truy cập trên dịch vụ web
các yêu cầu. Hoạt động của nó thường vô hình đối với các dịch vụ web; dacs_acs làm tất cả
hoạt động trước khi một dịch vụ web được thực thi hoặc một trang web được trả về.

kiểm tra dacs thực hiện một chức năng tương tự như -check_only phương thức hoạt động của dacs_acs in
rằng nó chỉ trả về một quyết định kiểm soát truy cập. Có sự khác biệt quan trọng giữa
Tuy nhiên, hai chương trình.

kiểm tra dacs:

· Không phải là một chương trình CGI (mặc dù nó có thể được gọi từ một);

· không yêu cầu mod_auth_dacs[bốn];

· Không sử dụng bất kỳ DAC tập tin cấu hình;

· Không tương tác trực tiếp với máy chủ web hoặc bất kỳ máy chủ nào khác DAC các chương trình; và

· Chạy ở cấp đặc quyền của người dùng gọi nó hơn là cấp đặc quyền của
Apache.

Trong khi kiểm tra dacs sử dụng bình thường DAC quy tắc kiểm soát truy cập (dacs.acls(5)[7]), không giống như hầu hết
DAC lệnh nó không tham khảo bất kỳ DAC các tệp cấu hình. Môi trường đánh giá
đối với các quy tắc kiểm soát truy cập là tương tự đối với thử nghiệm dịch vụ web, nhưng nó không
giống hệt nhau vì không cần phải có máy chủ web trong hình. Khác với các thuộc tính
liên quan đến các ràng buộc, các thuộc tính như pass_credentials không có ý nghĩa kiểm tra dacs.

Sử dụng và cấu hình của DAC by kiểm tra dacs được đơn giản hóa rất nhiều vì không có thực
liên đoàn hoặc khu vực pháp lý được xác định; một môi trường hoàn toàn khép kín là
được tạo để một chương trình hoặc tập hợp các chương trình liên quan có thể thực hiện cả hai
kiểm tra kiểm soát truy cập chi tiết và chi tiết. Không có liên đoàn hoặc quyền tài phán
các khóa mật mã được sử dụng và không có DAC thông tin đăng nhập được tạo. Liên kết và
tên khu vực pháp lý được khởi tạo, nhưng những người viết quy tắc thường sẽ không cần
nhận thức về chúng.

LỰA CHỌN


Các đối số được xử lý khi chúng được kiểm tra (từ trái sang phải) và thứ tự của chúng có thể
có ý nghĩa; ví dụ, các giá trị được thiết lập bởi -fh cờ có thể ảnh hưởng đến các tùy chọn
theo nó, chẳng hạn như những thứ sử dụng nội suy chuỗi. Chính xác là một vật đối số là
yêu cầu.

-quản trị viên
Tất cả các danh tính theo sau trên dòng lệnh là DAC danh tính đáp ứng
dacs_admin () chức năng. Tham khảo chỉ thị cấu hình ADMIN_IDENTITY trong
dacs.conf(5)[33] và thuộc tính "a" cho danh tính.

Ứng dụng tên ứng dụng
Chỉ định tên ứng dụng được sử dụng để tạo đường dẫn mặc định (xem phần -quy tắc
-các nhóm cờ).

-định nghĩa bài văn hồ sơ
Các định nghĩa thay đổi cho DAC không gian tên được đọc, một vùng trên mỗi dòng, ở định dạng
tên=giá trị (với các trích dẫn tùy chọn xung quanh giá trị). Các tên phải theo cú pháp
có giá trị. Nếu như hồ sơ is -, đầu vào tiêu chuẩn được đọc. Ví dụ, nếu hồ sơ chứa hai
dòng:

FOO = một
BAZ = hai

sau đó trong các quy tắc kiểm soát truy cập $ {DACS :: FOO} sẽ có giá trị "một" và
$ {DACS :: BAZ} sẽ có giá trị "hai". Cờ này có thể được lặp lại, mặc dù
đầu vào tiêu chuẩn chỉ có thể được đọc một lần.

-Dtên = giá trị
Điều này tương đương với -var tên = giá trị.

-bãi rác
Thực hiện tất cả các lần khởi tạo, hiển thị ngữ cảnh đánh giá, sau đó thoát.

-F trường_sep
Khi các vai trò được tra cứu, hãy sử dụng ký tự trường_sep làm ký tự phân cách trường
thay vì mặc định. Để biết chi tiết, hãy tham khảo mô tả của chỉ thị VFS trong
dacs.conf(5)[34.

Chú thích
Lưu ý rằng chỉ sự xuất hiện đầu tiên của ký tự (từ trái sang phải) là
được coi là ký tự phân cách.

-fd miền
Sử dụng miền làm tên miền cho liên đoàn. Nó phải hợp lệ về mặt cú pháp.

-fh hostname
Sử dụng hostname, một tên miền hoàn toàn đủ điều kiện, làm tên máy chủ của hệ thống và để lấy
tên liên đoàn và khu vực tài phán. Nó phải hợp lệ về mặt cú pháp.

-fj họ tên
Sử dụng họ tên như tên khu vực tài phán. Nó phải hợp lệ về mặt cú pháp.

-fn tên ăn
Sử dụng tên ăn như tên liên đoàn. Nó phải hợp lệ về mặt cú pháp.

-các nhóm nhóm_vfs
Theo mặc định, kiểm tra dacs mong đợi để tìm thấy DAC định nghĩa nhóm bắt nguồn từ thư mục
dacscheck / nhóm liên quan đến DACS_HOME (ví dụ: / usr / local / dacs / dacscheck / groups), hoặc nếu
Ứng dụng tên ứng dụng được đưa ra, bắt nguồn từ thư mục dacscheck /tên ứng dụng/ nhóm liên quan đến
DACS_HOME (ví dụ: / usr / local / dacs / dacscheck / myapp / groups) Cờ này chỉ định một
vị trí khác nhau. Nó có thể là một tên đường dẫn tuyệt đối (sẽ được nội suy chuỗi
- xem dacs.conf(5)[35]) hoặc một URI theo cú pháp của VFS[34] chỉ thị cấu hình.
Ví dụ:

-groups "[groups] dacs-fs: / local / groups"
-groups / home / bob / mygroups

Theo mặc định, tham chiếu đến nhóm% FOO: mọi người sẽ được ánh xạ tới một tệp có tên
people.grp trong thư mục FOO liên quan đến DAC thư mục nhóm.

-h
In lời giới thiệu sử dụng.

-i danh tính
Danh tính đã cho được thêm vào tập hợp danh tính có hiệu lực trong quá trình kiểm tra. Điều này
danh tính không nhất thiết phải có tài khoản trên hệ thống. Nếu như danh tính trống không
chuỗi, tuy nhiên, cờ không có hiệu lực; đây là hành vi thuận tiện khi cờ
được sử dụng như -i $ {Env :: REMOTE_USER: - ""}, ví dụ, ở đâu REMOTE_USER có thể đã không
thiết lập.

-icgi
Nếu biến môi trường REMOTE_USER được đặt thành một tên đơn giản hợp lệ hoặc DAC
danh tính, nó được thêm vào tập hợp danh tính có hiệu lực trong quá trình kiểm tra. Nếu
biến không được đặt hoặc không hợp lệ, cờ này không có hiệu lực.

-icgig
Cũng giống như các -icgi cờ, ngoại trừ bất kỳ vai trò nào được liên kết với tên người dùng sẽ được thêm vào.

-anh ta danh tính
Danh tính đã cho là "địa phương" và phải tương ứng với một tài khoản trên hệ thống; nếu
-các nhóm cờ có hiệu lực, tư cách thành viên nhóm của tài khoản sẽ được thêm vào dưới dạng vai trò của
danh tính.

-ilg danh tính
Cũng giống như các -ilg gắn cờ, ngoại trừ tư cách thành viên nhóm của tài khoản sẽ được thêm vào dưới dạng vai trò đối với
danh tính bất kể -các nhóm cờ đang có hiệu lực.

-ieuid
Uid hiệu quả của chương trình được thêm vào tập hợp các danh tính. Nếu -các nhóm
cờ có hiệu lực, tư cách thành viên nhóm của tài khoản sẽ được thêm vào dưới dạng vai trò của danh tính.

-ieuidg
Uid hiệu quả của chương trình được thêm vào tập hợp các danh tính. Các tài khoản
thành viên nhóm sẽ được thêm vào vai trò của danh tính bất kể -các nhóm
cờ đang có hiệu lực.

-iuid
Uid thực của chương trình được thêm vào tập hợp các danh tính. Nếu -các nhóm cờ là
trên thực tế, tư cách thành viên nhóm của tài khoản sẽ được thêm vào vai trò của danh tính.

-iuidg
Uid thực của chương trình được thêm vào tập hợp các danh tính. Nhóm của tài khoản
tư cách thành viên sẽ được thêm vào vai trò của danh tính bất kể -các nhóm cờ là
có hiệu lực.

-lg
Đối với mỗi danh tính cục bộ theo sau trên dòng lệnh, hãy sử dụng nhóm Unix của nó
thành viên với các vai trò của danh tính.

-NS mức đăng nhập
Đặt mức đầu ra gỡ lỗi thành mức đăng nhập (xem dac(1)[23]). Mức mặc định là
cảnh báo, và -v cờ tăng mức để gỡ lỗi hoặc theo dõi.

-tên_so sánh phương pháp
Chính xác như NAME_COMPARE[36] chỉ thị, đặt phương thức mặc định được sử dụng để so sánh
DACS đặt tên trong các ngữ cảnh khác nhau để phương pháp, có thể là trường hợp (phân biệt chữ hoa chữ thường),
nocase, hoặc mặc định.

-q
Hãy im lặng, ngoại trừ các thông báo lỗi; kết quả sẽ không được in ra stdout. Các -v
-NS cờ độc lập với điều này.

-chuyển hướng
Nếu quyền truy cập bị từ chối và quy tắc áp dụng gọi redirect ()[37] với
Đối số BY_SIMPLE_REDIRECT, sau đó URL được chỉ định được in sang stdout. Cờ này
cho phép -q cờ.

-vai trò role_vfs
Các vai trò cho mỗi danh tính theo sau trên dòng lệnh sẽ được tra cứu bằng cách sử dụng
role_vfs. Nó có thể là một tên đường dẫn tuyệt đối (sẽ được nội suy chuỗi - xem
dacs.conf(5)[35]) hoặc một URI theo cú pháp của VFS[34] chỉ thị cấu hình. Nếu như
bất kỳ vai trò nào được tìm thấy, chúng sẽ được thêm vào bất kỳ vai trò nào khác được chỉ định cho người dùng
(cho dù được liệt kê rõ ràng hoặc có được từ thành viên nhóm Unix). Ví dụ, nếu
/ usr / local / myapp / role chứa:

bobo: người dùng
auggie: quản trị viên, người dùng
harley: khách mời

sau đó dòng lệnh:

% dacscheck -roles / usr / local / myapp / role -i auggie / myapp / admin

sẽ kiểm tra quyền truy cập cho danh tính {u = "auggie", g = "admin, users"}.

-quy tắc quy tắc_vfs
Theo mặc định, kiểm tra dacs mong đợi sử dụng bộ quy tắc bắt nguồn từ thư mục dacscheck / acls
liên quan đến DACS_HOME (ví dụ: / usr / local / dacs / dacscheck / acls) hoặc nếu cờ Ứng dụng
tên ứng dụng được đưa ra, bắt nguồn từ thư mục dacscheck /tên ứng dụng/ acls liên quan đến DACS_HOME
(ví dụ: / usr / local / dacs / dacscheck / myapp / acls). Cờ này chỉ định một bộ quy tắc khác
được sử dụng. Nó có thể là một tên đường dẫn tuyệt đối (sẽ được nội suy chuỗi - xem
dacs.conf(5)[35]) hoặc một URI theo cú pháp của VFS[34] chỉ thị cấu hình.
Ví dụ:

-rules "[acls1] dacs-fs: / local / acls"
-rules / usr / local / myrules

Cờ này có thể được lặp lại; các bộ quy tắc sẽ được kiểm tra theo thứ tự mà chúng
được chỉ định trên dòng lệnh.

-v
Tăng mức đầu ra gỡ lỗi. Cờ có thể được lặp lại.

-var tên = giá trị
Cũng giống như các -định nghĩa bài văn cờ, điều này thêm một định nghĩa biến cho DAC không gian tên. Các
biến DACS :: tên sẽ được gán chuỗi giá trị. Các tên phải theo cú pháp
có giá trị. Cờ này có thể được lặp lại.

-vfs vfs_uri
Thêm vfs_uri như là một VFS[34] chỉ thị cấu hình. Cờ này có thể được lặp lại, với
những lần xuất hiện muộn hơn có "mức độ ưu tiên" cao hơn những lần xuất hiện trước đó (giống như nếu chúng
xuất hiện sau đó trong dacs.conf; Thấy chưa dacs.conf(5)[33]).

--
Điều này đánh dấu sự kết thúc của các đối số cờ.

VÍ DỤ


Để minh họa cách kiểm tra dacs có thể được sử dụng với các ứng dụng thực tế, đây là một số ví dụ.
Một số đầu tiên tiếp tục với ứng dụng lịch giả định được mô tả trước đó.

1. Tệp /usr/local/cal/rules/acl-rule.0 có thể trông giống như sau:



<delegate url_pattern="/users/alice/*"
rule_uri = "/ usr / local / cal / users / alice / rules />
<delegate url_pattern="/users/bob/*"
rule_uri = "/ usr / local / cal / users / bob / rules />





người dùng ("auth")




Quy tắc này chuyển hướng các yêu cầu về lịch của một người dùng cụ thể đến quyền truy cập của người dùng đó
các quy tắc kiểm soát. Nó cũng nói rằng quyền truy cập vào các tệp nhị phân của ứng dụng bị hạn chế đối với
người dùng xác thực. Ứng dụng có thể đưa ra một lệnh như:

% dacscheck -i $ REMOTE_USER -rules / usr / local / cal / rules vật

sẽ trả về trạng thái thoát là 0 nếu REMOTE_USER được cấp quyền truy cập vào vật;
nếu không, trạng thái thoát là 1 sẽ được trả lại. Một lựa chọn tốt hơn là sử dụng lệnh:

% dacscheck -icgi -rules / usr / local / cal / rules vật

điều này sẽ khiến người dùng không được xác thực nếu REMOTE_USER không được đặt hoặc không hợp lệ.

2. Tệp /usr/local/cal/users/alice/rules/acl-cal1.0 chứa quy tắc cho người dùng
"Lịch 1" của alice và có thể trông giống như sau:








người dùng (": alice")


trở lại(1)





$ {Args :: OP} eq "đọc"


người dùng (": bob")





Quy tắc này nói rằng alice được phép truy cập đầy đủ vào lịch (không có
hạn chế hoạt động), nhưng bob chỉ có quyền đọc. kiểm tra dacs sẽ là
được gọi bằng / users / alice / cal-1? OP = create, / users / alice / cal-1? OP = update, hoặc
/ users / alice / cal-1? OP = read để kiểm tra sự cho phép thực hiện tạo, cập nhật hoặc
đọc hoạt động trên lịch, tương ứng.

3. Nếu alice định nghĩa một DAC nhóm mà cô ấy gọi là gia đình và thêm tên julia và
auggie với nhóm đó, cô ấy có thể sửa đổi quy tắc ở trên bằng cách thêm những điều sau:



$ {Args :: OP} eq "đọc"
hoặc $ {Args :: OP} eq "update"


người dùng ("%: alice-family")



Quy tắc này nói rằng bất kỳ thành viên nào của nhóm alice-family đều được phép đọc và cập nhật
truy cập vào lịch này. Lệnh:

% dacscheck -i julia / users / alice / cal-1? OP = update

sẽ báo cáo rằng quyền truy cập đã được cấp.

4. Thành viên của nhóm alice được gọi là alice-family có thể được chỉ định trong tệp
/ usr / local / cal / users / alice / groups / family








người dùng (": alice")


trở lại(1)




Quy tắc này chỉ cho phép alice quản lý tư cách thành viên của nhóm này, nhưng cô ấy được tự do
sửa đổi quy tắc để cho phép những người khác quản lý nhóm của cô ấy.

5. Ví dụ cuối cùng cho ứng dụng này, các quy tắc của alice cũng có thể bị truy cập
điều khiển:








người dùng (": alice")


trở lại(1)




Quy tắc này chỉ cho phép alice quản lý tư cách thành viên của nhóm này, nhưng cô ấy được tự do
sửa đổi quy tắc để cho phép những người khác quản lý nhóm của cô ấy.

6. Một chương trình phân tích nhật ký web nguồn mở phổ biến, được viết bằng Perl, có thể được gọi là
Chương trình CGI. Chương trình bao gồm các điều khoản bảo mật theo đó nó có thể hạn chế quyền truy cập
cho bất kỳ người dùng nào được xác thực bởi máy chủ web, bằng tên người dùng (sử dụng REMOTE_USER, Như
được xuất bởi máy chủ web) hoặc dựa trên địa chỉ IP của người dùng (sử dụng REMOT_ADDR).
Khoảng 40 dòng mã (cộng với các loại khởi tạo) triển khai
Chính sách bảo mật này về cơ bản có thể được thay thế chỉ bằng một vài dòng mã:

$ exit_value = 0 của tôi;
hệ thống "/ usr / local / dacs / bin / dacscheck", "-q", "-icgi", "-rules",
"/ usr / local / webstats / acls", "/ webstats";
$ exit_value = $? >> 8;
# print "dacscheck trả về $ exit_value cho người dùng \" $ remote_user \ "\ n";
if ($ exit_value! = 0) {
# dacscheck từ chối quyền truy cập; in tin nhắn và thoát
lối ra 1;
}

# dacscheck cấp quyền truy cập, vì vậy hãy tiếp tục

Mẹo
Sản phẩm DAC phân phối bao gồm một mô-đun Perl
(/usr/local/dacs/lib/perl/DACScheck.pm) để thực hiện kiểm tra dacs dễ sử dụng hơn một chút.
Ví dụ trên sẽ được viết là:

sử dụng DACScheck.pm;
dacscheck_rules ("/ usr / local / webstats / acls");

my $ result = dacscheck_cgi ("/ webstats");
if ($ kết quả! = 1) {
# dacscheck từ chối quyền truy cập; in tin nhắn và thoát
lối ra 1;
}

# dacscheck cấp quyền truy cập, vì vậy hãy tiếp tục

Một đơn giản DAC quy tắc kiểm soát truy cập có thể được viết để nhân bản bảo mật của chương trình
chức năng (sử dụng người sử dụng()từ() vị ngữ, xem dacs.exprs(5)[22]), nhưng
các chính sách phức tạp hơn có thể được thêm vào dễ dàng mà không cần phải sửa đổi Perl
chương trình một lần nữa.

CHẨN ĐOÁN


Chương trình sẽ thoát 0 nếu quyền truy cập được cấp và 1 nếu quyền truy cập bị từ chối. Bất kỳ trạng thái thoát nào khác
chỉ ra một lỗi đã xảy ra.

Sử dụng dacscheck trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

  • 1
    VBA-M (Đã lưu trữ - Hiện có trên Github)
    VBA-M (Đã lưu trữ - Hiện có trên Github)
    Dự án đã chuyển sang
    https://github.com/visualboyadvance-m/visualboyadvance-m
    Các tính năng: Tạo gian lận lưu trạng thái đa
    hệ thống, hỗ trợ gba, gbc, gb, sgb,
    sgb2Tu...
    Tải xuống VBA-M (Đã lưu trữ - Hiện có trên Github)
  • 2
    Stacer
    Stacer
    Giám sát và tối ưu hóa hệ thống Linux
    Kho lưu trữ Github:
    https://github.com/oguzhaninan/Stacer.
    Đối tượng: Người dùng cuối / Máy tính để bàn. Người sử dụng
    giao diện: Qt. Lập trình La ...
    Tải xuống Stacer
  • 3
    CamCáo
    CamCáo
    Ngã ba của TeamWinRecoveryProject(TWRP)
    với nhiều chức năng bổ sung, thiết kế lại
    và nhiều tính năng khác: Hỗ trợ Treble và
    ROM không phải TrebleNhân Oreo cập nhật,
    được xây dựng...
    Tải xuống OrangeFox
  • 4
    itop - ITSM CMDB OpenSource
    itop - Nguồn mở ITSM CMDB
    Cổng hoạt động CNTT: hoàn toàn mở
    nguồn, ITIL, dịch vụ dựa trên web
    công cụ quản lý bao gồm đầy đủ
    CMDB có thể tùy chỉnh, hệ thống trợ giúp và
    một người đàn ông tài liệu ...
    Tải xuống itop - ITSM CMDB OpenSource
  • 5
    Clementine
    Clementine
    Clementine là một bản nhạc đa nền tảng
    người chơi và tổ chức thư viện lấy cảm hứng từ
    Amarok 1.4. Nó có một tốc độ nhanh và
    giao diện dễ sử dụng và cho phép bạn
    tìm kiếm và...
    Tải xuống Clementine
  • 6
    XISMuS
    XISMuS
    CHÚ Ý: Bản cập nhật tích lũy 2.4.3 có
    đã được phát hành !! Bản cập nhật hoạt động cho bất kỳ
    phiên bản 2.xx trước đó. Nếu nâng cấp
    từ phiên bản v1.xx, vui lòng tải xuống và
    i ...
    Tải xuống XISMuS
  • Khác »

Lệnh Linux

  • 1
    abi từ
    abi từ
    abiword � từ đa nền tảng linh hoạt
    bộ xử lý...
    Chạy abiword
  • 2
    abl
    abl
    abl - Đại diện tiền tố cho
    các hàm boolean MÔ TẢ:
    libablmmm.a là một thư viện cho phép
    biểu diễn hàm boolean trong một
    Dạng giống LISP. MỘT ...
    Chạy abl
  • 3
    create_bmp_for_orth_in_circ
    create_bmp_for_orth_in_circ
    xin lỗi_no_writing_yet - một phần của atlc Sử dụng
    create_bmp_for_ect_in_circ trực tuyến bằng cách sử dụng
    dịch vụ onworks.net. ...
    Chạy create_bmp_for_orth_in_circ
  • 4
    tạo_bmp_for_rect_in_rect
    tạo_bmp_for_rect_in_rect
    create_bmp_for_ect_in_ect - bitmap
    máy phát điện cho dây dẫn hình chữ nhật
    bên trong dây dẫn hình chữ nhật (một phần của
    atc)...
    Chạy create_bmp_for_orct_in_ort
  • 5
    gap5
    gap5
    Gap5 - Chương trình tập hợp bộ gen (một phần của
    gói staden)...
    Chạy khoảng cách5
  • 6
    Gapi2-codegen
    Gapi2-codegen
    không có giấy tờ - Không có trang hướng dẫn nào cho việc này
    chương trình. MÔ TẢ: Chương trình này thực hiện
    không có manpage. Chạy lệnh này
    với công tắc trợ giúp để xem nó là gì
    làm. Đối với ...
    Chạy Gapi2-codegen
  • Khác »

Ad