Ce document concerne la version 1.3.0 de RSBAC.
Liste les commandes permettant de récupérer les attributs actuellement positionnés sur les devices.
Liste les commandes permettant de récupérer les attributs actuellement positionnés sur les fichiers/répertoires/file/liens.
Liste les commandes permettant de récupérer les attributs actuellement positionnés sur les groupes.
Liste les commandes permettant de récupérer les attributs actuellement positionnés sur les objets NET.
Liste les commandes permettant de récupérer les attributs actuellement positionnés sur les utilisateurs.
Retourne la valeur d'un attribut concernant un(e) fichier/répertoire/lien/device/file. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé.
Use: attr_get_fd [switches] module target-type attribute file/dirname(s)
-v = verbose, -e = show effective (maybe inherited) value, not real
-r = recurse into subdirs, -n = list all requests
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC or AUTH
target-type = FILE, DIR, FIFO, SYMLINK, DEV or FD
(FD: let attr_get_fd decide between FILE, DIR, FIFO and SYMLINK, no DEV)
Type effectif (-e) du fichier /var/log/messages.log attribué pour le module RC : attr_get_fd -e RC FILE rc_type_fd /var/log/messages.log Droits sur le fichier /usr/sbin/sshd d'après le module FF : attr_get_fd FF FILE ff_flags /usr/sbin/sshd
Retourne la valeur d'un attribut concernant un fichier/répertoire. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé.
Use: attr_get_file_dir module target-type file/dirname attribute [request]
Use: attr_get_file_dir module target-type file/dirname attribute [position]
Use: attr_get_file_dir list_category_nr
-e = show effective (maybe inherited) value, not real
-d = numeric device specification ({b|c}major[:minor])
-p = print requests, -n [target] = list all requests [for target]
-c list all Linux capabilities, -R = list all RES resource names
-C path = convert path to device special file to device specification
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC, AUTH, RES or PAX
target-type = FILE, DIR, FIFO, SYMLINK or DEV
Retourne la valeur d'un attribut concernant un groupe. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé.
Use: attr_get_group [switches] module group attribute [position|request-name]
-n = numeric value, -b = both names and numbers,
-l list all users, -L list all Linux groups
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC or AUTH
Retourne la valeur d'un attribut d'un IPC. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :
Use: attr_get_ipc [flags] module ipc-type id attribute
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
-i = list all IPC ids with non-default attributes
ipc-types: sem, msg, shm, anonpipe, anonunix
attribute (string) and returned value = see following list:
security_level 0 = unclassified, 1 = confidential, 2 = secret, 3 = top secret, 254 = inherit, max. level 252
mac_categories Bit Set String of length 64 for all categories
pm_object_class Class-ID (positive integer)
pm_ipc_purpose Purpose-ID (positive integer)
pm_object_type 0 = none, 1 = TP, 2 = personal data, 3 = non-personal data, 4 = ipc, 5 = dir
rc_type RC-type-id
jail_id JAIL ID (0 = off)
attr_get_ipc RC anonunix 2 rc_type attr_get_ipc JAIL msg 2 jail_id
Retourne la valeur d'un attribut d'un objet NET. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :
Use: attr_get_net [-v] [-e] module target-type attribute [CAT category] [request] id(s)
-v = verbose, -e = show effective (maybe inherited) value, not real
-r = recurse into subdirs, -n [target] = list all requests [for target]
-a = list attributes and values
-d = list NETDEV targets with non-default attribute values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS or RC
target-type = NETDEV, NETTEMP or NETOBJ
category = category number for mac_categories
request = request number for log_array_low|high
Retourne la valeur d'un attribut d'un processus. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :
Use: attr_get_process [switches] module pid attribute [bit-no]
-p = print all request names, -n = list all request names
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC, AUTH or PAX
categories and log_program_based (with additional parameter bit-no)
0=no, 1=yes
Retourne la valeur d'un attribut d'un utilisateur/processus. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :
Use: attr_get_up [switches] module target-type attribute user(s)/proc-no.
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC or AUTH
target-type = USER or PROCESS,
Retourne la valeur d'un attribut d'un utilisateur. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :
Use: attr_get_user [switches] module user attribute [position|request-name]
-e = show effective (maybe inherited) value, not real
-n = numeric value, -b = both names and numbers,
-l list all users, -L list all Linux groups
-c list all Linux capabilities, -R = list all RES resource names
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC or AUTH
mac_[min_]categories (with additional parameter position)
0=no, 1=yes
log_user_based (with additional parameter request-name)
0=no, 1=yes
Positionne les attributs d'un(e) fichier/répertoire/device/file/lien. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé.
Use: attr_set_fd [-v] [-r] module target-type attribute value file/dirname(s)
-v = verbose, -r = recurse into subdirs,
-n = list all requests
-A = list attributes and values
-V version = supply RSBAC integer version number for upgrading
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC or AUTH
target-type = FILE, DIR, FIFO, SYMLINK, DEV or FD
(FD: let attr_set_fd decide between FILE, DIR, FIFO and SYMLINK, no DEV),
Liste des options disponibles : attr_set_fd -A Liste des requêtes existantes (tous types confondus) : attr_set_fd -n Permet à su de prendre n'importe quel UID : attr_set_fd AUTH FILE auth_may_setuid 1 /bin/su Définit le type correspondant au fichier /var/log/messages.log : attr_set_fd RC FILE rc_type_fd 5 /var/log/messages.log Définit le role correspondant aux programmes dans /bin/ : attr_set_fd -r RC FILE rc_force_role 0 /bin/
Positionne les attributs d'un ipc. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :
Use: attr_set_ipc module ipc-type id attribute value
- ipc-types: sem, msg, shm, anonpipe or anonunix
- attribute (string) and value = see following list:
security_level 0 = unclassified, 1 = confidential, 2 = secret, 3 = top secret, 254 = inherit, max. level 252
mac_categories Bit Set String of length 64 for all categories
pm_object_class Class-ID (positive integer)
pm_ipc_purpose Purpose-ID (positive integer)
pm_object_type 0 = none, 1 = TP, 2 = personal data, 3 = non-personal data, 4 = ipc, 5 = dir
rc_type RC-type-id
jail_id JAIL ID (0 = off)
Retourne les numéros de version des outils d'administration de RSBAC installés et de la version de RSBAC compilée dans le noyau.
Le module AUTH contrôle quel process à le droit d'utiliser quels UID. Il peut être utilisé conjointement avec le module UM, ou avec la gestion d'utilisateurs standard de Linux.
Permet d'afficher les commandes a utiliser pour récupérer la configuration du module AUTH pour le répertoire/fichier donné.
Use: auth_back_cap [-r] [-v] [-o output-file] file/dirname(s) should be called by root with all rsbac modules switched off, -r = recurse in subdirs, -v = verbose, no symlinks followed, -T file = read file/dirname list from file (- for stdin), -m = set maximum length of cap entry list per file, default is 200 -o target-file = write to file, not stdout -N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
auth_back_cap /usr/sbin/sshd
Affiche ou modifie les UID pouvant être utilisés par un fichier.
Use: auth_set_cap [switches] TYPE add/remove target first_user [last_user]
Use: auth_set_cap [switches] TYPE get target
TYPE = PROCESS (add/remove only), DIR, FILE or FD (auto-select),
target = pid or filename
last_user: range from first_user to last_user
-m = set maximum length of cap entry list per file, default is 200
-e = get or set caps for effective uids, not real
-f = get or set caps for filesystem uids, not real
-g = get or set caps for gids, not uids
-E = get or set for eff gids, not real uids
-F = get or set for fs gids, not real uids
-t = set relative time-to-live for this cap entry in seconds (add only)
-T = set absolute time-to-live for this cap entry in seconds (add only)
-D = set relative time-to-live for this cap entry in days (add only)
-V version = supply RSBAC integer version number for upgrading
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
auth_set_cap FILE add /bin/su 0
Le module ACL permet de définir très finement les droits que possède un utilisateur, un groupe d'utilisateurs ou un rôle sur un fichier particulier. Il étend les droits UNIX en permettant plus de détail dans les droits (lecture/ecriture/execution avec les droits UNIX) et plus de souplesse dans la gestion des utilisateurs (possibilité de définir des droits différents sur un même fichier pour plusieurs utilisateurs). Il peut être utilisé conjointement avec le module UM, ou avec la gestion d'utilisateurs standard de Linux.
Ajoute ou supprime des droits au niveau du module ACL.
Use: acl_grant [switches] subj_type subj_id [rights] target-type file/dirname(s)
-v = verbose, -r = recurse into subdirs,
-p = print right names, -s = set rights, not add
-k = revoke rights, not add, -m remove entry (set back to inherit)
-b = expect rights as bitstring, -n = list valid SCD names
-d = numeric device specification ({b|c}major[:minor])
-u, -g, -l = shortcuts for USER, GROUP and ROLE
-t = set relative time-to-live for this trustee in seconds (add and set only)
-T = set absolute time-to-live for this trustee in seconds (add and set only)
-D = set relative time-to-live for this trustee in days (add and set only)
-V version = supply RSBAC integer version number for upgrading
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
subj_type = USER, GROUP or ROLE,
subj_id = user name or id number,
rights = list of space-separated right names (requests and ACL specials),
also request groups R (read requests), RW (read-write), W (write)
SY (system), SE (security), A (all)
S (ACL special rights)
and NWx with x = S R W C E A F M (similar to well-known network system)
target-type = FILE, DIR, FIFO, SYMLINK, DEV, IPC, SCD, USER, PROCESS, NETDEV,
NETTEMP_NT, NETTEMP, NETOBJ or FD
(FD: let acl_grant decide between FILE, DIR, FIFO and SYMLINK, no DEV),
(IPC, USER, PROCESS: only :DEFAULT:
(NETTEMP: no :DEFAULT:
- Use name :DEFAULT: for default ACL
Ajoute le droit MODIFY_SYSTEM_DATA à l'utilisateur mysql pour les IPC : acl_grant USER mysql MODIFY_SYSTEM_DATA IPC :DEFAULT:
Liste les droits au niveau du module ACL
Use: acl_rights [switches] target-type file/dirname(s)
-v = verbose, -r = recurse into subdirs,
-p = print right names, -d = give direct, not effective rights
-n = list valid SCD names, -s = scripting mode
-D = numeric device specification ({b|c}major[:minor])
-R = list valid right names [for target-type]
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
-u user = print rights for given user, not caller
-g group = print rights for given group, not caller
-l role = print rights for given role, not caller
target-type = FILE, DIR, FIFO, SYMLINK, DEV, IPC, SCD, USER, GROUP, PROCESS,
NETDEV, NETTEMP_NT, NETTEMP, NETOBJ or FD
(FD: let acl_rights decide between FILE, DIR, FIFO and SYMLINK, no DEV),
(IPC, PROCESS: only :DEFAULT:
(NETTEMP: no :DEFAULT:
- Use name :DEFAULT: for default ACL
Lister les droits généraux sur le fichier /bin/bash : acl_rights -p FILE /bin/bash Lister les droits du l'utilisateur mysql sur les IPC : acl_rights -p -u mysql IPC :DEFAULT:
Est-ce vraiment un module ?
Le module FF permet de positionner facilement des attributs généraux sur les fichiers et les répertoires comme lecture seule, ajout seulement, ecriture seulement, pas de suppression, pas de renommage ... Ces rêglages seront valables pour tous les utilisateurs, y compris root, à l'exception du rôle role_admin qui n'est pas concerné par l'attribut "no_search" (afin de permettre l'indexation des fichiers par exemple).
Est-ce vraiment un module ?
Le module JAIL permet d'executer un programme dans une prison, l'empêchant complètement de nuire au reste du système.
Execute un programme dans une prison.
Use: rsbac_jail [flags] [-I addr] [-R dir] [-C cap-list] prog args
This program will put the process into a jail with chroot to path,
ip address IP and then execute prog with args
-I addr = limit to IP address,
-R dir = chroot to dir,
-N = enclose process in its private namespace,
-C cap-list = limit Linux capabilities for jailed processes,
use bit-vector, numeric value or list names of desired caps,
A = all, FS_MASK = all filesystem related,
-L = list all Linux capabilities,
-S = list all SCD targets,
-v = verbose, -i = allow access to IPC outside this jail,
-P = allow access to IPC in the parent jail,
-n = allow all network families, not only UNIX and INET (IPv4),
-r = allow INET (IPv4) raw sockets (e.g. for ping),
-a = auto-adjust INET any address 0.0.0.0 to jail address, if set,
-o = additionally allow to/from remote INET (IPv4) address 127.0.0.1,
-d = allow read access on devices, -D allow write access
-e = allow GET_STATUS_DATA on devices, -E allow MODIFY_SYSTEM_DATA
-t = allow *_OPEN on tty devices
-s = allow to create with / set mode to suid
-u = allow to mount/umount
-G scd ... = allow GET_STATUS_DATA on these scd targets
-M scd ... = allow MODIFY_SYSTEM_DATA on these scd targets
Deprecated old options, please use -G and -M:
-l = allow to modify rlimits (-M rlimit),
-c = allow to modify system clock (-M clock time_strucs),
-m = allow to lock memory (-M mlock),
-p = allow to modify priority (-M priority),
-k = allow to get kernel symbols (-G ksyms)
L'usage de -D permet l'accès en écriture aux devices (ici le terminal) : rsbac_jail -vD echo "test" L'usage de -d permet l'accès en lecture aux devices : rsbac_jail -vdD head -c 8 /dev/urandom L'option "-M priority" permet de positionner MODIFY_SYSTEM_DATA sur priority, -R définit un répertoire dans lequel chrooter : rsbac_jail -vdD -M priority -R /var/apache-chroot /usr/bin/mysqld_safe -log-error=/var/log/mysqld.log
Le module MAC implémente un modèle de sécurité dans lequel un processus se voit associé un niveau de sécurité dépendant de l'utilisateur sous lequel il est lancé. Les processus peuvent alors accéder en lecture aux processus/fichiers/devices ayant un niveau de sécurité inférieur ou égal, et en écriture aux processus/fichiers/devices ayant un niveau de sécurité égal.
Le module PAX est un module protégeant contre l'execution de code non désiré à partir de méthode classique comme le débordement de tampon (buffer overflow). Il est basé sur PaX, mais en modifie le comportement en ne modifiant pas les programmes eux-mêmes. Lors de l'utilisation de ce module, il faut veiller à utiliser les utilitaires RSBAC, et non les utilitaires PaX comme paxctl qui ne fonctionneront pas.
Le module RC se base sur la définition de rôles (pour les acteurs) et de types (pour les cibles), et se réfère à un tableau de droits à trois dimensions pour permettre ou non à un rôle donné d'effectuer une action donnée sur un type donné. L'affectation des rôles et des types se fait en se basant sur les propriétés du fichier concerné (processus pour le rôle, fichier/répertoire/device/file/lien pour le type). Voir en particulier les attributs rc_type_fd, rc_initial_role et rc_force_role.
Copie un rôle.
Use: rc_copy_role [flags] from_role to_role
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
Copie le rôle 0 (e.g. General_User) vers le rôle 3. rc_copy_role 0 3
Copie un type.
Use: rc_copy_type [flags] target from_type to_type
target = FD, DEV, IPC, USER, PROCESS, GROUP, NETDEV, NETTEMP, NETOBJ
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
Copie le type FD 0 (e.g. General_FD) vers le type FD 3. rc_copy_role 0 3
Retourne le numéro du rôle courant.
Retourne les droits actuellement disponibles sur un(e) fichier/répertoire/lien/file) ou un device. Ces droits sont donc ceux associés au rôle courant.
Use: rc_get_eff_rights_fd [-v] [-r] [-p] target-type file/dirname(s)
-v = verbose, -r = recurse into subdirs,
-p = print right names,
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
target-type = FILE, DIR, FIFO, SYMLINK, DEV or FD
(FD: let rc_get_eff_rights_fd decide between FILE, DIR, FIFO and SYMLINK, no DEV),
rc_get_eff_rights_fd -p /var/log/messages.log
Use: rc_get_item [switches] rc-target-type id-nr item [sub-id-nr [right]]
rc_get_item list_xxx
rc_get_item list_unused_xxx (_nr only)
rc_get_item list_def_fd_ind_create_type{s|_nr|_values role-id
rc_get_item backup
rc_get_item print
-v = verbose, -p = print right names,
-i = list items and values,
-r = remove role before restore (backup only)
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
rc-target-type = ROLE or TYPE,
id-nr = ROLE or TYPE number,
item = entry line,
sub-id-nr = use this sub-id (_comp items only),
right = right name or number (type_comp items only),
xxx = roles, fd_types, dev_types, ipc_types, user_types, process_types, scd_types, group_types, role_nr, fd_type_nr, dev_type_nr, ipc_type_nr, user_type_nr, process_type_nr, scd_type_nr, rights: print a list
list_def_fd_ind_create_types etc.: print a list
Liste les rôles disponibles : rc_get_item list_roles Liste les types d'IPC disponibles : rc_get_item list_ipc_types Retourne la valeur du paramêtre def_fd_create_type pour le role 0 (e.g. General_User) : rc_get_item ROLE 0 def_fd_create_type Retourne la valeur du paramêtre RECEIVE pour le type IPC 0 (e.g. General_IPC) pour le role 0 (e.g. General_User) : rc_get_item ROLE 0 type_comp_ipc 0 RECEIVE Affiche toutes les informations concernant le module RC : rc_get_item print
Use: rc_set_item [switches] rc-target-type id item [role/type [list-of-rights]] [value]
rc_set_item -c TYPE target-id item source-id [first_role [last_role]],
-v = verbose, -p = print right names,
-a = add, not set, -k = revoke, not set,
-b = accept rights as bitstring,
-c = copy all/given roles' rights to type from other type,
-d = delete all roles' rights to this type,
-i = list items and values
-t = set relative time-to-live in secs (role/type comp, admin, assign only)
-T = set absolute time-to-live in secs (role/type comp, admin, assign only)
-D = set relative time-to-live in days (role/type comp, admin, assign only)
-V version = supply RSBAC integer version number for upgrading
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
rc-target-type = ROLE or TYPE,
id-nr = ROLE or TYPE number,
item = entry line,
role/type = for this type only (role/type comp, admin, assign only),
right = request name or number (type_comp items only),
also special rights and groups R (read requests),
RW (read-write), SY (system), SE (security), A (all)
Définit un nouveau role nommé Test : rc_set_item ROLE 4 name "Test" Supprime le droit def_fd_create_type pour ce rôle : rc_set_item -k ROLE 4 def_fd_create_type Ajoute le droit MODIFY_SYSTEM_DATA pour ce rôle sur le SCD 14 (priority) : rc_set_item -a ROLE 4 type_comp_scd 14 MODIFY_SYSTEM_DATA
Le module RES permet de mettre en place des limites d'utilisation de ressources pour les utilisateurs et les processus. On définit un minimum et un maximum pour les couples utilisateur/ressource ou processus/ressource pour les quels on désire mettre en place une limitation. Note : Pour définir les valeurs par défaut (qui concerneront tous les utilisateurs), on utilisera l'UID 4294967292 (-4, ALL_USERS).
Est-ce vraiment un module ?
Le module UM gère les utilisateurs et les groupes. Il peut complémenter ou remplacer totalement la gestion classique des utilisateurs et groupes de Linux.
Ces commandes utilisent le toolkit dialog pour offrir une interface plus simple d'utilisation.
Use: rsbac_check correct check_inode
correct = 0: do not correct errors
correct = 1: correct errors
correct = 2: correct more
check_inode = 0: do not check inode numbers
check_inode = 1: also check inode numbers (only ext2/3 on 2.4 kernels)
Use: rsbac_init root_dev
root_dev: root device to initialize from, e.g. /dev/sda1
L'attribut ou l'objet demandé n'a pu être trouvé. En général, l'objet n'existe pas.
Attribut invalide ou ne correspondant pas au module précisé.
La version des outils d'administration de RSBAC et la version de RSBAC compilée dans le noyau ne sont pas les mêmes.
Le module invoqué n'a pas été activé lors de la compilation du noyau.
Le mot de passe proposé est trop simple.
RSBAC fournit des informations de débogage qui peuvent être trouvées dans les fichiers /var/log/messages.log et /var/log/everything.log. Afin de mettre en place une politique de sécurité, il est conseillé de démarrer en softmode (passer le paramètre rsbac_softmode au noyau), et de regarder les messages que RSBAC fournit dans ces fichiers.
La structure générale d'un message de log est la suivante :
<timestamp> <hostname> <ID>|<fonction>: request <requête>, pid <pid>, ppid <ppid>, prog_name <prog_name>, prog_file <prog_file>, uid <uid>, remote ip <ip>, target_type <type>, tid Device <dev> Inode <inode> Path <path>, attr <attributes>, value <value>, result NOT_GRANTED (Softmode) by <modules> Par exemple : Nov 30 15:08:11 darkstar 0000000761|rsbac_adf_request(): request GET_STATUS_DATA, pid 2063, ppid 1910, prog_name sshd, prog_file /usr/sbin/sshd, uid 0, remote ip 192.18.10.240, target_type FILE, tid Device 03:04 Inode 6743 Path /etc/ld.so.cache, attr none, value none, result NOT_GRANTED (Softmode) by RC
La première chose à regarder dans une telle ligne est le ou les modules en cause. Cette information est située tout à la fin de la ligne.
Savoir exactement quel droit ajouter à partir des messages fournis en standard n'est pas toujours facile. Il peut être intéressant de rendre les logs plus verbeux. Il suffit pour cela de modifier le fichier /proc/rsbac-info/debug, ou de passer un paramètre au noyau.
Pour savoir quel sont le rôle et le type qui sont en jeux lors du refus d'un droit par le module RC : echo debug_adf_rc 1 > /proc/rsbac-info/debug
Les paramètres de debogage pouvant être activées sont :
Le but est ici de protéger les fichiers de log contre la suppression ou la modification des données qu'ils contiennent déjà. Les programmes devront cependant pouvoir ajouter des lignes à la fin du fichier. A noter que cet exemple ne se soucie pas de la rotation des logs.
On cherche d'abord un identifiant de type disponible, et un type à copier : rc_get_item list_fd_types On crée ensuite un type à partir du type 0 (e.g. General_FD) : rc_copy_type FD 0 5 Puis on définit le nom de ce nouveau type : rc_set_item TYPE 3 type_fd_name "Logs FD" Enfin, on interdit la modification ou la suppression pour les fichiers de ce type pour tous les roles : for i in `rc_get_item list_roles | awk '{ print $1 }'`; do rc_set_item -k ROLE $i type_comp_fd 3 TRUNCATE; done for i in `rc_get_item list_roles | awk '{ print $1 }'`; do rc_set_item -k ROLE $i type_comp_fd 3 DELETE; done On utilise ce type pour le fichier /var/log/messages.log : attr_set_fd RC FILE rc_type_fd 3 /var/log/messages.log On peut vérifier les droits positionnés : rc_get_eff_rights_fd -p /var/log/messages.log