рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ libseccomp рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕реА рдорд╛рдиреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдХрд┐рд╕ рдХрд╛рд░рдг рд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реБрдИ:
seccomp рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдХреЙрд▓рд░ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рдХреЛ рдШрд╛рддрдХ рдорд╛рди рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдХреЛ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА (рдХреЗрд╡рд▓ -EINVAL
рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд╛рдиреЛрдВ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд╕реЗрдЯ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд╕рд┐рд╕реНрдЯрдордб рдкреАрдЖрд░ 6952 рднреА рджреЗрдЦреЗрдВред
рд╣рд╛рдп @topimiettinen , рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЗрддрдирд╛ рд╕рдордп рд▓рдЧрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордп рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВред
@drakenclimber рдпрд╣ рдПрдХ рдбреЛрдЬрд╝реА рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕рднреА libseccomp API рдореЗрдВ рдореИрдирдкреЗрдЬ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП (рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ), рд╕рднреА рдореИрдирдкреЗрдЬ рдореЗрдВ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдХреБрдЫ рд╣рд╛рде рд╕реЗ рд▓рд╣рд░рд╛рддреА "рддреНрд░реБрдЯрд┐ рдкрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди" рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рд╡рд┐рдЪрд╛рд░?
рд╣рд╛рдп @topimiettinen , рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЗрддрдирд╛ рд╕рдордп рд▓рдЧрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордп рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВред
@drakenclimber рдпрд╣ рдПрдХ рдбреЛрдЬрд╝реА рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕рднреА libseccomp API рдореЗрдВ рдореИрдирдкреЗрдЬ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП (рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ), рд╕рднреА рдореИрдирдкреЗрдЬ рдореЗрдВ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдХреБрдЫ рд╣рд╛рде рд╕реЗ рд▓рд╣рд░рд╛рддреА "рддреНрд░реБрдЯрд┐ рдкрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди" рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
* manually audit each API call to generate a list of possible return values * decide if these return values make sense, modify the code if they don't * document each possible return value in the associated manpage with a brief explanation of what the error code indicates
рд╡рд┐рдЪрд╛рд░?
рдбрд╛рдВрдЧ .... рдЖрдкрдиреЗ рдКрдкрд░ рдЬреЛ рдХреБрдЫ рднреА рд▓рд┐рдЦрд╛ рд╣реИ, рдореИрдВ рдЙрд╕рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдпрд╛рд╕ :)ред рд░рд┐рдЯрд░реНрди рдХреЛрдб рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдФрд░ рдлрд┐рд░ рдЙрдирдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд░рдпрд╛рд╕ рд╣реЛрдЧрд╛ред
рдФрд░ рд╣рд╛рдБ, рдЬрдмрдХрд┐ рдЧреНрд▓реИрдорд░рд╕ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдореИрдВ рдХреБрдЫ рд╕реАрдЧреНрд░реБрдк рд╕рд╛рдордЧреНрд░реА рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╣рдордиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рдЬрд┐рд╕рдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рд╕реАрдЧреНрд░реБрдк рдлреАрдЪрд░ рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ ... рд╡реЗ рдХрд░ рд╕рдХрддреЗред
рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рджреЗрдЦрдХрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛! рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореВрд▓ рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдлрд▓рддрд╛ рдореЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рдерд╛, рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╣реИред рд╕рдореАрдХреНрд╖рд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорджрдж рдХрд░реЗрдЧреА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдПрдХ рд╣рдж рддрдХ рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ рднреАред
рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рджреЗрдЦрдХрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛! рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореВрд▓ рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдлрд▓рддрд╛ рдореЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рдерд╛, рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╣реИред рд╕рдореАрдХреНрд╖рд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорджрдж рдХрд░реЗрдЧреА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдПрдХ рд╣рдж рддрдХ рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ рднреАред
рд╣рдореЗрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрднреА рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЬрд┐рддрдиреА рджреЗрд░ рд░реБрдХреЗрдВрдЧреЗ, рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдХреЛрдб рдЙрддрдиреЗ рд╣реА рдХрдо рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗ рдФрд░ libseccomp рдХрд╛ рдкреВрд░рд╛ рдмрд┐рдВрджреБ рдЗрд╕ рд╕рд╛рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ рд╣реИ :)
рдбрд╛рдВрдЧ .... рдЖрдкрдиреЗ рдКрдкрд░ рдЬреЛ рдХреБрдЫ рднреА рд▓рд┐рдЦрд╛ рд╣реИ, рдореИрдВ рдЙрд╕рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдпрд╛рд╕ :)ред рд░рд┐рдЯрд░реНрди рдХреЛрдб рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдФрд░ рдлрд┐рд░ рдЙрдирдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд░рдпрд╛рд╕ рд╣реЛрдЧрд╛ред
рд╣рд╛рдБ, рдпрд╣ рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдХрдо рд╕реЗ рдХрдо @drakenclimber рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рднреА рдХрдо рд╕рдордп рд╕реЗ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реИ!) рдмрд╛рдж рдореЗрдВ рдЖрдЬ (рдХрд▓?) рдореИрдВ рдЗрд╕реЗ рдЯреБрдХрдбрд╝реЛрдВ/рдПрдХрд╛рдзрд┐рдХ-рдореБрджреНрджреЛрдВ (рдХреБрдЫ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде) рдореЗрдВ рддреЛрдбрд╝ рджреВрдВрдЧрд╛ рддрд╛рдХрд┐ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдирд┐рдкрдЯрдирд╛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХреЗред
рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреЗ рд░реВрдк рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ libseccomp рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдиреМ рдЕрджреНрд╡рд┐рддреАрдп рддреНрд░реБрдЯрд┐ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдПрдХ рдмрд╣реБрдд рд╣реА рдХрдЪреНрдЪреЗ рдЪреЗрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░):
# grep -e "-E[A-Z0-9]\+" src/*.{h,c} | sed 's/.*-\(E[A-Z0-9]\+\).*/\1/' | sort -u
EACCES
EDOM
EEXIST
EFAULT
EINVAL
ENOMEM
EOPNOTSUPP
EPERM
ESRCH
... рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╕реНрдерд╛рди рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрдердкреВрд░реНрдг рдорд╛рди рд╕реЗ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рдпрд╣ рдЗрд░рд╛рджрд╛ рд╕реЗ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ libseccomp API рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рд╣реИ:
const struct scmp_version *seccomp_version(void)
unsigned int seccomp_api_get(void)
int seccomp_api_set(unsigned int level)
scmp_filter_ctx seccomp_init(uint32_t def_action)
int seccomp_reset(scmp_filter_ctx ctx, uint32_t def_action)
void seccomp_release(scmp_filter_ctx ctx)
int seccomp_merge(scmp_filter_ctx ctx_dst, scmp_filter_ctx ctx_src)
uint32_t seccomp_arch_resolve_name(const char *arch_name)
uint32_t seccomp_arch_native(void)
int seccomp_arch_exist(const scmp_filter_ctx ctx, uint32_t arch_token)
int seccomp_arch_add(scmp_filter_ctx ctx, uint32_t arch_token)
int seccomp_arch_remove(scmp_filter_ctx ctx, uint32_t arch_token)
int seccomp_load(const scmp_filter_ctx ctx)
int seccomp_attr_get(const scmp_filter_ctx ctx, enum scmp_filter_attr attr, uint32_t *value)
int seccomp_attr_set(scmp_filter_ctx ctx, enum scmp_filter_attr attr, uint32_t value)
char *seccomp_syscall_resolve_num_arch(uint32_t arch_token, int num)
int seccomp_syscall_resolve_name_arch(uint32_t arch_token, const char *name)
int seccomp_syscall_resolve_name_rewrite(uint32_t arch_token, const char *name)
int seccomp_syscall_resolve_name(const char *name)
int seccomp_syscall_priority(scmp_filter_ctx ctx, int syscall, uint8_t priority)
int seccomp_rule_add_array(scmp_filter_ctx ctx, uint32_t action, int syscall, unsigned int arg_cnt, const struct scmp_arg_cmp *arg_array)
int seccomp_rule_add(scmp_filter_ctx ctx, uint32_t action, int syscall, unsigned int arg_cnt, ...)
int seccomp_rule_add_exact_array(scmp_filter_ctx ctx, uint32_t action, int syscall, unsigned int arg_cnt, const struct scmp_arg_cmp *arg_array)
int seccomp_rule_add_exact(scmp_filter_ctx ctx, uint32_t action, int syscall, unsigned int arg_cnt, ...)
int seccomp_notify_alloc(struct seccomp_notif **req, struct seccomp_notif_resp **resp)
void seccomp_notify_free(struct seccomp_notif *req, struct seccomp_notif_resp *resp)
int seccomp_notify_receive(int fd, struct seccomp_notif *req)
int seccomp_notify_respond(int fd, struct seccomp_notif_resp *resp)
int seccomp_notify_id_valid(int fd, uint64_t id)
int seccomp_notify_fd(const scmp_filter_ctx ctx)
int seccomp_export_pfc(const scmp_filter_ctx ctx, int fd)
int seccomp_export_bpf(const scmp_filter_ctx ctx, int fd)
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ "int" рд▓реМрдЯрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдореВрд╣ рдЬрд┐рдирдореЗрдВ рд╕рдорд╛рди рдХреЛрдб рдкрде рдФрд░ рд╡рд╛рдкрд╕реА рдорд╛рди рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
int seccomp_arch_exist(const scmp_filter_ctx ctx, uint32_t arch_token)
int seccomp_arch_add(scmp_filter_ctx ctx, uint32_t arch_token)
int seccomp_arch_remove(scmp_filter_ctx ctx, uint32_t arch_token)
int seccomp_attr_get(const scmp_filter_ctx ctx, enum scmp_filter_attr attr, uint32_t *value)
int seccomp_attr_set(scmp_filter_ctx ctx, enum scmp_filter_attr attr, uint32_t value)
int seccomp_syscall_resolve_name_arch(uint32_t arch_token, const char *name)
int seccomp_syscall_resolve_name_rewrite(uint32_t arch_token, const char *name)
int seccomp_syscall_resolve_name(const char *name)
int seccomp_rule_add_array(scmp_filter_ctx ctx, uint32_t action, int syscall, unsigned int arg_cnt, const struct scmp_arg_cmp *arg_array)
int seccomp_rule_add(scmp_filter_ctx ctx, uint32_t action, int syscall, unsigned int arg_cnt, ...)
int seccomp_rule_add_exact_array(scmp_filter_ctx ctx, uint32_t action, int syscall, unsigned int arg_cnt, const struct scmp_arg_cmp *arg_array)
int seccomp_rule_add_exact(scmp_filter_ctx ctx, uint32_t action, int syscall, unsigned int arg_cnt, ...)
int seccomp_notify_receive(int fd, struct seccomp_notif *req)
int seccomp_notify_respond(int fd, struct seccomp_notif_resp *resp)
int seccomp_notify_id_valid(int fd, uint64_t id)
int seccomp_notify_fd(const scmp_filter_ctx ctx)
int seccomp_load(const scmp_filter_ctx ctx)
int seccomp_export_bpf(const scmp_filter_ctx ctx, int fd)
... рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдЙрдкрд░реЛрдХреНрдд рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╡рддрдГ рдЗрд╕рдХреЗ рдХреЛрдб рдкрде рдФрд░/рдпрд╛ рд╡рд╛рдкрд╕реА рдорд╛рди рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИред
рд╕рдореВрд╣ рд╕реА рдХреЗрд╡рд▓ __NR_SCMP_ERROR рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЧреНрд░реБрдк рдбреА EINVAL, EPERM, EOPNOTSUPP, ENOMEM, EDOM, EFAULT, EEXIST рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
seccomp_load() EINVAL, ENOMEM, ESRCH рдФрд░ prctl() (рдХреЗрд╡рд▓ EACCES, EFAULT, EINVAL рдХреЗ рд▓рд┐рдП PR_SET_NO_NEW_PRIVS рдФрд░ PR_SET_SECCOMP) рдФрд░ seccomp() (EACCES, EFAULT, MEINVAL, ENOME) syscalls рд╕реЗ рдЙрдирдХреЗ рдореИрдиреБрдЕрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЧрд▓рдд рдорд╛рди рд▓реМрдЯрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрдиреНрдиреЗред
рдЬрдм libseccomp рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рддреЛ рдХреЙрд▓рд░ рдХреЛ рд╡рд╛рдкрд╕ syscall рддреНрд░реБрдЯрд┐рдпрд╛рдБ, рдЬреИрд╕реЗ prctl() рдФрд░ seccomp(), рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдорд╛рди (рд╢рд╛рдпрдж ENOSYS?) рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ libseccomp рдЗрд╕рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рди рд╣реЛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди (рдпрд╛ ABI рдЕрдВрддрд░)ред
рдпрджрд┐ рдпрд╣ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рддреА рд╣реИ, рддреЛ рд╢рд╛рдпрдж рд╣рдо рдПрдХ рдирдпрд╛ attr рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЧрд▓рдд рдорд╛рди рдХреЛ рд╕реАрдзреЗ рдХреЙрд▓рд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред
рд╕рдВрднрд╡рддрдГ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреЛрдИ рдПрдмреАрдЖрдИ/рдПрдкреАрдЖрдИ рдЯреВрдЯрдирд╛ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ libseccomp рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдЧрд▓рдд рдореВрд▓реНрдпреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдХреБрдЫ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗрд╡рд▓ рдХреБрдЫ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдореМрдЬреВрдж рд╣реЛрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ ugetrlimit
рдХреЗрд╡рд▓ x86_32 рдкрд░) рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЧрд▓рдд рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдирд╛рдо рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрд▓рдЧ (рд╕рдВрднрд╡рддрдГ рд╕рд┐рдВрдереЗрдЯрд┐рдХ) рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА .
рдареАрдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ "рд╡рд┐рдлрд▓рддрд╛ рдкрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп" рдЗрд╕рд▓рд┐рдП рдЬрдм рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рддреЛрдбрд╝рдирд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реЛрдЧрд╛ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрд▓рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдзрд╛рд░рдгрд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рдмрджрд▓ рд░рд╣реА рд╣реИрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ ABI рдореЗрдВ рдПрдХ рдордЬрдмреВрдд рдЧрд▓рдд рдЧрд╛рд░рдВрдЯреА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдПрдХ рд╕рд╛рд░реНрдердХ рд╡реНрдпрд╛рдкрд╛рд░ рд╣реИред
рдареАрдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ "рд╡рд┐рдлрд▓рддрд╛ рдкрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп" рдЗрд╕рд▓рд┐рдП рдЬрдм рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рддреЛрдбрд╝рдирд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реЛрдЧрд╛ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрд▓рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдзрд╛рд░рдгрд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рдмрджрд▓ рд░рд╣реА рд╣реИрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ ABI рдореЗрдВ рдПрдХ рдордЬрдмреВрдд рдЧрд▓рдд рдЧрд╛рд░рдВрдЯреА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдПрдХ рд╕рд╛рд░реНрдердХ рд╡реНрдпрд╛рдкрд╛рд░ рд╣реИред
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВред
рдПрдХ рдмрд╛рд░ рдЬрдм рдпрд╣ рдореВрд▓реНрдпрд╛рдВрдХрди рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдкрд░ рдЧрд▓рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд╡рд╛рдкрд╕ рдХрд┐рдП рдЧрдП рдЧрд▓рдд рдореВрд▓реНрдпреЛрдВ рдХреА рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рд╣реЛрдЧрд╛ред
рд╕рдореВрд╣реАрдХрд░рдг рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдерд╛, рддреЛ рдЪрд▓рд┐рдП рдЗрд╕ рд╕рдм рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪреА рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ _ (рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╣рдо рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ, рдореИрдВ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд░рд╣реВрдВрдЧрд╛)_:
[x] seccomp_reset
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, ENOMEMред
[x] seccomp_merge
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, EDOM, EEXIST, ENOMEMред
[x] seccomp_arch_exist
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, EEXISTред
[x] seccomp_arch_add
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, EEXIST, ENOMEM, EDOMред
[x] seccomp_arch_remove
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, EEXISTред
[x] seccomp_load
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, ENOMEM, ESRCH, ECANCELEDред
[x] seccomp_attr_get
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, EEXISTред
[x] seccomp_attr_set
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, EACCES, EOPNOTSUPP, EEXISTред
[x] seccomp_syscall_resolve_name_arch
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд, рд╡рд┐рдлрд▓рддрд╛ рдкрд░ syscall рдорд╛рди рдпрд╛ __NR_SCMP_ERROR рд▓реМрдЯрд╛рддрд╛ рд╣реИред
[x] seccomp_syscall_resolve_name_rewrite
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд, рд╡рд┐рдлрд▓рддрд╛ рдкрд░ syscall рдорд╛рди рдпрд╛ __NR_SCMP_ERROR рд▓реМрдЯрд╛рддрд╛ рд╣реИред
[x] seccomp_syscall_resolve_name
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд, рд╡рд┐рдлрд▓рддрд╛ рдкрд░ syscall рдорд╛рди рдпрд╛ __NR_SCMP_ERROR рд▓реМрдЯрд╛рддрд╛ рд╣реИред
[x] seccomp_syscall_priority
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, EDOM, EFAULT, ENOMEMред
[x] seccomp_rule_add_array
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, EOPNOTSUPP, ENOMEM, EDOM, EFAULT, EEXISTред
[x] seccomp_rule_add
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, EOPNOTSUPP, ENOMEM, EDOM, EFAULT, EEXISTред
[x] seccomp_rule_add_exact_array
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, EOPNOTSUPP, ENOMEM, EDOM, EFAULT, EEXISTред
[x] seccomp_rule_add_exact
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, EOPNOTSUPP, ENOMEM, EDOM, EFAULT, EEXISTред
[x] seccomp_notify_alloc
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EOPNOTSUPP, ENOMEM, EFAULT, ECANCELEDред рдореИрдирдкреЗрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреНрд░реБрдЯрд┐ рдкрд░ -1 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрднрд╡рддрдГ рдХреЗрд╡рд▓ seccomp() рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
[x] seccomp_notify_receive
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EOPNOTSUPP рдФрд░ ECANCELEDред рдореИрдирдкреЗрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреНрд░реБрдЯрд┐ рдкрд░ -1 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрднрд╡рддрдГ рдХреЗрд╡рд▓ seccomp() рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
[x] seccomp_notify_response
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EOPNOTSUPP рдФрд░ ECANCELEDред рдореИрдирдкреЗрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреНрд░реБрдЯрд┐ рдкрд░ -1 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрднрд╡рддрдГ рдХреЗрд╡рд▓ seccomp() рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
[x] seccomp_notify_id_valid
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EOPNOTSUPP рдФрд░ ECANCELEDред рдореИрдирдкреЗрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА -ENOENT рдСрди рдПрд░рд░ (рдЕрдорд╛рдиреНрдп рдЖрдИрдбреА) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрднрд╡рдд: рдХреЗрд╡рд▓ seccomp() рдЗрд░рдиреЛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
[x] seccomp_notify_fd
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд, рдЕрдзрд┐рд╕реВрдЪрдирд╛ fd рд▓реМрдЯрд╛рддрд╛ рд╣реИред
[x] seccomp_export_pfc
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL рдФрд░ ECANCELEDред
[x] seccomp_export_bpf
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдЯрд░реНрди: EINVAL, ENOMEM, рдФрд░ ECANCELEDред
рдЕрдм рдЬрдмрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рдд рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреМрди рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЛрдб рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рд╕рдВрдЧрдд рд╣реИрдВред рдЙрд╕ рдЖрдЦрд┐рд░реА рдмрд┐рдЯ рдХреЛ рдХрд╛рдлреА рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рдПрдХ рдкреАрдЖрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рд╣рдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рд╕реБрдзрд╛рд░ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХреЗрдВ, рдореИрдВ рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред
ENOSYS рдХреА рдмрдЬрд╛рдп "рд╡рд┐рд╢реЗрд╖" рдкреНрд░рдХреГрддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд╣рдорд╛рд░реЗ рдХрд░реНрдиреЗрд▓/libc рдХреИрдЪ-рдСрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд░рдХреНрд╖рдг рд╣реИред рдореБрдЭреЗ рдЕрдиреНрдп рдореВрд▓реНрдпреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреА рд╣реЛрдЧреА, рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдХреЛрдИ рдордЬрдмреВрдд рднрд╛рд╡рдирд╛/рд╡рд┐рдЪрд╛рд░ рд╣реИ?
рдЕрднреА рднреА рдмрд╣реБрдд рдХреБрдЫ рдЧрд╛рдпрдм рд╣реИ, рдЬреНрдпрд╛рджрд╛рддрд░ рдореИрдирдкреЗрдЬ рд╕рдВрдкрд╛рджрди рдФрд░ рдХреЛрдб рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ (рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рд▓реЗрдХрд┐рди рдореИрдВ рдЬреЛ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕рдХрд╛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдирд┐рдореНрди рд╢рд╛рдЦрд╛ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
ENOSYS рдХреА рдмрдЬрд╛рдп "рд╡рд┐рд╢реЗрд╖" рдкреНрд░рдХреГрддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд╣рдорд╛рд░реЗ рдХрд░реНрдиреЗрд▓/libc рдХреИрдЪ-рдСрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд░рдХреНрд╖рдг рд╣реИред рдореБрдЭреЗ рдЕрдиреНрдп рдореВрд▓реНрдпреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреА рд╣реЛрдЧреА, рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдХреЛрдИ рдордЬрдмреВрдд рднрд╛рд╡рдирд╛/рд╡рд┐рдЪрд╛рд░ рд╣реИ?
рдИрдЖрдИрдУ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдИрдЖрдИрдУ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рддреНрд░реБрдЯрд┐ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рдПрдЧреАред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдкреАрдЖрдИ рдХреЛ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдЧрд▓рдд рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдПрдкреАрдЖрдИ рдпрдерд╛рд╡рдд рд░рд╣ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрд░реЛрдХреНрдд рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╢рд╛рдпрдж @poettering рдпрд╛ @keszybz рднреА рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рддреНрд░реБрдЯрд┐ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рдПрдЧреАред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдкреАрдЖрдИ рдХреЛ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдЧрд▓рдд рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ ...
рдареАрдХ рд╣реИ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХреЗрдВ (рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рд╣рдореЗрдВ рд╕реНрдерд┐рд░ рдФрд░ рд╕рдорд░реНрдерд┐рдд рд░рд┐рдЯрд░реНрди рдХреЛрдб рдкрд░ рд╕рдордЭреМрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣реА рд╣рдо рдпрд╣рд╛рдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдо v2.5 рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд▓рдХреНрд╖реНрдп рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЖрдЗрдП v2.5 рдореЗрдВ рд╕реНрдерд┐рд░/рд╕рдорд░реНрдерд┐рдд рд░рд┐рдЯрд░реНрди рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдореЗрдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рд╣рдо рдЗрд╕реЗ v2.6 рдХреЗ рд▓рд┐рдП рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВред
рдИрдЖрдИрдУ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдореИрдВрдиреЗ рдЕрдиреНрдп рдХрд╛рд░реНрдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдФрд░ рдХреБрдЫ рдХрд░реНрдиреЗрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЦреАрдВрдЪ рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдм рдЬрдм рдореИрдВ libseccomp рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдИрдЖрдИрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЧрд▓рдд рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реЛрдЪрдиреЗ рджреЛред
рдХреИрдЪ-рдСрд▓ рдХрд░реНрдиреЗрд▓ рдПрд░рд░ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ ECANCELED рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ @drakenclimber , рдЖрдк рдЗрд╕ рдкрд░ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЪреБрдк рд░рд╣реЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдЕрдиреНрдп рдХрд╛рд░реНрдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдФрд░ рдХреБрдЫ рдХрд░реНрдиреЗрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЦреАрдВрдЪ рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдм рдЬрдм рдореИрдВ libseccomp рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдИрдЖрдИрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЧрд▓рдд рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реЛрдЪрдиреЗ рджреЛред
рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рд╡реНрдпрд╕реНрдд рд░рд╣реА рд╣реИрдВ: /ред
рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ @drakenclimber , рдЖрдк рдЗрд╕ рдкрд░ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЪреБрдк рд░рд╣реЗ рд╣реИрдВред
рдЬрд╝рд░реВрд░ред рдореИрдВ рдкреВрд░реЗ рдзрд╛рдЧреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдореИрдВ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛ред
рдХреИрдЪ-рдСрд▓ рдХрд░реНрдиреЗрд▓ рдПрд░рд░ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ ECANCELED рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ рдХрд┐ рдореИрдВ ECANCELED рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рдерд╛ред рдореИрдВрдиреЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рд╕реНрд░реЛрдд рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдПрдХ Google рдЦреЛрдЬ рднреА рдХреАред ECANCELED рдХрд╛ рдкрд┐рдЫрд▓реЗ libseccomp, prctl(), рдпрд╛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЕрдиреНрдп API рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЯрдХрд░рд╛рд╡ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдкрд░ рдЬреЛ рднреА рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ, рд╡рд╣ рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЯреАрдПрд▓; рдбреЙ - рдореИрдВ рдХрд░реНрдиреЗрд▓ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХреИрдЪ-рдСрд▓ рдХреЗ рд░реВрдк рдореЗрдВ ECANCELED рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рд╣реВрдВред
рдмрд╣реБрдд рдмрд╣реБрдд рд╢реБрдХреНрд░рд┐рдпрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЖрдзрд╛-рдмреЗрдХреНрдб рдкреИрдЪрд╕реЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╕рдорд╛рдкреНрдд рдХрд░ рджреВрдВрдЧрд╛ рдФрд░ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрдорд╛ рдХрд░реВрдВрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдмрд╣реБрдд рдмрд╣реБрдд рд╢реБрдХреНрд░рд┐рдпрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЖрдзрд╛-рдмреЗрдХреНрдб рдкреИрдЪрд╕реЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╕рдорд╛рдкреНрдд рдХрд░ рджреВрдВрдЧрд╛ рдФрд░ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрдорд╛ рдХрд░реВрдВрдЧрд╛ред