What does "F(effective) ? P'(permitted) : 0" mean?
A expressão predicate ? a : b
, vem de C
como idiomas. Isso significa
a if predicate else b
ou se o predicado for true, ele será avaliado como a
else, será avaliado como b
.
Portanto, P'(effective) = F(effective) ? P'(permitted) : 0
significa que, se o bit efetivo dos arquivos estiver definido, copie o conjunto permitido para o conjunto efetivo de processos, caso contrário, deixe o conjunto efetivo vazio.
Isso é necessário para aplicativos herdados que não entendem os recursos (provavelmente a maioria atualmente). Um aplicativo com reconhecimento de capacidade, iniciará sem recursos efetivos e copiará os recursos para o conjunto efetivo quando necessário, e limpará o conjunto efetivo quando concluído (reduzindo o dano que os erros podem causar).
The permitted set is a limiting superset for the capabilities that can be added to the effective and inheritable sets.
Você só pode adicionar recursos ao conjunto efetivo ou herdado, se estiverem no permitido. No entanto, para adicionar um recurso ao conjunto herdado, ele também deve estar no conjunto de limites. - este parágrafo está sendo discutido nos comentários (pode mudar).
Are P(xxx) and F(xxx) sets or bit sets? If latter, are the operations on them bit operations? If former, are the operations on them set operations (union and intersection)?
A maioria são conjuntos de bits, mas F(effective)
é um único bit.
Você também perguntou:
How does the rules guarantee that P'(permitted) is a superset of P'(inheritable)? In other words, can P'(permitted) become not a superset of P(inheritable)?
Não, sua declaração é uma leitura errada.
[Permitted] is also a limiting superset for the capabilities that may be added to the inheritable set.
Assim, um processo pode herdar recursos para seu conjunto herdado, que não estão no conjunto permitido. Mas não pode adicionar um recurso ao conjunto herdado, a menos que já esteja no conjunto permitido.