123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444 |
- /* This sample file is an example for mkseccomp.pl to produce a seccomp file
- * which restricts syscalls that are only useful for an admin but allows the
- * vast majority of normal userspace programs to run normally.
- *
- * The format of this file is one line per syscall. This is then processed
- * and passed to 'cpp' to convert the names to numbers using whatever is
- * correct for your platform. As such C-style comments are permitted. Note
- * this also means that C preprocessor macros are also allowed. So it is
- * possible to create groups surrounded by #ifdef/#endif and control their
- * inclusion via #define (not #include).
- *
- * Syscalls that don't exist on your architecture are silently filtered out.
- * Syscalls marked with (*) are required for a container to spawn a bash
- * shell successfully (not necessarily full featured). Listing the same
- * syscall multiple times is no problem.
- *
- * If you want to make a list specifically for one application the easiest
- * way is to run the application under strace, like so:
- *
- * $ strace -f -q -c -o strace.out application args...
- *
- * Once you have a reasonable sample of the execution of the program, exit
- * it. The file strace.out will have a summary of the syscalls used. Copy
- * that list into this file, comment out everything else except the starred
- * syscalls (which you need for the container to start) and you're done.
- *
- * To get the list of syscalls from the strace output this works well for
- * me
- *
- * $ cut -c52 < strace.out
- *
- * This sample list was compiled as a combination of all the syscalls
- * available on i386 and amd64 on Ubuntu Precise, as such it may not contain
- * everything and not everything may be relevent for your system. This
- * shouldn't be a problem.
- */
- // Filesystem/File descriptor related
- access // (*)
- chdir // (*)
- chmod
- chown
- chown32
- close // (*)
- creat
- dup // (*)
- dup2 // (*)
- dup3
- epoll_create
- epoll_create1
- epoll_ctl
- epoll_ctl_old
- epoll_pwait
- epoll_wait
- epoll_wait_old
- eventfd
- eventfd2
- faccessat // (*)
- fadvise64
- fadvise64_64
- fallocate
- fanotify_init
- fanotify_mark
- ioctl // (*)
- fchdir
- fchmod
- fchmodat
- fchown
- fchown32
- fchownat
- fcntl // (*)
- fcntl64
- fdatasync
- fgetxattr
- flistxattr
- flock
- fremovexattr
- fsetxattr
- fstat // (*)
- fstat64
- fstatat64
- fstatfs
- fstatfs64
- fsync
- ftruncate
- ftruncate64
- getcwd // (*)
- getdents // (*)
- getdents64
- getxattr
- inotify_add_watch
- inotify_init
- inotify_init1
- inotify_rm_watch
- io_cancel
- io_destroy
- io_getevents
- io_setup
- io_submit
- lchown
- lchown32
- lgetxattr
- link
- linkat
- listxattr
- llistxattr
- llseek
- _llseek
- lremovexattr
- lseek // (*)
- lsetxattr
- lstat
- lstat64
- mkdir
- mkdirat
- mknod
- mknodat
- newfstatat
- _newselect
- oldfstat
- oldlstat
- oldolduname
- oldstat
- olduname
- oldwait4
- open // (*)
- openat // (*)
- pipe // (*)
- pipe2
- poll
- ppoll
- pread64
- preadv
- futimesat
- pselect6
- pwrite64
- pwritev
- read // (*)
- readahead
- readdir
- readlink
- readlinkat
- readv
- removexattr
- rename
- renameat
- rmdir
- select
- sendfile
- sendfile64
- setxattr
- splice
- stat // (*)
- stat64
- statfs // (*)
- statfs64
- symlink
- symlinkat
- sync
- sync_file_range
- sync_file_range2
- syncfs
- tee
- truncate
- truncate64
- umask
- unlink
- unlinkat
- ustat
- utime
- utimensat
- utimes
- write // (*)
- writev
- // Network related
- accept
- accept4
- bind // (*)
- connect // (*)
- getpeername
- getsockname // (*)
- getsockopt
- listen
- recv
- recvfrom // (*)
- recvmmsg
- recvmsg
- send
- sendmmsg
- sendmsg
- sendto // (*)
- setsockopt
- shutdown
- socket // (*)
- socketcall
- socketpair
- sethostname // (*)
- // Signal related
- pause
- rt_sigaction // (*)
- rt_sigpending
- rt_sigprocmask // (*)
- rt_sigqueueinfo
- rt_sigreturn // (*)
- rt_sigsuspend
- rt_sigtimedwait
- rt_tgsigqueueinfo
- sigaction
- sigaltstack // (*)
- signal
- signalfd
- signalfd4
- sigpending
- sigprocmask
- sigreturn
- sigsuspend
- // Other needed POSIX
- alarm
- brk // (*)
- clock_adjtime
- clock_getres
- clock_gettime
- clock_nanosleep
- //clock_settime
- gettimeofday
- nanosleep
- nice
- sysinfo
- syslog
- time
- timer_create
- timer_delete
- timerfd_create
- timerfd_gettime
- timerfd_settime
- timer_getoverrun
- timer_gettime
- timer_settime
- times
- uname // (*)
- // Memory control
- madvise
- mbind
- mincore
- mlock
- mlockall
- mmap // (*)
- mmap2
- mprotect // (*)
- mremap
- msync
- munlock
- munlockall
- munmap // (*)
- remap_file_pages
- set_mempolicy
- vmsplice
- // Process control
- capget
- capset // (*)
- clone // (*)
- execve // (*)
- exit // (*)
- exit_group // (*)
- fork
- getcpu
- getpgid
- getpgrp // (*)
- getpid // (*)
- getppid // (*)
- getpriority
- getresgid
- getresgid32
- getresuid
- getresuid32
- getrlimit // (*)
- getrusage
- getsid
- getuid // (*)
- getuid32
- getegid // (*)
- getegid32
- geteuid // (*)
- geteuid32
- getgid // (*)
- getgid32
- getgroups
- getgroups32
- getitimer
- get_mempolicy
- kill
- //personality
- prctl
- prlimit64
- sched_getaffinity
- sched_getparam
- sched_get_priority_max
- sched_get_priority_min
- sched_getscheduler
- sched_rr_get_interval
- //sched_setaffinity
- //sched_setparam
- //sched_setscheduler
- sched_yield
- setfsgid
- setfsgid32
- setfsuid
- setfsuid32
- setgid
- setgid32
- setgroups
- setgroups32
- setitimer
- setpgid // (*)
- setpriority
- setregid
- setregid32
- setresgid
- setresgid32
- setresuid
- setresuid32
- setreuid
- setreuid32
- setrlimit
- setsid
- setuid
- setuid32
- ugetrlimit
- vfork
- wait4 // (*)
- waitid
- waitpid
- // IPC
- ipc
- mq_getsetattr
- mq_notify
- mq_open
- mq_timedreceive
- mq_timedsend
- mq_unlink
- msgctl
- msgget
- msgrcv
- msgsnd
- semctl
- semget
- semop
- semtimedop
- shmat
- shmctl
- shmdt
- shmget
- // Linux specific, mostly needed for thread-related stuff
- arch_prctl // (*)
- get_robust_list
- get_thread_area
- gettid
- futex // (*)
- restart_syscall // (*)
- set_robust_list // (*)
- set_thread_area
- set_tid_address // (*)
- tgkill
- tkill
- // Admin syscalls, these are blocked
- //acct
- //adjtimex
- //bdflush
- //chroot
- //create_module
- //delete_module
- //get_kernel_syms // Obsolete
- //idle // Obsolete
- //init_module
- //ioperm
- //iopl
- //ioprio_get
- //ioprio_set
- //kexec_load
- //lookup_dcookie // oprofile only?
- //migrate_pages // NUMA
- //modify_ldt
- //mount
- //move_pages // NUMA
- //name_to_handle_at // NFS server
- //nfsservctl // NFS server
- //open_by_handle_at // NFS server
- //perf_event_open
- //pivot_root
- //process_vm_readv // For debugger
- //process_vm_writev // For debugger
- //ptrace // For debugger
- //query_module
- //quotactl
- //reboot
- //setdomainname
- //setns
- //settimeofday
- //sgetmask // Obsolete
- //ssetmask // Obsolete
- //stime
- //swapoff
- //swapon
- //_sysctl
- //sysfs
- //sys_setaltroot
- //umount
- //umount2
- //unshare
- //uselib
- //vhangup
- //vm86
- //vm86old
- // Kernel key management
- //add_key
- //keyctl
- //request_key
- // Unimplemented
- //afs_syscall
- //break
- //ftime
- //getpmsg
- //gtty
- //lock
- //madvise1
- //mpx
- //prof
- //profil
- //putpmsg
- //security
- //stty
- //tuxcall
- //ulimit
- //vserver
|