ꬖ# N d Z ddlZddlmZ ddlmZ dZdZdZd Zd Z d
Z
d ZdS )ut
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License,
or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Copyright © 2019 Cloud Linux Software Inc.
This software is also available under ImunifyAV commercial license,
see
chattr.py
This is a module for managing file attributes via ioctl.
Used IOCTL request constants:
FS_IOC_GETFLAGS - get fs flags
FS_IOC_SETFLAGS - set fs flags
Supported attributes:
FS_IMMUTABLE_FL - immutable attribute
Refer to include/linux/fs.h for values of above constants:
https://elixir.bootlin.com/linux/v2.6.32.71/source/include/linux/fs.h
N)array)ioctlif@l f c t ddg }t | t |d t |t
j S )zGet attributes of a file.
:param fd: descriptor of a file to examine, read-only access is enough
:return: flags as integer value
ir ) byteorder)r r FS_IOC_GETFLAGSint
from_bytessysr )fd flags_ptrs Q/opt/imunify360/venv/lib/python3.11/site-packages/imav/malwarelib/utils/chattr.py get_flagsr - s?
cA3I "oy!,,,>>)s}>=== c T t d|g }t | t | dS )aH Replace existing file attributes with the ones provided.
Calling _set_flags() directly is most likely NOT what you want. Consider
using append_flags() and subtract_flags().
:param fd: descriptor of a file to modify, read-only access is enough
:param flags: attribute flags combined by bitwise OR operator |
r N)r r FS_IOC_SETFLAGS)r flagsr s r
_set_flagsr 7 s- cE7##I "oy)))))r c J t | |z }t | | dS )z@Enable given attributes of a file. See _set_flags() for details.Nr r r r new_flagss r append_flagsr B s( "
%Ir9r c L t | | z }t | | dS )zADisable given attributes of a file. See _set_flags() for details.Nr r s r subtract_flagsr H s* "
&Ir9r )__doc__r
r fcntlr r r
FS_IMMUTABLE_FLr r r r r r r" s @
> > >* * * r