00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
#ifndef __RSBAC_ACL_H
00011
#define __RSBAC_ACL_H
00012
00013
#include <linux/init.h>
00014
#include <rsbac/types.h>
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
#ifdef CONFIG_RSBAC_INIT_DELAY
00029
extern int rsbac_init_acl(
void);
00030
#else
00031
extern int rsbac_init_acl(
void) __init;
00032 #endif
00033
00034
00035
int rsbac_mount_acl(kdev_t kdev);
00036
int rsbac_umount_acl(kdev_t kdev);
00037
00038
00039 extern
int rsbac_stats_acl(
void);
00040
00041
00042 extern
int rsbac_check_acl(
int correct,
int check_inode);
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
int rsbac_acl_set_acl_entry (enum rsbac_target_t target,
00057 union
rsbac_target_id_t tid,
00058 enum rsbac_acl_subject_type_t subj_type,
00059
rsbac_acl_subject_id_t subj_id,
00060
rsbac_acl_rights_vector_t rights,
00061
rsbac_time_t ttl);
00062
00063
00064
00065
00066
00067
00068
int rsbac_acl_remove_acl_entry (enum rsbac_target_t target,
00069 union
rsbac_target_id_t tid,
00070 enum rsbac_acl_subject_type_t subj_type,
00071
rsbac_acl_subject_id_t subj_id);
00072
00073
00074
00075
00076
00077
int rsbac_acl_remove_acl (enum rsbac_target_t target,
00078 union
rsbac_target_id_t tid);
00079
00080
00081
00082
00083
00084
00085
int rsbac_acl_add_to_acl_entry (enum rsbac_target_t target,
00086 union
rsbac_target_id_t tid,
00087 enum rsbac_acl_subject_type_t subj_type,
00088
rsbac_acl_subject_id_t subj_id,
00089
rsbac_acl_rights_vector_t rights,
00090
rsbac_time_t ttl);
00091
00092
00093
00094
00095
00096
00097
00098
00099
int rsbac_acl_remove_from_acl_entry(enum rsbac_target_t target,
00100 union
rsbac_target_id_t tid,
00101 enum rsbac_acl_subject_type_t subj_type,
00102
rsbac_acl_subject_id_t subj_id,
00103
rsbac_acl_rights_vector_t rights);
00104
00105
00106
00107
00108
00109
00110
int rsbac_acl_set_mask (enum rsbac_target_t target,
00111 union
rsbac_target_id_t tid,
00112
rsbac_acl_rights_vector_t mask);
00113
00114
00115
00116
00117
00118
00119
int rsbac_acl_get_mask (enum rsbac_target_t target,
00120 union
rsbac_target_id_t tid,
00121
rsbac_acl_rights_vector_t * mask_p);
00122
00123
00124
00125
00126
00127
00128
00129
00130
int rsbac_acl_get_rights (enum rsbac_target_t target,
00131 union
rsbac_target_id_t tid,
00132 enum rsbac_acl_subject_type_t subj_type,
00133
rsbac_acl_subject_id_t subj_id,
00134
rsbac_acl_rights_vector_t * rights_p,
00135
boolean inherit);
00136
00137
00138
00139
00140
00141
00142
00143
00144
int rsbac_acl_get_single_right (enum rsbac_target_t target,
00145 union
rsbac_target_id_t tid,
00146 enum rsbac_acl_subject_type_t subj_type,
00147
rsbac_acl_subject_id_t subj_id,
00148 enum rsbac_adf_request_t right,
00149
boolean * result);
00150
00151
00152
00153
00154
00155
00156
int rsbac_acl_copy_fd_acl(struct rsbac_fs_file_t file1,
00157 struct rsbac_fs_file_t file2);
00158
00159
00160
00161
00162
int rsbac_acl_copy_pp_acl(
rsbac_pid_t old_pid,
00163
rsbac_pid_t new_pid);
00164
00165
00166
00167
00168
00169
00170
int rsbac_acl_get_tlist (enum rsbac_target_t target,
00171 union
rsbac_target_id_t tid,
00172 struct
rsbac_acl_entry_t ** entry_pp,
00173
rsbac_time_t ** ttl_pp);
00174
00175
00176
00177
00178
00179
00180
int rsbac_acl_add_group(
rsbac_uid_t owner, enum rsbac_acl_group_type_t type,
char * name,
00181
rsbac_acl_group_id_t * group_id_p);
00182
00183
int rsbac_acl_change_group(
rsbac_acl_group_id_t id,
00184
rsbac_uid_t owner,
00185 enum rsbac_acl_group_type_t type,
00186
char * name);
00187
00188
int rsbac_acl_remove_group(
rsbac_acl_group_id_t id);
00189
00190
int rsbac_acl_get_group_entry(
rsbac_acl_group_id_t group, struct
rsbac_acl_group_entry_t * entry_p);
00191
00192
int rsbac_acl_list_groups(
rsbac_uid_t owner,
00193
boolean include_global,
00194 struct
rsbac_acl_group_entry_t ** entry_pp);
00195
00196
00197
boolean rsbac_acl_group_exist(
rsbac_acl_group_id_t group);
00198
00199
int rsbac_acl_add_group_member(
rsbac_acl_group_id_t group,
rsbac_uid_t user,
rsbac_time_t ttl);
00200
00201
int rsbac_acl_remove_group_member(
rsbac_acl_group_id_t group,
rsbac_uid_t user);
00202
00203
00204
boolean rsbac_acl_group_member(
rsbac_acl_group_id_t group,
rsbac_uid_t user);
00205
00206
00207
00208
00209
int rsbac_acl_get_user_groups(
rsbac_uid_t user,
00210
rsbac_acl_group_id_t ** group_pp,
00211
rsbac_time_t ** ttl_pp);
00212
00213
00214
int rsbac_acl_get_group_members(
rsbac_acl_group_id_t group,
00215
rsbac_uid_t user_array[],
00216
rsbac_time_t ttl_array[],
00217
int maxnum);
00218
00219
00220
int rsbac_acl_remove_subject(struct
rsbac_acl_entry_desc_t desc);
00221
00222
00223
00224
int rsbac_acl_remove_user(
rsbac_uid_t user);
00225
00226 #endif