freebsd-dev/sys/kern
Robert Watson 387d2c036b o Centralize inter-process access control, introducing:
int p_can(p1, p2, operation, privused)

  which allows specification of subject process, object process,
  inter-process operation, and an optional call-by-reference privused
  flag, allowing the caller to determine if privilege was required
  for the call to succeed.  This allows jail, kern.ps_showallprocs and
  regular credential-based interaction checks to occur in one block of
  code.  Possible operations are P_CAN_SEE, P_CAN_SCHED, P_CAN_KILL,
  and P_CAN_DEBUG.  p_can currently breaks out as a wrapper to a
  series of static function checks in kern_prot, which should not
  be invoked directly.

o Commented out capabilities entries are included for some checks.

o Update most inter-process authorization to make use of p_can() instead
  of manual checks, PRISON_CHECK(), P_TRESPASS(), and
  kern.ps_showallprocs.

o Modify suser{,_xxx} to use const arguments, as it no longer modifies
  process flags due to the disabling of ASU.

o Modify some checks/errors in procfs so that ENOENT is returned instead
  of ESRCH, further improving concealment of processes that should not
  be visible to other processes.  Also introduce new access checks to
  improve hiding of processes for procfs_lookup(), procfs_getattr(),
  procfs_readdir().  Correct a bug reported by bp concerning not
  handling the CREATE case in procfs_lookup().  Remove volatile flag in
  procfs that caused apparently spurious qualifier warnigns (approved by
  bde).

o Add comment noting that ktrace() has not been updated, as its access
  control checks are different from ptrace(), whereas they should
  probably be the same.  Further discussion should happen on this topic.

Reviewed by:	bde, green, phk, freebsd-security, others
Approved by:	bde
Obtained from:	TrustedBSD Project
2000-08-30 04:49:09 +00:00
..
bus_if.m * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
device_if.m * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
genassym.sh Use "nm | awk ..." instead of genassym(1) to generate symbol value headers. 2000-06-02 09:27:48 +00:00
imgact_aout.c Remove ~25 unneeded #include <sys/conf.h> 2000-04-19 14:58:28 +00:00
imgact_elf.c Using an atomic operation here won't help if nobody else uses them (for 2000-07-23 22:19:49 +00:00
imgact_gzip.c useracc() the prequel: 1999-10-29 18:09:36 +00:00
imgact_shell.c Fix #! script exec under linux emulation. If a script is exec'd from a 2000-04-26 20:58:40 +00:00
inflate.c Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
init_main.c Remove all traces of Julians DEVFS (incl from kern/subr_diskslice.c) 2000-08-20 21:34:39 +00:00
init_sysent.c Regen: fix prototypes for {o|}{g|s}etrlimit. 2000-08-28 07:56:38 +00:00
kern_acct.c Move the truncation code out of vn_open and into the open system call 2000-07-04 03:34:11 +00:00
kern_acl.c Remove unneeded #include <vm/vm_zone.h> 2000-04-30 18:52:11 +00:00
kern_cap.c o Add missing function return types from capability syscall call stubs, 2000-07-25 03:37:36 +00:00
kern_clock.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_conf.c Remove all traces of Julians DEVFS (incl from kern/subr_diskslice.c) 2000-08-20 21:34:39 +00:00
kern_descrip.c new sysctl 'kern.openfiles' (exports nfiles to userland) 2000-08-26 23:49:44 +00:00
kern_environment.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_event.c o Centralize inter-process access control, introducing: 2000-08-30 04:49:09 +00:00
kern_exec.c Support for unsigned integer and long sysctl variables. Update the 2000-07-05 07:46:41 +00:00
kern_exit.c Change the 'exit()' system call to 'sys_exit()'. This avoids overlapping 2000-07-29 00:16:28 +00:00
kern_fork.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_intr.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
kern_jail.c o Modify jail to limit creation of sockets to UNIX domain sockets, 2000-06-04 04:28:31 +00:00
kern_kthread.c Clean up some low level bootstrap code: 2000-08-11 09:05:12 +00:00
kern_ktrace.c o Centralize inter-process access control, introducing: 2000-08-30 04:49:09 +00:00
kern_linker.c Fix self referential dependencies. eg: uhub was packaged along with 2000-08-02 21:08:53 +00:00
kern_lock.c Eliminate the undocumented, experimental, non-delivering and highly 2000-03-16 08:51:55 +00:00
kern_lockf.c Commit the remaining part of PR14914: 1999-11-16 16:28:58 +00:00
kern_malloc.c Move #ifdef to the right place. 2000-06-29 09:26:26 +00:00
kern_mib.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_module.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
kern_ntptime.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_physio.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
kern_proc.c o Centralize inter-process access control, introducing: 2000-08-30 04:49:09 +00:00
kern_prot.c o Centralize inter-process access control, introducing: 2000-08-30 04:49:09 +00:00
kern_resource.c o Centralize inter-process access control, introducing: 2000-08-30 04:49:09 +00:00
kern_shutdown.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_sig.c o Centralize inter-process access control, introducing: 2000-08-30 04:49:09 +00:00
kern_subr.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
kern_switch.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
kern_synch.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_syscalls.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
kern_sysctl.c Fix some style nits. 2000-07-28 22:40:04 +00:00
kern_tc.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_threads.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
kern_time.c Remove unneeded <sys/buf.h> includes. 2000-04-18 15:15:39 +00:00
kern_timeout.c Restructure TCP timeout handling: 1999-08-30 21:17:07 +00:00
kern_xxx.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ksched.c Remove unneeded #include <sys/kernel.h> 2000-04-29 15:36:14 +00:00
link_aout.c Move the truncation code out of vn_open and into the open system call 2000-07-04 03:34:11 +00:00
link_elf_obj.c Move the truncation code out of vn_open and into the open system call 2000-07-04 03:34:11 +00:00
link_elf.c Move the truncation code out of vn_open and into the open system call 2000-07-04 03:34:11 +00:00
linker_if.m First round implementation of a fine grain enhanced module to module 2000-04-29 13:19:31 +00:00
Make.tags.inc Update tags directive to reflect the new location of soft updates 2000-07-04 00:18:43 +00:00
makedevops.pl Fix some bugs in user-end output and add a reference to the original 1999-11-22 14:40:04 +00:00
Makefile ${MACHINE} -> ${MACHINE_ARCH} 1999-11-14 13:54:44 +00:00
makeobjops.pl * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
makesyscalls.sh Change the 'exit()' system call to 'sys_exit()'. This avoids overlapping 2000-07-29 00:16:28 +00:00
md5c.c Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
p1003_1b.c Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
posix4_mib.c Add $FreeBSD$. 2000-04-22 15:13:06 +00:00
subr_acl_posix1e.c Remove unneeded #include <vm/vm_zone.h> 2000-04-30 18:52:11 +00:00
subr_autoconf.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
subr_blist.c Eliminate the undocumented, experimental, non-delivering and highly 2000-03-16 08:51:55 +00:00
subr_bus.c * Remove a bogus call to kobj_init() from make_device(). 2000-08-28 21:08:12 +00:00
subr_clist.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
subr_devstat.c Support for unsigned integer and long sysctl variables. Update the 2000-07-05 07:46:41 +00:00
subr_disk.c Remove all traces of Julians DEVFS (incl from kern/subr_diskslice.c) 2000-08-20 21:34:39 +00:00
subr_disklabel.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
subr_diskmbr.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
subr_diskslice.c Remove all traces of Julians DEVFS (incl from kern/subr_diskslice.c) 2000-08-20 21:34:39 +00:00
subr_eventhandler.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
subr_kobj.c Add kobj_class_compile_static() to allow classes to be initialised 2000-08-28 21:11:12 +00:00
subr_log.c Remove five now unused fields from struct cdevsw. They should never 1999-09-25 18:24:47 +00:00
subr_module.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
subr_param.c Move the MSG* and SEM* options to opt_sysvipc.h 2000-05-01 13:33:56 +00:00
subr_prf.c Do not fault if curproc is null. 2000-04-29 11:32:15 +00:00
subr_prof.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
subr_rman.c Replace all the ifdef debugging spaghetti with a single ifdef and 2000-05-03 00:20:36 +00:00
subr_scanf.c Change the prototype of the strto* routines to make the second 1999-11-24 01:03:08 +00:00
subr_smp.c Clean up some low level bootstrap code: 2000-08-11 09:05:12 +00:00
subr_taskqueue.c Modify to use fixed STAILQ_LAST(). 2000-08-03 16:37:46 +00:00
subr_trap.c Change the behavior of isa_nmi to log an error message instead of 2000-08-06 14:17:21 +00:00
subr_xxx.c Remove five now unused fields from struct cdevsw. They should never 1999-09-25 18:24:47 +00:00
sys_generic.c Fix a warning that has been annoying me for some time: 2000-07-28 22:17:42 +00:00
sys_pipe.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
sys_process.c o Centralize inter-process access control, introducing: 2000-08-30 04:49:09 +00:00
sys_socket.c Instead of just blindly setting -rw-rw-rw-: 2000-07-02 23:56:45 +00:00
syscalls.c Regen: fix prototypes for {o|}{g|s}etrlimit. 2000-08-28 07:56:38 +00:00
syscalls.master Fix prototypes for {o|}{g|s}etrlimit. A recent change in the 2000-08-28 07:50:44 +00:00
sysv_ipc.c Remove the undocumented, flawed, broken-as-designed semconfig() syscall. 2000-05-01 11:13:41 +00:00
sysv_msg.c Move the MSG* and SEM* options to opt_sysvipc.h 2000-05-01 13:33:56 +00:00
sysv_sem.c Move the MSG* and SEM* options to opt_sysvipc.h 2000-05-01 13:33:56 +00:00
sysv_shm.c This is a cleanup patch to Peter's new OBJT_PHYS VM object type 2000-05-29 22:40:54 +00:00
tty_compat.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
tty_conf.c Don't refer to TABLDISC in the comments here. 2000-01-30 10:14:13 +00:00
tty_cons.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
tty_pty.c Remove all traces of Julians DEVFS (incl from kern/subr_diskslice.c) 2000-08-20 21:34:39 +00:00
tty_snoop.c Unstaticize this driver. You can have as many snoop devices as you can 2000-04-02 00:35:37 +00:00
tty_subr.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
tty_tty.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
tty.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
uipc_accf.c disallow unload until we do proper refcounting 2000-07-20 12:12:41 +00:00
uipc_domain.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
uipc_mbuf2.c Replace the mbuf external reference counting code with something 2000-08-19 08:32:59 +00:00
uipc_mbuf.c m_mballoc_wait() had a spl/tsleep race. mbufs can be freed in interrupt 2000-08-25 22:28:08 +00:00
uipc_proto.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
uipc_sockbuf.c Remove an extraneous setting of sb_hiwat. 2000-08-30 00:09:57 +00:00
uipc_socket2.c Remove an extraneous setting of sb_hiwat. 2000-08-30 00:09:57 +00:00
uipc_socket.c Remove any possibility of hiwat-related race conditions by changing 2000-08-29 11:28:06 +00:00
uipc_syscalls.c Replace the mbuf external reference counting code with something 2000-08-19 08:32:59 +00:00
uipc_usrreq.c Remove any possibility of hiwat-related race conditions by changing 2000-08-29 11:28:06 +00:00
vfs_acl.c Remove unneeded #include <vm/vm_zone.h> 2000-04-30 18:52:11 +00:00
vfs_aio.c Fix the #ifdef VFS_AIO to not compile a whole bunch of unused stuff in the 2000-07-28 23:10:10 +00:00
vfs_bio.c Now that buffer locks can be recursive, we need to delete the panics 2000-07-25 18:28:46 +00:00
vfs_cache.c Support for unsigned integer and long sysctl variables. Update the 2000-07-05 07:46:41 +00:00
vfs_cluster.c Virtualizes & untangles the bioops operations vector. 2000-06-16 08:48:51 +00:00
vfs_conf.c Fix panic when removing open device (found by bp@) 2000-08-24 15:36:55 +00:00
vfs_default.c Introduce vop_stdinactive() and make it the default if no vop_inactive 2000-08-18 10:01:02 +00:00
vfs_export.c o Restructure vaccess() so as to check for DAC permission to modify the 2000-08-29 14:45:49 +00:00
vfs_extattr.c Don't set flags on the mount structure before all permission checks have 2000-08-09 01:57:11 +00:00
vfs_init.c The sysctl mod_xx hack is no longer required now that we have totally 1999-12-12 16:30:34 +00:00
vfs_lookup.c Introduce NDFREE (and remove VOP_ABORTOP) 1999-12-15 23:02:35 +00:00
vfs_mount.c Fix panic when removing open device (found by bp@) 2000-08-24 15:36:55 +00:00
vfs_subr.c o Restructure vaccess() so as to check for DAC permission to modify the 2000-08-29 14:45:49 +00:00
vfs_syscalls.c Don't set flags on the mount structure before all permission checks have 2000-08-09 01:57:11 +00:00
vfs_vnops.c o Introduce vn_extattr_{get,set}, wrapper routines for VOP_GETEXTATTR 2000-08-08 17:15:32 +00:00
vnode_if.pl remove crufty exec stuff, perl is in the base system 2000-06-27 19:09:55 +00:00
vnode_if.src o Correct spelling of ufs_exttatr_find_attr -> ufs_extattr_find_attr 2000-08-26 22:00:58 +00:00