где я могу найти исходный код функции "setcon" в libse linux? - PullRequest
1 голос
/ 02 апреля 2020

Я пытаюсь выяснить, как работает Se linux, и я вижу функцию с именем setcon в нескольких местах, которая объявлена ​​в selinux/selinux.h, и для этого есть запись справочной страницы. Однако я не могу найти реализацию (т.е. исходный код) этой функции в исходном коде libse linux. Кто-нибудь может сказать мне, где находится исходный код setcon? Большое спасибо.

/* Set the current security context to con.
   Note that use of this function requires that the entire application
   be trusted to maintain any desired separation between the old and new
   security contexts, unlike exec-based transitions performed via setexeccon.
   When possible, decompose your application and use setexeccon()+execve()
   instead. Note that the application may lose access to its open descriptors
   as a result of a setcon() unless policy allows it to use descriptors opened
   by the old context. */
extern int setcon(const char * con);

1 Ответ

0 голосов
/ 12 апреля 2020

Я выясняю это сам. На самом деле, функция "setcon" определена в /libselinux/src/proattr.c с использованием нескольких макросов.

#define setselfattr_def(fn, attr) \
int set##fn(const char * c) \
{ \
    return setprocattrcon(c, 0, #attr); \
}

#define all_selfattr_def(fn, attr) \
  getselfattr_def(fn, attr)  \
  setselfattr_def(fn, attr)

all_selfattr_def(con, current)

Как мы видим выше, настоящая функция это "setprocattrcon", которая также определена в том же исходном файле. ,

...