Skip to main content

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)

  1. Clone project from repository

    git clone https://github.com/casbin/casbin-go-cli.git
  2. Build project

    cd casbin-go-cli
    go build -o casbin

Rust (casbin-rust-cli)

From crates.io

cargo install casbin-rust-cli

From source

  1. Clone project from repository

    git clone https://github.com/casbin-rs/casbin-rust-cli.git
  2. Build project

    cd casbin-rust-cli
    cargo build --release

Java (casbin-java-cli)

  1. Clone project from repository

    git clone https://github.com/jcasbin/casbin-java-cli.git
  2. Build project, the jar package will be generated in the target directory

    cd casbin-java-cli
    mvn clean install

Usage

Options

optionsdescriptionmustremark
-m, --modelThe path of the model file or model textyPlease wrap it with "" and separate each line with \|
-p, --policyThe path of the policy file or policy textyPlease wrap it with "" and separate each line with \|
-e, --enforceCheck permissionsnPlease wrap it with ""
-ex, --enforceExCheck permissions and get which policy it isnPlease wrap it with ""
-AF, --addFuntionAdd custom funtion ( casbin-java-cli only )nPlease wrap it with "" and separate each line with \|
-ap, --addPolicyAdd a policy rule to the policy file ( casbin-java-cli only )nPlease wrap it with ""
-rp, --removePolicyRemove a policy rule from the policy file ( casbin-java-cli only )nPlease 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}