Quy tắc chính sách không bao giờ có hiệu lực


12

Tôi đang cố gắng viết một .rulestệp mới cho PolicyKit. Thử nghiệm của tôi (trong thư mục /etc/polkit-1/rules.d/) trông như thế này:

polkit.addRule(function(action, subject) {
    polkit.spawn(["rm","/home/gabriel/test"]);
    if (action.id == "org.freedesktop.policykit.exec") {
        polkit.log("action=" + action);
        polkit.log("subject=" + subject);
    }
    return polkit.Result.NOT_HANDLED;
});

Nhưng theo như tôi có thể nói, mã này không bao giờ chạy. Các testtập tin vẫn còn đó, và không có dữ liệu ghi nhận sau khi chạy một cái gì đó như$ pkexec -u otheruser bash

(Tôi đã thử đánh dấu các .rulestệp là có thể thực thi được.)

Câu trả lời:


15

Nếu bạn đang sử dụng Ubuntu 19.04 (hoặc thấp hơn) thì bạn vẫn đang sử dụng phiên bản PolKit cũ, nơi không có tệp .rules mà chỉ có các tệp .pkla và .conf.

Trên dấu nhắc lệnh, làm:

pkaction --version

Nếu nó nói <0.106, thì bạn chỉ có thể sử dụng cú pháp cũ.

Bạn có thể tạo tệp .pkla trong /etc/polkit-1/localauthority/


1
Ubuntu 15.10 vẫn còn trên phiên bản cũ. pkaction --versionchopkaction version 0.105
Roger Binns

5
Ubuntu 18.04 vẫn mang 0.105 !!!! Ôi trời!!!!
Osqui

1
Và thậm chí không có phiên bản 0.106+ nào trong repos cho Ubuntu! CHÚA ƠI!
Suncatcher

2
ubay 19.04 pkaction version 0.105. Các tệp quy tắc mới được viết bằng JavaScript không được hỗ trợ.
Denis Denisov

0

Để làm việc như mong đợi, bạn phải đặt .rulescác tệp của riêng mình vào:

/usr/share/polkit-1/rules.d

Lưu ý rằng nó cũng nên giải quyết câu hỏi này .


Di chuyển tập tin ở đó dường như không thay đổi bất cứ điều gì. Ngoài ra, theo các tài liệu polkitArch wiki , /etc/polkit-1/rules.dnên được sử dụng cho cấu hình người dùng. Vì vậy, tôi không chắc chắn những gì thay đổi thư mục làm cho.
Keidax

@Keidax: tên .rulestập tin của bạn là gì?
Sylvain Pineau

Hiện tại/usr/share/polkit-1/rules.d/10-udisks-personal.rules
Keidax
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.