FreeBSD_11-系统管理——{Part_2-核心}
一、Managing Services in FreeBSD
- Service restart will only work if it is set to YES in /etc/rc.conf. To start, stop or restart a service regardless of the settings in /etc/rc.conf, these commands should be prefixed with “one”
- service sshd onerestart 
- 配置文件优先級:/etc/rc.conf.local > /etc/rc.conf > /etc/default/rc.conf
- 通用脚本(sh)函数定义文件:/etc/rc.subr、/etc/networksubr
- 系统脚本目录:/etc/rc.d/;用户脚本目录:/usr/local/etc/rc.d/
- /* 如下为启动脚本的基本格式 */ 
 #!/bin/sh # PROVIDE: xxx #将要启动的程序名称
 # REQUIRE: xxx #在指定进程之后启动——依賴
 # BEFORE: xxx #在指定进程之前启动——被依賴
 # KEYWORD: shutdown #固定格式,表示在关机之前执行正常程序终止流程 . /etc/rc.subr #固定格式,载入系统預定义的规则(函数等) name=xxx #指定該脚本的名称
 rcvar=${name}_enable #指定用于 /etc 下 rc.conf 或 rc.conf.local 的开机启动标志(語法) command="/usr/sbin/xxxx" #指定可执行文件的路径,xxxx 的名称与 PROVIDE 保持一致
 pidfile="/var/run/xxxx.pid" #指定 pid 文件,提高操作效率 # 以下两行为固定格式
 load_rc_config $name #使 rc.subr 载入 rc.conf 中的参数
 run_rc_command "$1" #使 rc.subr 载入当前脚本中定义的参数
- (/etc/rc.conf)ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx/xx":alias# 的編号必須从 0 开始,且必須连续;针对每个不同的网络(段),只能将首个 IP 的 netmask 配置成真实的掩码,其余均須设置为 0xffffffff(255.255.255.255 或 .../32)
- ifconfig_fxp0="inet 10.1.1.1/24" #物理 NIC ,首 IP 
 ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 0xffffffff"
 ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
 ifconfig_fxp0_alias2="inet 10.1.1.4/32"
 ifconfig_fxp0_alias3="inet 10.1.1.5/32"
 ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240" #新网段,首 IP
 ifconfig_fxp0_alias5="inet 202.0.75.18/32"
 ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 0xffffffff"
 ifconfig_fxp0_alias7="inet 202.0.75.20/32"
- 简写模式: 
 ifconfig_alc0_aliases="inet 10.1.1.1-5/24 inet 202.0.75.17-20/28"
- syslog.conf 語法
- facility:auth, authpriv, console, cron, daemon,ftp, kern, lpr, mail, mark, news, ntp, security, syslog, user, uucp, and local(0,1,..7)
- level:emerg, crit, alert, err,warning, notice, info and debug
 
- *.err;kern.*;auth.notice;authpriv.none;mail.crit /dev/console 
 注:all facility 的大于或等于(=>) err 級别(level)的日志,kern facility 的所有 level 日志,及 mail facility 的 =>crit level 的日志,显示到控制台;authpriv facility 的所有 level 日志均不显示在控制台
 *.info;mail.none;authpriv.none /var/log/messages
 注:除了 mail 与 authpriv 之外的所有 facility 的 info level 以上的日志,记录到 messages 文件
 daemon.=debug /var/log/daemon.debug
 注:记录 daemon facility 的 debug level 日志(“=” 指仅记录此一个級别)
 authpriv.* /var/log/secure
 注:authpriv facility 的所有 level 日志记录到单独的文件以确保安全
 mail.* -/var/log/maillog
 注:记录 mail facility 的所有 level 日志,但 I/O 不以 fsync 方式同步(“-” 指以普通緩存形式执行非同步写入,以减少到系统性能的影响)
 *.emerg *
 *.emerg @arpa.berkeley.edu
 注:以上两行,将所有 facility 的 emerg level 日志记录到远程主机,即使已记录到其它位置(“*” 指重置,对应的日志可重复记录)
 *.alert root,eric
 注:仅 root 及 eric 两个用户可以收到 alert 信息
 auth.* |exec /usr/local/sbin/authfilter
 注:将 auth facility 的所有 level 日志首先通过管道传递給 authfilter 处理
 console.* /var/log/console.log
 注:将所有原先写往控制台的信息,记录到文件
 !ipfw
 *.* -/var/log/ipfw
 !*
 注:以上三行,仅记录 ipfw 程序产生的日志,且非同步写入(使用緩存),“!” 指明接下来的内容仅对 ipfw 有效,最后的 "!*" 将重置记录对象
- Log Management and Rotation:newsyslog.conf(cron 定时执行)
- # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] 
 1 logfilename:生成的分段日志文件存放路径,如:/root/logdir
 [owner:group]:可选项,指定生成的文件的属主属組,如:root:wheel
 mode:指定生成的文件的訪问权限,如:
 count:指定能生成的最大文件数量
 size:数字,以 KB 为单位,指定日志大小維度的触发条件
 when:指定时间維度的触发条件,如:$D23(每天 :)、$W5D20(每周五 : ,W0 指星期日)、$M10D0(每月的第 天 :)
 flags:指定压缩格式等,如:X 指用 xz 压缩以节約空间;B 指源文件为二进制格式,直接压縮不添加备注信息
- Configuring Remote Logging
- 服务器端
- /etc/syslog.conf 
 +logclient.example.org # “+” 指接受远程主机存储日志
 *.* /var/log/logclient.log #指定远程客户端的日志存储位置
 - /etc/rc.conf 
 syslogd_enable="YES"
 syslogd_flags="-d -a logclient.example.org -v -v"
 # -d ,Put syslogd into debugging mode(仅用于故障調试)
 # -a 指添加,多个客户端須用多个 -a 选项,格式可以为:IP/masklen:port 或 IP/masklen:syslogd 或 hostname:syslogd 等,syslogd可以替换为其它可用的日志服务器名称
 # -v -v 指存储详细信息,日志按 facility 分类显示
- 客户端
- /etc/syslog.conf 
 *.* @logserv.example.org # “@” 指将日志存储到其后的 hostname 主机之上
 - /etc/rc.conf 
 syslogd_enable="YES"
 syslogd_flags="-s -v -v" # -s 不为其它主机存储日志,若 -s -s (两个 -s),则同时不能将日志存储到其它主机
- 远程日志存储是以明文形式传輸,可以考虑应用 ssh 遂道
 
- 系统配置文件位置
- /etc Generic system-specific configuration information 
 /etc/defaults Default versions of system configuration files
 /etc/mail Extra sendmail configuration and other MTA configuration files
 /etc/ppp Configuration for both user- and kernel-ppp programs
 /etc/namedb Default location for named data. Normally named.conf and zone files are stored here
 /usr/local/etc Configuration files for installed applications. May contain per-application subdirectories
 /usr/local/etc/rc.d rc scripts for installed applications.
 /var/db Automatically generated system-specific database files, such as the package database and the locate database
- /etc/hosts 文件格式
- [Internet address] [official hostname] [alias1] [alias2] ... 
 如:
 10.0.0.4 myname.xxx.org myname cat monkey
- Tuning with sysctl :readonly 项只能在 /boot/loader.conf 中设置,其它可在 /etc/sysctl.conf 中或使用 sysctl 命令设置
- sysctl -a #显示所有可用项目
- sysctl kern.maxproc #显示指定项目的值
- sysctl -d kern.maxvnodes #显示指定项目的简介
- sysctl kern.maxfiles=10000 #临时设置指定项目的值
- /etc/sysctl.conf #配置文件
- kern.ipc.soacceptqueue 
 #默认值是 128,limits the size of the listen queue for accepting new TCP connections.For Web Server,increase this value to 1024 or higher
 net.inet.ip.portrange.first/net.inet.ip.portrange.last
 #服务器主动对外连接可用的端口范围:last - first
 sysctl kern.maxvnodes/sysctl vfs.numvnodes
 #maxvnodes 指系统最大可用 vnodes 数量,numvnodes 指当前已用数量;当后者的数量与前者接近时,有必要提升前者的值,以避免 I/O 瓶颈
 kern.ipc.somaxconn=32768 #并发连接数,默认 128
 security.bsd.see_other_uids=0 #禁止用户查看其他用户的进程
 kern.ipc.shm_use_phys=1 #共享内存只使用物理内存,不使用 swap
 kern.ipc.shmmax=67108864 #单一 shm segment 可占用的最大内存量(单位:bytes/B)
 kern.ipc.shmall=32768 #系统共享内存可分配的总頁数,頁大小可用 getconf PAGESIZE 命令获得,通常为 4096
 
- Disk Soft Updates
- 磁盘的元数据是否异步写入,可极大提升机械式硬盘的元数据操作效率,但在系统异常中止的情况下,会造成数据不一致
- 提供 UFS 文件系统的 snapshot 功能,可对单个目录做快照
- 操作方式:tunefs -n enable/disable /FILESYSTEM
- Linux 下的 ext 系列文件系统默认即是异步写入
 
- Swap
- Adding a new hard drive for swap gives better performance than using a partition on an existing drive.
- RAW disk ,即没有创建文件系统的裸盘,用作 swap 可提升性能
 
二、The FreeBSD Booting Process
- shutdown -p/-r now :关机/重启
- 如下所示,修改 /etc/ttys ,使单用户模式下登陆系统需要 root 密码
- # If console is marked "insecure", then init will ask for the root password when going to single-user mode 
 console none unknown off insecure
三、Security
- 系统資源限制
- 传统方式:/etc/login.conf(cap_mkdb /etc/login.conf :Whenever /etc/login.conf is edited, the /etc/login.conf.db must be updated by executing the command)
- rctl(>= FreeBSD 9.0):supports user limits, and set resource constraints on processes and jails
- rctl requires the kernel to be compiled with: 
 options RACCT
 options RCTL 启用 rctl 支持:
 在 /boot/loader.conf 中 添加 kern.racct.enable=1 #只读项,无法通过 sysctl 直接设置 /etc/rctl.conf 格式:
 subject:subject-id:resource:action=amount/per(user/process...)
 示例:jail:httpd:memoryuse:deny=2G/jail #Block jail from using more than 2G memory subject:process, user, loginclass, or jail
 subject-id:process ID, user name, numerical user ID, login class name, or jail name
 resouce:memoryuse, maxproc, datasize(单文件大小), pcpu(single CPU 占用率), readbps(bytes/sec), writebps(B/sec), readiops(operations/sec), writeiops(每秒钟的 I/O 写数量)
 action:
 <1> deny(deny the allocation,not supported for cputime, wallclock, readbps, writebps, readiops, and writeiops)
 <2> log(log a warning to the console)
 <3> throttle(slow down process execution; only supported for readbps, writebps, readiops, and writeiops)
 
- 阻止用户登陆
- pw lock USERNAME 或 chsh -s /usr/sbin/nologin USERNAME 
- Permitted Account Escalation:sudo
- # visudo 
 #賦予 webadmin 組的成员操作 apache24 的权限
 %webadmin ALL=(ALL) /usr/sbin/service apache24 *
 #启用日志功能,使用 sudoreplay 工具进行管理
 Defaults iolog_dir=/var/log/sudo-io/%{user}
- /etc/master.passwd:类似于 Linux 下的 shadow 文件
- HASH 算法标志:Blowfish(2a)、sha512(6)等
- Password Policy Enforcement:Pluggable Authentication Modules (PAM)——密码复杂度控制
- # /etc/pam.d/passwd 
 # 格式如下:
 # module-type control-flag pam_passwdqc [options]
 password requisite pam_passwdqc.so min(密码最小长度:N0...N5,分别指明不同复杂度性况下的长度要求)=disabled,,,, max(密码最大长度)= similar(是否允许与以前设置过的密码类似)=permit|deny enforce(策略类型:仅警告|普通用户|包括 root )=none|users|everyone
- /etc/login.conf 中的安全相关
- :passwd_format=blf:\ #设置密码加密算法为 Blowfish 
 :passwordtime=90d:\ #设置所有普通账户的密码有效期为 天
 #配置完成后,执行 cap_mkdb /etc/login.conf 使之生效
- rkhunter :排查系统安全漏洞的工具
- rkhunter -c 
- # /var/lib/rkhunter.log 
 ...
 [::] Checking if SSH root access is allowed [ Warning ]
 [::] Warning: The SSH configuration option 'PermitRootLogin' has not been set.
 The default value may be 'yes', to allow root access.
 [::] Checking if SSH protocol v1 is allowed [ Warning ]
 [::] Warning: The SSH configuration option 'Protocol' has not been set.
 The default value may be '2,1', to allow the use of protocol version .
 ...
- Binary Verification:mtree/map a directory hierarchy
- mtree -p /sbin -s -c -K cksum,sha256 > ~/.sbin_mtree #映射目录层次結构 
 #-c 创建;-p 指定目标目录;-s 加盐 salt;-K 指定校验算法
 #可与 freebsd-update IDS 結合使用进行輔助性入侵检测 mtree -p /sbin -s < ~/.sbin_mtree >> ~/.sbin_chk_result #检测内容被修改的文件
- 更改内核安全等級:-1/0/1/2/3
- # /etc/rc.conf 
 kern_securelevel_enable=“YES”
 # /etc/sysctl.conf
 kern.securelevel=N # -////
 # 級别 - 与 :Insecure Mode,适用于桌面环境,更高安全級将会給 Xorg 带来问题
 # 級别 :Secure Mode ,不能修改文件的 immutable 和 append-only 标志、不能 load 或 unload 内核模块、不能对 /dev/mem 及 /dev/kmem 执行写操作
 # 級别 :Highly Secure Mode ,在級别 之上,額外限制不能将磁盘持载或重新挂载成可写模式、多用户环境下不能使用 newfs 格式化磁盘
 # 級别 :Network Secure Mode ,在級别 之上,額外限制不能修改网络防火墙(ipfw)规则、不能修改 dummynet 与 pf 的配置文件
- blackhole :防止端口扫描,设置 net.inet.tcp.blackhole=2 及 net.inet.udp.blackhole=1
- # Control system behaviour when connection requests are received on SCTP, TCP, or UDP ports where there is no socket listening 
 # /etc/sysctl.conf
 net.inet.tcp.blackhole[={ | | }]
 # : the incoming SYN segment is merely dropped
 # : any segment arriving on a closed port is dropped without returning a RST net.inet.udp.blackhole[={ | }]
 # : turns off the sending of an ICMP port unreachable message in response to a UDP datagram
 # 注:Any remote host‘s "traceroute" via this node will failed
- 防止 ip redirect (icmp type 5)攻击:net.inet.icmp.drop_redirect=1 及 net.inet.ip.redirect=0,与 ping(icmp type 0) 无关
- 禁用源路由(用于防问不可路由地址,如:10.*.*.* 等内网网段的技术)功能,保护私网安全:net.inet.ip.sourceroute=0 / net.inet.ip.accept_sourceroute=0
- 拒绝外部主机的广播报文:net.inet.icmp.bmcastecho=0
- ssh 安全相关
- # /etc/ssh/sshd_config 
 AllowUsers Ani@11.11.11.11 John #限制可以登陆 ssh 服务器用户列表,仅允许 Ani 与 John 两个用户登陆,且 Ani 只能从 11.11.11.11 登陆
 Protocol #仅启用 ssh 协议版本 2
 PasswordAuthentication no #禁用密码方式,仅允许密鈅对登陆
 PermitRootLogin no #禁止直接使用 root 登陆
- Third Party Software Auditing(Monitoring Third Party Security Issues)
- pkg audit -F 
 #/etc/defaults/periodic.conf
 daily_status_security_enable="YES" #设置此项确保每天执行,审记結果将发至 root 的邮箱
- Process Accounting:参见手册頁 lastcomm(1)、 acct(5) 和 sa(8)
- /usr/bin/finger:将此程序的权限设定为 0500 ,不允许普通用户查看它人登陆信息
四、Storage——UFS 文件系统
- 添加硬盘
- gpart delete -i N ada1 #删除原有的分区,N 指分区編号,如 ada1p3 中 N=3
- gpart create -s GPT ada1 #创建 GPT 类型的 scheme
- gpart add -t freebsd-ufs -a 1M -s 100G ada1 #创建一个大小为 100GB 的 freebsd-ufs 类型的分区,因为是首个分区所以按 1M 对齐,若不指定 -s 选项,则使用全部可用空间
- gpart add -t freebsd-swap -a 4k -s 2G -i 8 ada1 #创建 swap 分区,以 4k 对齐,指定分区編号为 8 ,因此分区名称为 ada1p8
- gpart show ada1 #显示磁盘信息
- newfs -U ada1p1 #创建 UFS2 文件系统
- gpart recover ada1 #If the disk was formatted with the GPT partitioning scheme, it may show as “corrupted” , fix with gpart
 
- 調整容量
- gpart resize -i 2 -a 4k -s 20G ada0 #将 ada0 的每 2 个分区总容量扩展至 20G ,保証 4k 对齐;不能縮小分区
- growfs ada0p2 #使新扩展的容量生效
 
- 外部设备
- camcontrol devlist :查看 CDROM 或 USB 等设备信息
- usbconfig :查看详细 USB 设备信息
 
- 授权非 root 用户操作磁盘
- /etc/devfs.rules
- [localrules=] #給规则取一个唯一的数字編号,此处为 5 
 add path 'da[3-6]*' mode group usb #名称符合 da[3-6]* 表达式的设备可以被 usb 組的成员操作
 add path 'usb/*' mode group usb #授权 usb 組成员可以使用 usbconfig 工具查看设备信息
- /etc/rc.conf
- devfs_system_ruleset="localrules" #声明规则的标识 
- /etc/sysctl.conf
- vfs.usermount=1 #允许普通用户挂载设备 
 
- 文件备份
- tar -zcvf /tmp/mybackup.tgz . #将当前目录打包压缩备份
- ls -R | cpio -ovF /tmp/mybackup.cpio # cpio 可以同时打包多个文件和目录
- 挂载 ISO 文件
- mdconfig -f diskimage.iso -u N #将 iso 文件映射到 /dev/mdN 设备,若不指定 -u N ,则自动分配編号并返回結果 
 mount /dev/`mdconfig -f diskimage.iso` /mnt #仅用一条命令,将 iso 文件挂域到 /mnt 下
 umount /mnt #首先取消挂载
 mdconfig -d -u N #然后断开与 /dev/mdN 的 映射
 
- 磁盘配額 
- 内核支持:options QUOTA 及 sysctl kern.features.ufs_quota=1
- /etc/rc.conf:quota_enable="YES" 及 check_quotas="NO",后者用于縮断开机时间
- /etc/fstab:/dev/ada0p1 /home ufs rw,userquota,groupquota 1 2 #按需启用 userquota 及 groupquota 特性
- quota -v:查詢自己的配額使用信息
- edquota -u John:編辑用户 John 的磁盘配額
- edquota -p John 2-100:将 John 的配額规则复制到 uid 为 2-100 之间的所有用户,修改 John 的限額后,需要重新执行此命令
- repquota -v /dev/ada0p1:查看指定分区的详细磁盘 quota 信息
 
五、Updating and Upgrading FreeBSD
- 指定更新方式,通常保持默认
- #/etc/freebsd-update.conf 
 IgnorePaths /usr/sbin #指定不与系统一起更新的目录
 KeepModifiedMetadata yes #更新时保留旧文件的权限、归属及 flags 等元数据信息
 UpdateIfUnmodified /etc/ #指定目录中的被更改过的文件不会被更新
 WorkDir /var/db/freebsd-update #指定更新时的 patch 及 临时文件存放目录
 MergeChanges /etc/ #指定目录中的文件更新时,新旧文件的合并方式将提示用户选择,如:替换、保留或手动編辑等
- freebsd-update
- 版本内更新: 
 # 只有 GENERIC 内核可以直接打补丁,自定义内核需要重新編译并安装,用uname -r 查看内核核本号
 # 若 /etc/freebsd-update.conf 中的相关项保持默认,freebsd-update 会同时下载更新的源码
 freebsd-update fetch #检查并下载可用更新,包括软件更新及内核补丁
 freebsd-update install #安装更新,内核补丁需要重启机器,软件补丁需要 restart 程序
 freebsd-update cron #放在 crontab 中定期检查更新
 freebsd-update rollback #回滚到上一次未更新的状态,同样,回滚之后需要重启生效
 跨版本升級:
 第一步:freebsd-update -r 11.0-RELEASE-p1 upgrade #跨版本升級时通常切换至 GENERIC 内核
 第二步:freebsd-update install #基础文件更新
 第三步:[使用自定义内核升級时需要] nextboot -k GENERIC
 第四步:shutdown -r now
 第五步:freebsd-update install #系统库更新
 第六步:portmaster -af [-G] #大版本(major)通常伴随 ABI 的版本更新,因此需要重新編译安装所有软件包;-G 选项指明所有软件按默认配置編译安装,不提示用户选择
 第七步:freebsd-update install #应用程序更新
 第八步:[可选]重新編译自定义内核
- !注意!
- 首次編译内核后,系统会将預装的 GENERIC 内核目录保存为 /boot/kernel.old ,需要手动更名至 /boot/GENERIC ,防止下一次編译内核时被覆盖
- 若 GENERIC 内核已被意外覆盖,可通过以下两种方式解决:
- # mount /cdrom #指 FreeBSD 系统安装光盘 
 # cd /cdrom/usr/freebsd-dist
 # tar -C /boot/kernel/ -xvf kernel.txz kernel # !!! set "-C" before "-xvf"
 或
 # cd /usr/src #需要保証 GENERIC 内核配置文件没有被更改
 # make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/null
 
- 重新編译整个系统:Rebuild World
- 务必查看 /usr/src/UPDATING 文件了解注意事项
- 更新步骤-(如果編译失败,在 /usr/src 下连续执行两次 make cleandir 之后重新开始):
- #尽可能在单用户模式下编译 
 一、删除 /usr/obj/ 下所有旧文件
 chflags -R nosimmutable /usr/obj/
 rm -rf /usr/obj/*
 二、編译新的編译器及相关工具
 cd /usr/src
 make buildworld
 三、使用 /usr/obj/ 中新生成的編译器編译 kernel
 make buildkernel
 四、安装新内核(若内核安全等級在 1 以上,则需要进行单用户模式操作)
 make installkernel
 五、进入单用户模式,并重新挂载文件系统为可读写
 mount -u / && mount -a $$ swapon -a #UFS 文件系统,-u 选项表示将已挂载的分区标记为可更改状态,以便重新挂载
 zfs set readonly=off zroot && zfs mount -a #ZFS 文件系统
 六、如果 date 显示的时间和时区不正确,执行以下命令纠正
 adjkerntz -i
 七、更新配置文件
 mergemaster -p #remaking world 过程中,/etc 等目录默认不会被更新,备份 /etc 之后,使用此命令合并配置文件,-p 选项指仅处理与下一步中的 installworld 相关的文件
 八、安装 /usr/obj 中新編译出的软件包
 cd /usr/src && make installworld
 九、追加新的配置文件
 mergemaster -iF #-i 选项指若目标目录中不存在同名文件,则安装;-F 选项指若新旧文件之间的差异只有系统版本标识,则覆盖旧文件
 十、清除所有不需要的旧文件,之后 reboot
 make check-old && yes|make delete-old && reboot #检查核对无誤后,传递 yes 无需用户确认直接删除
 十一、重新編译所有软件包之后,删除旧的库文件
 portmaster -af && make delete-old-libs
- /etc/src.conf:全局控制除内核以外的系统软件包构建(/usr/src 下的源码編译) 
- #单次不使用全局设定,可指定 make SRCCONF=/dev/null 
 WITHOUT_BLUETOOTH=1 #不安装蓝牙相关包
 WITHOUT_GAMES=1
 WITHOUT_IPFILTER=1 #选择 IPFW ,故禁用 ipfilter
 WITHOUT_PF=1 #同上,禁用 PF
 WITHOUT_ISCSI=1 #IBM iscsi 支持模块
 WITHOUT_LIB32=1 #不安装 32 位 lib 库
 # WITHOUT_WIRELESS=1 #不安装无线网络相关软件包
 WITHOUT_TCP_WRAPPERS=1 #不使用 inetd 及 tcpwrapper
 WITHOUT_INETD=1 #同上
 WITHOUT_RCMDS=1 #不安装 rlogin 等过时远程软件包
 WITHOUT_TELNET=1 #同上
 WITHOUT_SETUID_LOGIN=1 #取消 login 程序的 setuid 权限位
 # WITHOUT_RADIUS_SUPPORT=1 #没有拔号网络可禁用
 # WITHOUT_PPP=1 #同上
 WITHOUT_LPR=1 #过时的打印相关软件包
 WITHOUT_HYPERV=1 #微软的 hyperv 支持
 WITHOUT_HTML=1 #html 帮助文档
 WITHOUT_FLOPPY=1 #软盘
 WITHOUT_EE=1 #ee 編辑器
 WITHOUT_ATM=1 #过时的路由协议
 WITHOUT_APM=1 #过时的电源管理工具 apm、apmd
 WITHOUT_AUTOFS=1 #用于自动挂载光盘及网络文件系统的工具包 autofs
 WITHOUT_BHYVE=1 #FreeBSD 平台的虚拟机組件,使用类似于 kvm 的技术特性充分利用硬件資源
 WITHOUT_CALENDAR=1 #用于用户提示目的的日历小工具
 WITHOUT_CCD=1 #一种将多个物理磁盘连接成一个逻辑磁盘的技术,类似于软 raid
 WITHOUT_CTM=1 #FreeBSD 平台的一种源代码管理工具,类似于 CVS git 等的应用領域
 WITHOUT_DICT=1 #不创建韦氏詞典相关的文件(Webster dictionary,一种英文詞典)
 WITHOUT_KVM_SUPPORT=1 #不安装 libkvm 库
 WITH_NAND=1 #使用 SSD 最好启用此项,最新的 NVM 新型 SSD 不在此列
 WITHOUT_PC_SYSINSTALL=1 #PC-BSD 发明的系统安装工具,主要用于桌面系统
 WITHOUT_SHAREDOCS=1 #不创建老旧的 4.4BSD 相关文档
 WITHOUT_TALK=1 #用户之间的互动小工具,类似于 Linux 下的 screen
 WITHOUT_TIMED=1 #用于多主机间的时间同步,提供 ntpd 的部分功能
 # WITHOUT_FTP=1 #不安装系统自带的 ftp 软件包
 # WITHOUT_UNBOUND=1 #不安装系统自带的精简版 unbound 域名緩存服务器(用于本地 DNS 緩存,若本机需要为其它主机提供 DNS 緩存服务,建议从 ports 中安装完整版 unbound)
 # WITHOUT_MAIL=1 #完全不安装与 mail 有关的所有組件,包括 sendmail、mailwrapper等
 # WITHOUT_SENDMAIL=1 #不安装 sendmail 及相关組件;如计划使用 postfix等
 # WITHOUT_TCSH=1 #不安装 tcsh/csh(需要进入单用户模式更改 root 的 SHELL 为 sh)
 # WITHOUT_VI=1 #不安装原始的 vi 編辑器
 # WITHOUT_SVNLITE=1 #不安装用于系统版本控制的 svnlite 及相关組件(Subversion)
 # WITHOUT_ZFS=1 #不安装 zfs 文件系统組件
 # WITHOUT_CDDL=1 #不安装以 CDDL 许可証发布的软件包,如:zfs 文件系统、ctfconvert 調式信息转换工具等
 # WITHOUT_JAIL=1 #不安装 jail 組件
 # WITHOUT_AUDIT=1 #不安装系统审计組組件
 # WITHOUT_KERBEROS=1 #若不使用 kerberos 身份认証代理服务
 # WITHOUT_RESCUE=1 #不创建求援工具包;与单用户模式无关,这是一些用静态库链接生成的系统程序,可独立运行,不依賴于其它組件,存放于 /rescue 目录下
 ####################以下为系统調试相关組件#################################
 # WITHOUT_LLDB=1 #LLDB 是一种較新的多語言調试器,功能比 GDB 丰冨
 # WITHOUT_KERNEL_SYMBOLS=1 #不创建用于内核調试的符号文件
 # WITHOUT_DEBUG_FILES=1 #不安装調试文件
 # WITHOUT_PROFILE=1 #不編译性能评估模块
 # WITHOUT_TESTS=1 #不安装系统测试組件,包括 dtrace 的相关模块;Test Suite 主要用于开发調式及对系统組件功能是否正常的定期测试,需要安装 devel/kyua
 # WITHOUT_DTRACE_TESTS=1 #不安装 dtrace 测试組件
 # WITHOUT_CTF=1 #如果不使用 Dtrace 可以不安装 ctf 組件
 # WITHOUT_ASSERT_DEBUG=1 #不編译程序中用于調试目的 assert micro (断言宏)
 
- /etc/make.conf
- #参数賦值不加引号,字符串以空格分割,布尔(t/f)及数字型参数值可不添加空格 
 # =,指定全部标志
 # +=,在已有默认标志之上,追加标志
 # ?= 若标志尚未设置,则设置 COPTFLAGS?= -O2 -pipe #内核优化参数(C opt flags)
 CPUTYPE= haswell #若为本机編译,可设置为 native
 CFLAGS?= -O2 -pipe -march=${CPUTYPE} #C 优化参数,影响全局 INSTALL?= -C #软件包安装参数,尽可能避免不必要的文件更新
 KERNCONF= MyKernel # 内核配置文件名称 MODULES_OVERRIDE= ipfw zfs opensolaris ext2fs #仅編译指定的模块,即白名单
 # WITHOUT_MODULES= linux :指定不編译的模块,即黑名单;通常不与 MODULES_OVERRIDE 共存
 # NO_MODULES=1 #編译内核时不同时編译模块
 MTREE_FOLLOWS_SYMLINKS= -L # “mtree” 将对符号链接文件本身的状态变化进行跟踪
 # FETCH_CMD= wget #指定下载工具,默认是系统自带的 fetch PORTSDIR= /usr/ports #指定 ports 目录树的位置
 WRKDIRPREFIX= ... #指定編译时的临时工作目录
 DISTDIR= /usr/ports/distfiles #源码存放目录
 LOCALBASE= /usr/local #已安装软件包的位置,用于查詢并解决依賴关系
 PREFIX= #软件包安装目录,通常与 LOCALBASE 相同
 PORT_DBDIR= /var/db/ports #指定用于存储软件包 OPTIONS(編译选项) 的目录 # XFCE
 VIDEO_DRIVER=intel # 全局启用的功能模块
 OPTIONS_SET+= CPU_OPTS THREADS MANPAGES GSSAPI_NONE LZ4
 # 全局屏蔽的功能模块
 OPTIONS_UNSET+= X11 FONTCONFIG NLS EXTRAS SUID LLDB ZSH BASH EXAMPLES COOKIES CUPS DOCS GNOME GTK3 KDE4 PULSEAUDIO JAVA BABEL
- freebsd-update IDS
- #IDS : Intrusion Detection System(入侵监测系统) 
 #用于比較当前系统的 ports (应用程序)、系统库、配置文件等与官方系统初始状态的差异,与 mtree 比較当前系统两具时间点的状态差异一样,只能作为一种輔助性安全措施 freebsd-update IDS >> outfile.ids #与官方系统初始文件的 HASH 值不同的文件将被列出
FreeBSD_11-系统管理——{Part_2-核心}的更多相关文章
- FreeBSD_11 - 系统管理——{ Part_5 - ZFS }
		参考資料 http://docs.oracle.com/cd/E37934_01/html/E36658/toc.html https://www.freebsd.org/doc/en_US.ISO8 ... 
- (转载)linux下各个文件夹的作用
		linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ... 
- Ubuntu各文件夹功能说明
		通常情况下,根文件系统所占空间一般应该比较小,因为其中的绝大部分文件都不需要经常改动,而且包括严格的文件和一个小的不经常改变的文件系统不容易损坏.除了可能的一个叫/vmlinuz标准的系统引导映像之外 ... 
- linux 下各文件夹的功能性介绍。(转载)
		原文来自:http://www.cnblogs.com/wen858636827/archive/2012/12/26/2834373.html /opt 放置用户自己下载的软件 英文全称是op ... 
- linux各文件夹的作用
		文章转载自:http://www.cnblogs.com/amboyna/archive/2008/02/16/1070474.html 精------------------------------ ... 
- Linux 各文件夹介绍
		http://www.cnblogs.com/amboyna/archive/2008/02/16/1070474.html linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命 ... 
- 《Linux内核设计与实现》课本第一章&第二章学习笔记
		<Linux内核设计与实现>课本学习笔记 By20135203齐岳 一.Linux内核简介 Unix内核的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆文件 ... 
- Ubuntu根目录下各文件夹的功能详细介绍
		Ubuntu的根目录下存在着很多的文件夹,但你知道他们都存放着哪些文件呢?这些是深入了解Ubuntu系统必不缺少的知识,本文就关于此做一下介绍吧. /bin/ 用以存储二进制可执行命令文件. / ... 
- CentOS系统下各文件夹的作用
		linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的 ... 
- linux中的文件结构
		linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的 ... 
随机推荐
- 解决Tomcat catalina.out 不断成长导致档案过大的问题
			Tomcat的网站上的说法http://wiki.apache.org/tomcat/FAQ/Logging#Q6: System.out 和 System.err 都被打印到 catalina.ou ... 
- Js_Ajax_用户名检测
			输入"root",OK:输入其它,Error ajax.jsp var xhr; function createXhr() { if (window.XMLHttpRequest) ... 
- lua 中的面向对象
			lua 是一种脚步语言,语言本身并不具备面向对象的特性. 但是我们依然可以利用语言的特性,模拟出面向对象的特性. 面向对象的特性通常会具备:封装,继承,多态的特性,如何在lua中实现这些特性,最主要的 ... 
- openStack镜像制作
			参考链接: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/OpenStack/page/Creating ... 
- Windows:文件服务器,访问进去不能查看到完整的文件
			文件服务器,访问进去不能查看到完整的文件:别人访问却可以查看到完整的所有文件 可能是登录的帐号串掉导致,删除文件服务器帐号,重新访问: cmd: net use /delete * 
- 学习java第7天
			关于继承还需要留意的是,子类中的所有构造方法都默认访问父类的无参构造,注意是无参,而且是必须的,如果父类没有无参子类就会报错.如果你不想给父类无参构造,那么在子类中加上super(),显式的调用有参构 ... 
- shell_基础知识
			参考: http://blog.csdn.net/kaizi318/article/details/9343551 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告 ... 
- MFC坐标空间与映射模式
			逻辑坐标:使用GDI绘图时使用的坐标系 设备坐标系:实际设备(显示器.打印机)的坐标系,即我们实际看到的坐标系. 坐标空间 在Windows NT/2000中Win32 API中支持以下四层坐标空间: ... 
- C# 远程网络唤醒介绍及代码
			一.定义 网络唤醒:唤醒休眠状态下的计算机,而不是已关机的计算机. 优势:可通过定时功能实现自动唤醒计算机,减少人力使用. 实现方法:通过被唤醒机的MAC地址进行广播发送请求,唤醒计算机. 二.硬件设 ... 
- 在SWING里嵌入SWT的组件
			http://zhanghan3366.blog.163.com/blog/static/6966305220110505351568/ ——————————————————————————————— ... 
