FreeBSD学习指南

  发布时间:2008-09-08 18:48:29   作者:佚名   我要评论
FreeBSD 的版本命名规则 A-主要版本编号 B-次要版本编号 C-修正版本编号 TAG-名称标签,如 RELEASE、STABLE、CURRENT install.iso 安装时用这一片即可!mini.iso 也是可以用来安装,但里面没有一些常用的 Package ,所以档案比较小。 硬盘分割表的概念 IDE 硬盘

一、packages 安装

       pkg_add -v filename.tgz 扩展名是 tgz

       所有安装过的软件都会出现在 /var/db/pkg 的目录中。

       pkg_delete filename 删除软件

       pkg_info filename.tgz 查看这个软件的信息。

       pkg_info 查看系统中所有已安装软件的信息。

       pkg_tree 可以让我了解每一套软件之间的关系,不过要先安装

       cd /usr/ports/sysutils/pkg_tree

       make install clean

       pkg_tree | more 来查看各软件之间的关系。

      用 packages 安装的软件,不能马上执行,要马上能执行要先执行 rehash 或注销后再重新登入即可执行。

二、ports

       把在 A 系统上面可以正常运作的程序,修正成 B 系统上也能正常执行的工作,称为 Port。

       抓 port.tar.gz 档案回来,放在 /usr 下解压缩

      要安装哪一种软件就切换到它分类的目录中,如要安装 proftpd ,目录就在 /usr/ports/ftp/profptd 中,执行 make install 即可,它除了安装 proftpd 外,还会把缺的档案也一起抓回来安装安装完后可执行 make clean 把安装编译过程中产生的一个档案清除。

寻找需要安装的 Port

在 /usr/ports 使用 make search key="ncftp" | less

安装软件,只要在该软件的目录中执行 make deinstall 即可。

一些不常用的 make 方式

make fetch 抓回所需的原始档

make fetch-list 显示安装所需的档案

make all install 抓回原始档、编译且安装

make reinstall 若先前发生意外中断,重新尝试安装

如果安装完新的软件之后,如果使用的 Shell 是 csh 或 tcsh ,我们可能必须执行 rehash 来重建 hash table ,才能执行安装好的软件。

FreeBSD 安装 Mysql、PHP、Apache

一、安装 Mysql 用 Source Code 安装

在 /etc/group 加入 mysql:*:100:

执行 vipw 加入一行

mysql:*:100:100::0:0:Mysql User:/usr/local/mysql:/sbin/nologin

tar -xvzf mysql-3.23.52.tar.gz

cd mysql-3.23.52

./configure --prefix=/usr/local/mysql --with-charset=big5 --with-low-memory --with-named-thread-libs=-lc_r

make;make install

script/mysql_install_db

chown -R mysql:msqyl /usr/local/mysql

cd /usr/local/mysql/share/mysql

./mysql.server.start

/usr/local/mysql/bin/mysqladmin -u root -password 'xxxx';

grant all privileges on dbname.* to username@localhost IDENTIFIED BY 'password';

grant all privileges on *.* to username@localhost IDENTIFIED BY 'password';

flush privileges;

在 /etc/rc.local 加入一行

/usr/local/mysql/share/mysql/mysql.server start

备分数据库

/usr/local/mysql/bin/mysqldump -u root -p dbname > dbname.sql        备份

/usr/local/mysql/bin/mysql -u root -p dbname < dbname.sql 还原 之前可能要先把数据库建好

更改使用者密码

/usr/local/mysql/bin/mysqladmin -u root -p password newpassword

二、安装 PHP、Apache

apache_1.3.27.tar.gz

mod_fastcgi_2.2.12.tar.gz

php-4.2.3.tar.gz

gd-1.84.tar.gz

zlib-1.1.4.tar.gz

t1lib-1.3.1.tgz

freetype2-2.0.6.tgz

jpeg-6b_1.tgz

png-1.2.1.tgz

先解压缩 apache 并做一次 Apache 的组态

tar -xvzf apache-1.3.27.tar.gz

./configure --prefix=/usr/local/apache

cd ..

安装 PHP 之前先安装 GD 及其所需档案

tar -xvzf zlib-1.1.4.tar.gz

cd zlib-1.1.4

make all install

cd ..

pkg_add -v jpeg-6b_1.tgz

pkg_add -v png-1.2.1.tgz

pkg_add -v t1lib-1,3,1,tgz

pkg_add -v freetype2-2.0.6.tgz

tar -xvzf gd-1.8.4.tar.gz

cd gd-1.8.4

make install

cd ..

安装 PHP

tar -xvzf php-4.2.3.tar.gz

cd php-4.2.3

./configure --with-mysql=/usr/local/mysql --with-apache=../apache-1.3.27 --enable-track-vars --with-gd=/usr/local --enable-gd-native-ttf --with-t1lib --with-jpeg-dir=/usr/local --with-png-dir --with-freetype-dir --with-zlib-dir

make;make install

cp php.ini-dist /usr/local/lib/php.ini

cd ..

安装 Apache

cd apache_1.3.27/src/modules

tar -xvzf ../../../mod_fastcgi-2.2.12.tar.gz

mv mod_fastcgi-2.2.12 fastcgi

cd ../../

./configure --prefix=/usr/local/apache --enable-shared=max --activate-module=src/modules/php4/libphp4.a --activate-module=src/modules/fastcgi/libfastcgi.a --enable-suexec --suexec-caller=nobody --suexec-docroot=/usr/local/apache/htdocs --suexec-userdir=www --suexec-logfile=/usr/local/apache/logs/suexec_log --suexec-uidmin=10 --suexec-gidmin=10

make;make install

加入对 PHP4 的支持

在 /usr/local/apache/conf/httpd.conf 加入二行

AddType application/x-httpd-php .php .phtml .php3

AddType application/x-httpd-php-source .phps

让 Apache 在开机时能够启动

在 /etc/rc.local 加入 /usr/local/apache/bin/apachectl start

在 /etc/newsyslog.conf 加入二行以压缩备份 Apache Log 档

/var/log/apache_access_log    644    7    *    $W0D1    Z

/var/log/apache_error_log    644    7    *    $W0D2    Z

安装 ProFtpd

Make sure you have the following lines in your PAM configuration file

so that ProFTPd's PAM module can authenticate users correctly.

ftpd auth    required    pam_unix.so         try_first_pass

ftpd account required    pam_unix.so         try_first_pass

ftpd session required    pam_permit.so

###

===>   Generating temporary packing list

===>   Compressing manual pages for proftpd-1.2.6

===>   Registering installation for proftpd-1.2.6

===>  SECURITY NOTE:

      This port has installed the following startup scripts which may cause

      network services to be started at boot time.

/usr/local/etc/rc.d/proftpd.sh.sample

安装 SNMP

If you want to invoke snmpd from startup, put these lines into

     /etc/rc.conf.

        net_snmpd_enable="YES"

        net_snmpd_flags=""

**** You can specify make variables as:

        NET_SNMP_SYS_CONTACT="kuriyama@FreeBSD.org"

        NET_SNMP_SYS_LOCATION="Tokyo, Japan"

        DEFAULT_SNMP_VERSION=3

        NET_SNMP_LOGFILE=/var/log/snmpd.log

        NET_SNMP_PERSISTENTDIR=/var/net-snmp

     to define default values (or overwriting defaults).  At least

     setting first two variables, you will not be prompted during

     configuration process.  Or you can set

        BATCH="yes"

     to make to avoid interactive configuration.===>   Compressing manual pages for net-snmp-5.0.6

===>   Running ldconfig

/sbin/ldconfig -m /usr/local/lib

===>   Registering installation for net-snmp-5.0.6

===>  SECURITY NOTE:

      This port has installed the following startup scripts which may cause

      network services to be started at boot time.

/usr/local/etc/rc.d/snmpd.sh

安装 NAT

修改 /etc/rc.conf

一块网络卡 ifconfig_rl0_alias0="inet 192.168.1.1  netmask 255.255.255.0"

二块网络卡 ifconfig_rl1="inet 192.168.1.1  netmask 255.255.255.0"

加入下列五行

gateway_enable="YES"

firewall_enable="YES"

firewall_type="OPEN"

natd_interface="rl0"

natd_enable="YES"

FreeBSD 指令集

cp -p 档案拷贝过去还是维持原来的权限

避免 /bin 及 /sbin 等重要执行档遭到修改,可以为这些档案设定禁止修改的 schg flag

chflags schg /bin/*

chflags schg /sbin/*

设定了 schg ,还要将 Kernel Security Level 调高到 1 以上,这样连 root 都不可以移除 flags 。

Kernel Security Level

FreeBSD 中有所谓的 Security Level ,它掌控了系统核心的行为运作。只有 root 可以使用指令提高 Security Level ,但不能降低它。如果要降低它,必须在 rc.conf 中设定,并重新开机。

Security Level 代表的意义:

-1:永远不安全模式。这是默认值。如果为 -1 ,它将永远以 Level 0 的模式执行。

0 :不安全模式。使用者或 root 可以使用 chflags 来移除「不可更动」及「只能附加」的 flags。所有的装置只能依其权限来存取。

1:安全模式。不可以移除「不可更动」及「只能附加」的 flags 。不可以手动加载或移除 LKM ,使用 /dev/mem /dev/kmem 只能只读,且不能 newfs 已挂上的档案系统

2:高度安全模式。除了和安全模式同样的限制外,不管硬盘是否挂上,都不可以 newfs。另外,Kernel Time 的改变限制在一秒内,如果超过,会记录 "Time adjust-ment clamped to +1 second".

3:网络安全模式。除了和安全模式同样的限制外,还有 IP 封包过滤的规则,而且不可以调整 dummynet 的设定。

可以利用 sysctl 来显示或设定 Security Level

sysctl kern.securelevel

 将 Security Level 设为 1

sysctl -w kernel.securelevel=1

当我们将 Security Level 设为 1 以上时,我们会发现没有办法安装新的 Kernel ,因为不能移除 schg flag ,也没有办法使用 big5con 、 X Window 等软件。如果 FreeBSD 只作 Server ,就可以把 Security Level 的值调高一点。

在开机时设定 Security Level ,可以在 /etc/rc.conf 中加入以下二行设定

#是否启动 Security Level

kern_securelevel_enable="YES"

# Level 从 -1 到 3

kern_securelevel="1"

只能用 root 使用指令提高 Security Level,但不能降低,如果要降低,必须在 /etc/rc.conf 中设定,重新开机才会生效。 

限制使用者邮件容量就是将使用者的邮件从 /var/mail 中搬移到使用者的目录中,再对使用者目录做磁盘配额的限制。

cd /var/mail

mkdir /home/username/mail

mv /var/mail/username /home/username/mail

ln -s /home/username/mail username

限制 crontab 和 at 的使用

在 /var/cron 目录中编辑 allow 的文字文件,里面的人才可以使用 cron

                                       deny 的文字文件,里面的人不可以使用 cron

at 也是一样的设定。

停止 Sendmail 在 /etc/rc.conf 中加入 sendmail_enable="NO"

使用 sysctl 来设定当外部机器要使用我们没有提供的服务时运记录下来,例如有人尝试扫我们的 Port ,或者我们没有开放 telnet ,在 /var/log/message 中便会记录下来。

#sysctl -w net.inet.tcp.log_in_vain=1

#sysctl -w net.inet.udp.log_in_vain=1

这二行加入 /etc/rc.local 中 或是在 /etc/sysctl.conf 加入下面二行

 net.inet.tcp.log_in_vain=1

net.inet.udp.log_in_vain=1

在 /etc/rc.conf 加入一行停止 inted 服务

inetd_enable="NO"

为了防止一些 DoS (Deny of Service) ,建议最好把 ICMP 重导向 ( redirect ) 的封包丢弃,可以在 /etc/rc.conf 中加入以下的设定:

# YES 表示丢弃 ICMP REDIRECT 封包

icmp_drop_redirect="YES"

# YES 表示将丢弃的封包记录下来

icmp_log_redirect="YES

 

sshd 预设并未将使用者登入的数据记录下来,可以利用修改 /etc/syslog.conf 来记录,找到 seccrity 的项目,将它修改成下面这样:

security.*;auth.info    /var/log/security

如此一来,当使用者利用 ssh 登入时,便会记录在 /var/log/security 中。

列出目前系统提供的服务

netstat -a | grep LISTEN

sysctl -a 可以列出目前 Kernel 状态值的设定

列出空间使用最多的前 5 位

du -s /home/* | sort -m | head -5

FreeBSD 有一种特别的权限控制,称之为「flags」,这些 flags 的设定可以让我们用来保护特殊的档案。可以用 ls -ol 来加以观看。

nodump 档案不可以被 dump,只有档案拥有者和 root 可以设定
sappnd 档案只可以往后附加,不能删除,只有 root 可以设定
schg 档案不可以被更动,连 root 都不能删除,只有 root 可以设定
uappnd 档案只可以往后附加,不能删除,档案拥有者和 root 才可以设定
uchg 档案不可以被更动,档案拥有者和 root 才可以设定

相关文章

  • Unix,BSD,Linux系统三者的区别小结

    这篇文章主要介绍了Unix,BSD,Linux系统三者的区别小结,需要的朋友可以参考下
    2023-05-03
  • FreeBSD如何添加硬盘?FreeBSD添加硬盘的方法

    一些朋友问小编FreeBSD如何添加硬盘?别担心,今天小编就为大家分享FreeBSD添加硬盘的方法,希望对大家会有帮助,有需要的朋友一起去看看吧
    2017-04-06
  • Freebsd PF 安装使用详解

    今天小编为大家带来的是Freebsd PF 安装使用详解,希望对大家会有帮助,有需要的朋友一起去看看吧
    2017-04-06
  • FreeBSD下zfs: failed with error 6错误如何解决?

    最近一些朋友问小编 FreeBSD下zfs: failed with error 6错误如何解决?今天小编要为大家带来的是 FreeBSD下zfs: failed with error 6错误的解决方法,有需要的朋友一起去看
    2017-04-06
  • Unix文件系统和pwd命令实现详解

    今天小编要为大家带来的是Unix文件系统和pwd命令实现详解,希望对大家会有帮助,有需要的朋友一起去看看吧
    2017-04-01
  • Unix中的dot命令详解

    今天小编将为大家带来的是Unix中的dot命令详解!希望对大家会有帮助!有需要的朋友一起去看看吧
    2017-03-22
  • freebsd时间设置小节详解

    近日!一些朋友对于freebsd时间设置小节存在疑虑!下面小编将为大家带来的是freebsd时间设置小节详解!希望对大家会有帮助!有需要的朋友一起去看看吧
    2017-03-19
  • grub2引导freebsd详解

    今天小编要为大家带来的是grub2引导freebsd详解!希望对大家会有帮助,有需要的朋友一起去看看吧
    2017-03-19
  • FreeBSD10安装内核源代码方法讲解

    下面小编为大家带来的是FreeBSD10安装内核源代码方法讲解!希望能够帮助到大家!有需要的朋友一起去看看吧
    2017-03-19
  • FreeBSD下如何使GraphicsMagick支持中文字体?

    最近一些朋友在问FreeBSD下如何使GraphicsMagick支持中文字体?今天小编为大家带来的是FreeBSD下使GraphicsMagick支持中文字体的方法!有需要的朋友一起去看看吧
    2017-03-15

最新评论