Command-line Tools
Casbin CLIs are command-line tools that provide a command-line interface for Casbin, enabling you to use all of Casbin APIs in the shell. This documentation covers the usage of Casbin CLI for various languages including Rust, Java, Go, and NodeJs.
Installation
Go (casbin-go-cli)
Clone project from repository
git clone https://github.com/casbin/casbin-go-cli.git
Build project
cd casbin-go-cli
go build -o casbin
Rust (casbin-rust-cli)
From crates.io
cargo install casbin-rust-cli
From source
Clone project from repository
git clone https://github.com/casbin-rs/casbin-rust-cli.git
Build project
cd casbin-rust-cli
cargo build --release
Java (casbin-java-cli)
Clone project from repository
git clone https://github.com/jcasbin/casbin-java-cli.git
Build project, the jar package will be generated in the target directory
cd casbin-java-cli
mvn clean install
Usage
Options
options | description | must | remark |
---|---|---|---|
-m, --model | The path of the model file or model text | y | Please wrap it with "" and separate each line with \| |
-p, --policy | The path of the policy file or policy text | y | Please wrap it with "" and separate each line with \| |
-e, --enforce | Check permissions | n | Please wrap it with "" |
-ex, --enforceEx | Check permissions and get which policy it is | n | Please wrap it with "" |
-AF, --addFuntion | Add custom funtion ( casbin-java-cli only ) | n | Please wrap it with "" and separate each line with \| |
-ap, --addPolicy | Add a policy rule to the policy file ( casbin-java-cli only ) | n | Please wrap it with "" |
-rp, --removePolicy | Remove a policy rule from the policy file ( casbin-java-cli only ) | n | Please wrap it with "" |
Get started
Check whether Alice has read permission on data1
./casbin enforce -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data1" "read"
{"allow":true,"explain":null}
./casbin enforce -m "[request_definition]\nr = sub, obj, act\n[policy_definition]\np = sub, obj, act\n[role_definition]\ng = _, _\n[policy_effect]\ne = some(where (p.eft == allow))\n[matchers]\nm = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act" -p "p, alice, data1, read\np, bob, data2, write\np, data2_admin, data2, read\np, data2_admin, data2, write\ng, alice, data2_admin" "alice" "data1" "read"
{"allow":true,"explain":null}
Check whether Alice has write permission for data2. If so, display the effective policy.
./casbin enforceEx -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data2" "write"
{"allow":true,"explain":["data2_admin","data2","write"]}
Add a policy to the policy file ( casbin-java-cli only )
./casbin addPolicy -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data2" "write"
{"allow":true,"explain":null}
Delete a policy from the policy file ( casbin-java-cli only )
./casbin removePolicy -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data2" "write"
{"allow":true,"explain":null}