captest [ --ambient --drop-all | --drop-caps | --id ] [ --init-grp ] [ --lock ] [ --text ]
captest is a program that demonstrates and prints out the current process capabilities. Each option prints the same report. It will output current capabilities. then it will try to access /etc/shadow directly to show if that can be done. Then it creates a child process that attempts to read /etc/shadow and outputs the results of that. Then it outputs the capabilities that a child process would have.
You can also apply file system capabilities to this program to study how they work. For example, filecap /usr/bin/captest chown. Then run captest as a normal user. Another interesting test is to make captest suid root so that you can see what the interaction is between root's credentials and capabilities. For example, chmod 4755 /usr/bin/captest. When run as a normal user, the program will see if privilege escalation is possible. But do not leave this app setuid root after you are don testing so that an attacker cannot take advantage of it.
This attempts to add CAP_CHOWN ambient capability.
This drops all capabilities including ambient and clears the bounding set.
This drops just traditional capabilities.
This changes to uid and gid 99, drops supplemental groups, and clears the bounding set.
This changes to uid and gid 99 and then adds any supplemental groups that comes with that account. You would have add them prior to testing because by default there are no supplemental groups on account 99.
This option outputs the effective capabilities in text rather than numerically.
This prevents the ability for child processes to regain privileges if the uid is 0.