Kanrisuru::Mode class models the mode permissions for users and groups on a unix-like system. The mode class helps translate between numeric and symbolic representation of permission bits set on a filesytem.
A file permission mode is characterized as having 3 distinct access types,
other. The owner is a user that the file belongs to. The group type is which group the file / directoy belongs to. Other is anyone that isn’t either the owner or the group, that has file access permissions.
For each ownership type, a file can be marked as having the following permission bits set:
- Read: Can the file be read from.
- Write: Can changes be made to a file
- Execute: Can the file be executed as a program on the linux sytem.
The 3 permission bits can be set based on their positioning in the octal format, eg
rwx, where each permission setting can be marked as a
1 for active, and
0 for inactive. The 3 permission bits can then be represented as either a symoblic string, namely:
rwx, or a numeric value,
The 3 ownership types combined form a symoblic mode permission that is commonly found on linux systems
The first slot designates if the permission is for a directory or a file, then the owner, group and other.
Public Class Methods
Instanties a new mode instance. The mode can either be in a symbolic or numeric string type, as well as an octal integer type.
mode = Kanrisuru::Mode.new("644") mode.symbolic "-rw-r--r--" mode = Kanrisuru::Mode.new("drwxrwxrwx") mode.numeric "777" mode = Kanrisuru::Mode.new(0o644) mode.to_s "-rw-r--r--"
Public Instance Methods
Returns if the permission bits is marked as directory or not.
Kanrisuru::Mode.new("drwxrwxrwx").directory? true Kanrisuru::Mode.new("644").directory? false
Returns the symbolic representation of the mode permission.
mode = Kanrisuru::Mode.new("600") mode.symbolic "-rw-------"
Set mode permission bits via symbolic representation. Can either be set on the entire owner, group and other modes, as well as adding permission or removing permission on a single type.
# Setting the entire permission chain. mode = Kanrisuru::Mode.new("400") mode.symbolic = "-rw-r--rw-" mode.numeric "646" # Change bits per ownership type, using traditional notation mode.symbolic = "u=rwx,g+w" mode.symbolic "-rwxrw-rw-" # Change all bits, using traditional notation mode.symbolic = "a-x" mode.symbolic "-rw-rw-rw"
Returns the numeric octal format as a string.
mode = Kanrisuru::Mode.new("drwxrwxrwx") mode.numeric "777"
Set the file permission bits via numeric notation. Accepts either a string representation of the numeric format, or an octal integer type.
mode = Kanrisuru::Mode.new("drw-rw-rw-") mode.numeric = "600" mode.symbolic "drw-------" mode.numeric = 0o644 mode.symbolic "drw-r--r--"
Returns a string version of the instance.
mode = Kanrisuru::Mode.new("777") mode.inspect "#<Kanrisuru::Mode:0x800 @numeric=777 @symbolic=-rwxrwxrwx>"
Returns the symbolic version of the mode permission
Returns an integer numeric version of the mode permission. The value will be converted into base10, so be careful when inspecting and testing this value
mode = Kanrisuru::Mode.new("-rwx--x--x") mode.to_i 457 mode.to_i.to_s(8) "711"