Skip to the content.

上一页      主目录      下一页

15. Networking Programs


这些应用程序通常是客户机应用程序,用于访问整个建筑物或世界各地的适当服务器。Tcpwrappers和portmap是您的机器上可能运行的守护进程的支持程序。

15.1 bridge-utils-1.7.1


简介bridge-utils

bridge-utils包包含创建和管理桥接设备所需的实用程序。这在为托管虚拟机(VM)设置网络时非常有用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

bridge-utils 依赖

可选 (运行测试)

Net-tools-2.10

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/bridge

内核配置

在内核配置中启用以下选项,必要时重新编译内核:

[*] Networking support --->                 [CONFIG_NET]
        Networking options --->
            <*/M> 802.1d Ethernet Bridging  [CONFIG_BRIDGE]

安装bridge-utils

运行以下命令安装bridge-utils:

autoconf                  &&
./configure --prefix=/usr &&
make

测试结果需要运行tools/目录下的六个shell脚本。其中两个测试需要两个以太网端口。某些测试将不保留当前网络配置。有关详细信息,请参阅tests/README

现在,作为root用户:

make install

内容

安装程序: brctl

安装库: None

安装目录: None

简要描述

brctl 是一个用于在Linux内核中设置、维护和检查以太网网桥配置的程序。

15.2 cifs-utils-7.0


简介cifs-utils

cifs-utils包提供了一种在Linux系统上挂载SMB/CIFS共享的方法。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

cifs-utils 依赖

推荐

Talloc-2.4.0 (如果安装了krb,则需要), MIT Kerberos V5-1.20.1

可选

docutils-0.19 (来创建手册页), keyutils-1.6.1 (构建PAM模块所需的), Linux-PAM-1.5.2, Samba-4.17.5, 和 libcap-2.67 with PAMlibcap-ng

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/cifsutils

内核配置

在内核配置中启用以下选项,必要时重新编译内核:

File systems  --->
    [*] Network File Systems  --->                                  [CONFIG_NETWORK_FILESYSTEMS]
        <*/M> SMB3 and CIFS support (advanced network filesystem)   [CONFIG_CIFS]

根据您的服务器配置,可能需要额外的内核选项。

安装cifs-utils

运行以下命令安装cifs-utils:

./configure --prefix=/usr \
            --disable-pam &&
make

这个包没有附带测试套件。

现在,作为root用户:

make install

命令解释

--disable-pam: 不要构建PAM支持。如果安装了Linux-PAM-1.5.2并且希望支持PAM,请删除它并使用--with-pamdir(见下文)。

--with-pamdir=/usr/lib/security: 在/usr/lib/security中安装PAM模块。

内容

安装程序: cifs.idmap, cifs.upcall, cifscreds, getcifsacl, mount.cifs, mount.smb3, setcifsacl, smb2-quota, 和 smbinfo

安装库: /usr/lib/cifs-utils/idmapwb.so 和可选的PAM模块 /usr/lib/security/pam_cifscreds.so

安装目录: /usr/lib/cifs-utils

简要描述

cifs.idmap 是linux CIFS客户端文件系统的用户空间辅助程序。有许多活动是内核本身无法轻易完成的。这个程序是一个callout程序,它为内核做这些事情,然后返回结果。它不打算从命令行运行。

cifs.upcall 是linux CIFS客户端文件系统的用户空间辅助程序。它的目的是在内核为特定的键类型调用request-key时运行。它不打算从命令行运行。

cifscreds 是一个管理凭据(用户名和密码)的工具,用于在多用户挂载中建立会话。

getcifsacl 是一个用户空间帮助器,用于在CIFS (Common Internet File System)的安全描述符中显示ACL。

mount.cifs 挂载Linux CIFS文件系统。当使用“-t cifs”选项时,它通常由mount(8)命令间接调用。

mount.smb3 挂载基于SMB3的文件系统。当使用”-t smb3”选项时,它通常由mount(8)命令间接调用。

setcifsacl 用于更改文件系统对象的安全描述符的ACL。

smb3-quota 显示SMB文件系统的配额信息。

smbinfo 显示SMB特定的文件信息,如安全描述符和配额。

15.3 iw-5.19


简介iw

iw是一个新的基于nl80211的用于无线设备的CLI配置实用工具。它支持最近添加到内核中的所有新驱动程序。旧的使用无线扩展接口的工具iwconfig已被弃用,强烈建议切换到iw和nl80211。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

iw 依赖

必要

libnl-3.7.0

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/iw

内核配置

要使用iw,内核必须具有适当的驱动程序和其他可用的支持。适当的总线也必须可用。对于较旧的笔记本电脑,需要构建PCMCIA总线(CONFIG_PCCARD)。在某些情况下,还需要为嵌入式卡构建这种总线支持。还需要建造适当的桥梁支撑。对于许多现代笔记本电脑,将需要CardBus主机桥接(CONFIG_YENTA)。

除了总线之外,特定无线网卡的实际驱动程序也必须可用。有很多无线网卡,它们并不都能与Linux兼容。寻找卡支持的第一个地方是内核。驱动程序位于设备Device Drivers → Network Device Support → Wireless LAN (non-hamradio)。也有一些非常常见的卡可用的外部驱动程序。要了解更多信息,请查看用户笔记。

加载正确的驱动程序后,接口将出现在/proc/net/wireless中。

安装iw

使用以下命令安装iw:

sed -i "/INSTALL.*gz/s/.gz//" Makefile &&
make

这个包没有附带测试套件。

现在,作为root用户:

make install

命令解释

sed …: 根据其他手册页安装未压缩的手册页。

内容

安装程序: iw

安装库: None

安装目录: None

简要描述

iw 显示/操作无线设备及其配置。

15.4 NcFTP-3.2.6


简介NcFTP

NcFTP包包含一个强大而灵活的接口到Internet标准文件传输协议。它旨在取代或补充stock ftp程序。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

NcFTP 依赖

可选

LLVM-15.0.7 (如果安装,默认使用Clang)

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/ncftp

安装NcFTP

有两种方法可以构建NcFTP。第一种(也是最优的)方式是将大部分功能构建为共享库,然后构建和安装链接到该库的程序。第二种方法简单地将所有功能静态地链接到二进制文件中。这使得动态库不能被其他应用程序链接。你需要选择最适合你的方法。注意,第二个方法不会创建一个完全静态链接的二进制文件;在这种情况下,只有libncftp部分是静态链接的。请注意,共享库的构建和使用受《Clarified Artistic License》的保护;但是,开发利用共享库的应用程序需要遵守不同的许可。

首先,修复由GCC-10中行为变化引起的问题:

sed -i 's/^Bookmark/extern Bookmark/' sh_util/gpshare.c

要使用第一种(也是最优)方法安装NcFTP,请执行以下命令:

./configure --prefix=/usr --sysconfdir=/etc &&
make -C libncftp shared &&
make

这个包没有附带测试套件。

现在,作为root用户:

make -C libncftp soinstall &&
make install

要使用第二种方法安装NcFTP(静态链接libncftp功能),运行以下命令:

./configure --prefix=/usr --sysconfdir=/etc &&
make

这个包没有附带测试套件。

现在,作为root用户:

make install

命令解释

make -C … && make -C …: 这些命令创建并安装动态库libncftp,然后在编译主程序时使用它进行链接。

配置 NcFTP

配置文件

/etc/ncftp.*~/.ncftp/*; 特别是 /etc/ncftp.prefs_v3~/.ncftp/prefs_v3

配置信息

大多数NcFTP配置是在程序中完成的,并且配置文件是自动处理的。一个例外是~/.ncftp/prefs_v3。有各种各样的选项可以改变,包括:

yes-i-know-about-NcFTPd=yes

这将禁用启动屏幕广告NcFTPd服务器。

prefs_v3文件中还有其他选项。其中大多数是不言自明的。全局默认值可以在/etc/ncftp.prefs_v3中设置。

内容

安装程序: ncftp, ncftpbatch, ncftpbookmarks, ncftpget, ncftpls, ncftpput, 和 ncftpspooler

安装库: libncftp.so

安装目录: None

简要描述

ncftp 是文件传输协议的浏览器程序。

ncftpbatch 是一个单独的批处理FTP作业处理器。

ncftpbookmarks 是NcFTP书签编辑器(NCurses-based)。

ncftpget 是一个用于检索文件的脚本的Internet文件传输程序。

ncftpls 是一个用于列出文件的脚本的Internet文件传输程序。

ncftpput 是一个Internet文件传输程序,用于脚本文件的传输。

ncftpspooler 是一个全局批处理FTP作业处理器守护进程。

15.5 Net-tools-2.10


简介Net-tools

Net-tools包是用于控制Linux内核的网络子系统的程序集合。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/net-tools

安装Net-tools

下面的说明通过将yes传递给make命令来自动化配置过程。如果您希望运行交互式配置过程(通过将指令更改为只是make),但您不确定如何回答所有问题,那么只需接受默认值。这在大多数情况下是可以的。这里问你的是一堆关于你在内核中启用了哪些网络协议的问题。默认答案将使这个包中的工具能够使用最常见的协议:TCP、PPP和其他几个协议。您仍然需要在内核中实际启用这些协议——您在这里所做的只是告诉包在其程序中包含对这些协议的支持,但是由内核来使这些协议可用。

注意

这个包有几个不需要的协议和硬件设备特定的功能,已经过时了。为了只构建系统所需的最小值,请跳过yes命令并以交互方式回答每个问题。最少需要的选项是“UNIX协议族”和“INET (TCP/IP)协议族”。

对于这个包,我们使用DESTDIR安装方法,以便轻松地从构建中删除覆盖我们想要保留的文件或不适合我们系统的文件。

运行以下命令安装Net-tools:

export BINDIR='/usr/bin' SBINDIR='/usr/bin' &&
yes "" | make -j1                           &&
make DESTDIR=$PWD/install -j1 install       &&
rm    install/usr/bin/{nis,yp}domainname    &&
rm    install/usr/bin/{hostname,dnsdomainname,domainname,ifconfig} &&
rm -r install/usr/share/man/man1            &&
rm    install/usr/share/man/man8/ifconfig.8 &&
unset BINDIR SBINDIR

这个包没有附带测试套件。

现在,作为root用户:

chown -R root:root install &&
cp -a install/* /

命令解释

export BINDIR=’/usr/bin’ SBINDIR=’/usr/bin’: 确保可执行文件安装在正确的位置。

**yes “” make** : 管道yesmake config会跳过交互配置,接受默认值。

rm …: 删除不需要的程序和手册页。

内容

安装程序: arp, ipmaddr, iptunnel, mii-tool, nameif, netstat, plipconfig, rarp, route, 和 slattach

安装库: None

安装目录: None

简要描述

arp 用于操作内核的ARP缓存,通常用于添加或删除条目,或者转储整个缓存。

ipmaddr 添加、删除和显示接口的多播地址。

iptunnel 添加、更改、删除和显示接口的隧道。

mii-tool 检查或设置网络接口的媒体独立接口(MII)单元的状态。

nameif 根据MAC地址为网络接口命名。

netstat 用于报告网络连接、路由表和接口统计信息。

plipconfig 用于微调PLIP器件参数,以提高其性能。

rarp 用于操作内核的RARP表。

route 用于操作IP路由表。

slattach 将网络接口连接到串行线。这允许您使用普通终端线路进行点对点连接到其他计算机。

15.6 NFS-Utils-2.6.2


简介NFS Utilities

NFS Utilities包包含使用内核的NFS功能所必需的用户空间服务器和客户机工具。NFS是一种允许通过网络共享文件系统的协议。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

NFS Utilities 依赖

必要

libtirpc-1.3.3rpcsvc-proto-1.4.3

可选

Cyrus SASL-2.1.28 (用于SASL认证), LVM2-2.03.18 (libdevmapper支持NFSv4), libnsl-2.0.0 (用于NIS客户端支持), OpenLDAP-2.6.4 (用于LDAP身份验证), SQLite-3.40.1, MIT Kerberos V5-1.20.1libgssapi , 和 librpcsecgss (用于GSS和RPC安全支持), 和 libcap-2.67 with PAM

必要 (运行时)

rpcbind-1.2.6

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/nfs-utils

内核配置

在内核配置中启用以下选项(根据需要选择客户端和/或服务器支持),并在必要时重新编译内核:

File systems  --->
    [*] Network File Systems  --->          [CONFIG_NETWORK_FILESYSTEMS]
        <*/M> NFS client support            [CONFIG_NFS_FS]
        <*/M> NFS server support            [CONFIG_NFSD]

选择在选择上述选项时出现的适当子选项。

注意

在BLFS中,我们假设将使用nfs v3。如果服务器提供nfs v4(对于linux,是CONFIG_NFSD_V4),那么v3的自动协商将失败,您需要将nfsver=3添加到挂载选项中。这也适用于在客户端的内核中启用该选项的情况,例如在尝试从BLFS v3服务器挂载的发行版中。

即使连接的两端都不支持nfs v4,添加nfsver=3仍然是有益的,因为它可以防止在每次挂载时记录错误消息“nfs:指定的坏挂载选项值:minorversion=1”。

安装NFS Utilities

运行以下命令安装NFS Utilities:

./configure --prefix=/usr          \
            --sysconfdir=/etc      \
            --sbindir=/usr/sbin    \
            --disable-nfsv4        \
            --disable-gss &&
make

这个包没有附带一个工作测试套件。

现在,作为root用户:

make install                      &&
chmod u+w,go+r /usr/sbin/mount.nfs    &&
chown nobody.nogroup /var/lib/nfs

命令解释

--disable-gss: 禁用RPCSEC GSS (RPC安全)支持。

chown nobody.nogroup /var/lib/nfs: rpc.statd程序使用该目录的所有权来设置它的UID和GID。该命令将这些条目设置为非特权条目。

配置 NFS Utilities

服务器配置

/etc/exports包含NFS服务器上导出的目录。请参阅exports.5手册页了解该文件的语法。另外,请参阅https://nfs.sourceforge.net/nfs-howto/上的“NFS HowTo”,了解如何以安全的方式配置服务器和客户端。例如,要在本地网络上共享/home目录,可以添加以下行:

cat >> /etc/exports << EOF
/home 192.168.0.0/24(rw,subtree_check,anonuid=99,anongid=99)
EOF

注意

一定要替换目录、网络地址。和前缀上面匹配您的网络。上面行中唯一的空格应该在目录和网络地址之间。

Systemd Units

安装blfs-systemd-units-20220720包中包含的NFSv4服务器单元,以便在引导时启动服务器。

make install-nfsv4-server

如果您已经禁用了NFSv4支持,以root用户运行以下命令来忽略NFSv4特定的systemd单元:

make install-nfs-server

您可以编辑/etc/default/nfs-utils文件来更改NFS守护进程的启动选项。默认值对于大多数用例来说应该是合适的。

客户端配置

/etc/fstab包含要挂载到客户端的目录。另外,可以使用带有适当选项的mount命令来挂载分区。要挂载/home/usr分区,在/etc/fstab中添加以下命令:

<server-name>:/home  /home nfs   rw,_netdev 0 0
<server-name>:/usr   /usr  nfs   ro,_netdev 0 0

可使用的选项在man 5 nfs中指定。如果客户机和服务器都运行最新版本的linux,那么大多数选项都将进行协商(但请参阅上面关于nfsver=3的说明)。您可以指定rwro,如果要在引导时自动挂载文件系统,则可以指定_netdev,对于其他文件系统,可以指定noauto(可能还可以指定user)。

如果文件服务器没有运行最新版本的linux,您可能需要指定其他选项。

您可能需要在内核中启用autofs v4,并添加comment=systemd.automount选项。有些机器可能需要这样做,因为systemd试图在网络启动之前挂载外部文件系统。另一种方法是在系统启动后以root用户运行mount -a

Systemd Units

注意

如果安装了nfs-server单元,则不需要以下systemd单元。

安装blfs-systemd-units-20220720包中包含的单元,以便在引导时启动客户端服务。

make install-nfs-client

内容

安装程序: exportfs, mountstats, mount.nfs, mount.nfs4 (连接到 mount.nfs), nfsconf, nfsdclnts, nfsiostat, nfsstat, rpc.mountd, rpc.nfsd, rpc.statd, rpcdebug, showmount, sm-notify, start-statd, umount.nfs (连接到 mount.nfs), 和 umount.nfs4 (链接到 mount.nfs)

安装库: None

安装目录: /var/lib/nfs

简要描述

exportfs 维护NFS导出的文件系统列表。

mountstats 显示NFS客户端每次挂载的统计信息。

mount.nfs 用于通过NFS协议挂载网络共享。

mount.nfs4 用于通过NFSv4协议挂载网络共享。

nfsconf 可用于从一系列nfs-utils配置文件中测试和检索配置设置。

nfsdclnts 输出NFS客户端信息。

nfsiostat 报告网络文件系统的输入/输出统计信息。

nfsstat 显示有关NFS客户机和服务器活动的统计信息。

rpc.mountd 在NFS服务器上执行NFS挂载协议。

rpc.nfsd 在服务器上实现NFS服务的用户级部分。

rpc.statd 用于NFS文件锁定服务。当您希望启用文件锁定时,在客户机和服务器两端运行。

rpcdebug 设置或清除内核的NFS客户端和服务器调试标志。

showmount 显示NFS服务器的挂载信息。

sm-notify 用于发送网络状态监视器重启消息。

start-statd 如果statd没有运行,则nfsmount在挂载启用锁定的文件系统时调用的脚本。它可以使用适合该站点的任何标志进行定制。

umount.nfs 用于通过NFS协议卸载网络共享。

umount.nfs4 用于通过NFSv4协议卸载网络共享。

15.7 ntp-4.2.8p15


简介ntp

ntp包包含客户端和服务器,用于在网络上的不同计算机之间保持时间同步。此包是NTP协议的官方参考实现。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

ntp 依赖

必要

IO-Socket-SSL-2.081

可选

libcap-2.67 with PAM, libevent-2.1.12, libedit, 和 libopts from AutoGen

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/ntp

安装ntp

应该有一个专门的用户和组来控制启动后的ntpd守护进程。以root用户发出以下命令:

groupadd -g 87 ntp &&
useradd -c "Network Time Protocol" -d /var/lib/ntp -u 87 \
        -g ntp -s /bin/false ntp

update-leap命令需要修复才能正常运行:

sed -e 's/"(\\S+)"/"?([^\\s"]+)"?/' \
    -i scripts/update-leap/update-leap.in

现在修复glibc-2.34引入的一个问题:

sed -e 's/#ifndef __sun/#if !defined(__sun) \&\& !defined(__GLIBC__)/' \
    -i libntp/work_thread.c

运行以下命令安装ntp:

./configure --prefix=/usr         \
            --bindir=/usr/sbin    \
            --sysconfdir=/etc     \
            --enable-linuxcaps    \
            --with-lineeditlibs=readline \
            --docdir=/usr/share/doc/ntp-4.2.8p15 &&
make

这个包的测试套件在GCC 10或更高版本中被破坏。

现在,作为root用户:

make install &&
install -v -o ntp -g ntp -d /var/lib/ntp

命令解释

CFLAGS="-O2 -g -fPIC": 这个环境变量对于生成在包库中使用的位置无关代码是必需的。

--bindir=/usr/sbin: 该参数将管理程序放在/usr/sbin中。

--enable-linuxcaps: ntpd是作为ntp用户运行的,所以要使用Linux的non-root时钟控制功能。

--with-lineeditlibs=readline: 该开关使ntpdcntpq程序的Readline支持。如果省略,libedit将在安装时使用,否则不会编译readline功能。

配置 ntp

配置文件

/etc/ntp.conf

配置信息

下面的配置文件首先定义了来自不同大陆的开放访问的各种ntp服务器。其次,它创建一个漂移文件,其中ntpd存储频率偏移,并创建一个pid文件来存储ntpd进程ID。第三,它定义了闰秒定义文件/etc/ntp.leapseconds的位置,update-leap脚本在必要时检查和更新该文件。该脚本可以作为cron作业运行,ntp开发人员建议更新频率约为三周。由于包中包含的文档很少,请访问ntp网站https://www.ntp.org/https://www.ntppool.org/以获取更多信息。

cat > /etc/ntp.conf << "EOF"
# Asia
server 0.asia.pool.ntp.org

# Australia
server 0.oceania.pool.ntp.org

# Europe
server 0.europe.pool.ntp.org

# North America
server 0.north-america.pool.ntp.org

# South America
server 2.south-america.pool.ntp.org

driftfile /var/lib/ntp/ntp.drift
pidfile   /run/ntpd.pid

leapfile  /var/lib/ntp/ntp.leapseconds
EOF

您可能希望添加一个“安全会话”。有关解释,请参见 https://www.eecis.udel.edu/~mills/ntp/html/accopt.html#restrict.

cat >> /etc/ntp.conf << "EOF"
# Security session
restrict    default limited kod nomodify notrap nopeer noquery
restrict -6 default limited kod nomodify notrap nopeer noquery

restrict 127.0.0.1
restrict ::1
EOF

同步时间

有两种选择。选项一是连续运行ntpd,并允许它以渐进的方式同步时间。另一种选择是定期运行ntpd(使用cron),并在每次计划ntpd时更新时间。

如果您选择选项一,那么安装blfs-systemd-units-20220720包中包含的ntpd.service单元。

make install-ntpd

如果您希望定期运行ntpd,请在rootcrontab下添加以下命令:

ntpd -q

内容

安装程序: calc_tickadj, ntp-keygen, ntp-wait, ntpd, ntpdate, ntpdc, ntpq, ntptime, ntptrace, sntp, tickadj 和 update-leap

安装库: None

安装目录: /usr/share/ntp, /usr/share/doc/ntp-4.2.8 和 /var/lib/ntp

简要描述

calc_tickadj 计算最优滴答值给定NTP drift文件。

ntp-keygen 生成NTPv4认证和识别方案使用的加密数据文件。

ntp-wait 用于在启动时延迟启动顺序,直到ntpd设置好时间。

ntpd 是一个在后台运行的NTP守护进程,并根据已配置的NTP服务器的响应保持日期和时间同步。同时作为ntp服务器。

ntpdate 是一个客户端程序,它根据来自NTP服务器的响应设置日期和时间。此命令已弃用。

ntpdc 用于查询NTP守护进程的当前状态,并请求对该状态进行更改。

ntpq 是一个实用程序,用于监视ntpd操作和确定性能。

ntptime 读取并显示与时间相关的内核变量。

ntptrace 跟踪NTP服务器链回到主源。

sntp 是简单网络时间协议(SNTP)客户端。

tickadj 读取(并可选地修改)旧内核中不支持精确计时的几个与计时相关的变量。

update-leap 是一个脚本,用于验证并在必要时更新跳秒定义文件。

15.8 rpcbind-1.2.6


简介rpcbind

rpcbind程序是portmap的替代品。导入或导出NFS (Network File System)共享目录时需要配置。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

rpcbind 依赖

必要

libtirpc-1.3.3

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/rpcbind

安装rpcbind

应该有一个专用的用户和组来控制启动后的rpcbind守护进程。以root用户发出以下命令:

groupadd -g 28 rpc &&
useradd -c "RPC Bind Daemon Owner" -d /dev/null -g rpc \
        -s /bin/false -u 28 rpc

为了使rpcbind正常工作,首先修复包以使用正确的服务名称:

sed -i "/servname/s:rpcbind:sunrpc:" src/rpcbind.c

运行以下命令安装rpcbind:

patch -Np1 -i ../rpcbind-1.2.6-vulnerability_fixes-1.patch &&

./configure --prefix=/usr       \
            --bindir=/usr/sbin  \
            --enable-warmstarts \
            --with-rpcuser=rpc  &&
make

这个包没有附带测试套件。

现在,作为root用户:

make install

命令解释

--with-rpcuser=rpc: 使用此开关,rpcbind守护进程将以非特权用户而不是root用户运行。

配置 rpcbind

Systemd Unit

启用与包一起安装的systemd单元:

systemctl enable rpcbind

内容

安装程序: rpcbind 和 rpcinfo

安装库: None

安装目录: None

简要描述

rpcbind 是一个将RPC程序编号转换为通用地址的服务器。它必须在主机上运行,才能在该机器上的服务器上进行RPC调用。

rpcinfo 对RPC服务器进行RPC调用,并根据请求的选项报告数据。

15.9 rsync-3.2.7


简介rsync

rsync包包含rsync实用程序。这对于通过网络同步大型文件存档非常有用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

rsync 依赖

推荐

popt-1.19

可选

Doxygen-1.9.6, lz4, 和 xxhash

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/rsync

安装rsync

出于安全考虑,建议以非特权用户和组的身份运行rsync服务器。如果你想把rsync作为一个守护进程运行,用root用户发出的以下命令创建rsyncd用户和组:

groupadd -g 48 rsyncd &&
useradd -c "rsyncd Daemon" -m -d /home/rsync -g rsyncd \
    -s /bin/false -u 48 rsyncd

运行以下命令安装rsync:

./configure --prefix=/usr    \
            --disable-lz4    \
            --disable-xxhash \
            --without-included-zlib &&
make

如果你已经安装了Doxygen-1.9.6,并希望构建HTML API文档,执行:

doxygen

要测试结果,执行: make check.

现在,作为root用户:

make install

如果你构建了文档,使用以下命令作为root用户安装它:

install -v -m755 -d          /usr/share/doc/rsync-3.2.7/api &&
install -v -m644 dox/html/*  /usr/share/doc/rsync-3.2.7/api

命令解释

--disable-lz4: 此开关禁用LZ4压缩支持。请注意,当使用此开关时,它使用高级的’zstd’算法,而zstd是在LFS中提供的。

--disable-xxhash: 此开关禁用高级xxhash校验和支持。如果您已经安装了xxhash,请拆除此开关。

--without-included-zlib: 此开关启用使用系统安装的zlib库进行编译。

配置 rsync

配置文件

/etc/rsyncd.conf

配置信息

对于客户端访问远程文件,您可能需要安装OpenSSH-9.2p1包来连接到远程服务器。

这是一个简单的下载配置,用于将rsync设置为服务器。请参阅rsyncd.conf(5)手册页了解其他选项(即用户身份验证)。

cat > /etc/rsyncd.conf << "EOF"
# This is a basic rsync configuration file
# It exports a single module without user authentication.

motd file = /home/rsync/welcome.msg
use chroot = yes

[localhost]
    path = /home/rsync
    comment = Default rsync module
    read only = yes
    list = yes
    uid = rsyncd
    gid = rsyncd

EOF

您可以在https://rsync.samba.org/documentation.html上找到关于rsync的其他配置信息和一般文档。

Systemd Unit

注意,只有当您希望在本地机器上提供rsync归档文件时,才需要启动rsync服务器。运行rsync客户端不需要这个单元。

安装blfs-systemd-units-20220720包中包含的rsyncd.service单元。

make install-rsyncd

注意

这个包有两种类型的单元:一个服务文件和一个套接字文件。服务文件将在启动时启动rsync守护进程,它将一直运行直到系统关闭。套接字文件将使systemd侦听rsync端口(默认为873,需要编辑其他内容),并在尝试连接到该端口时启动rsync守护进程,并在连接终止时停止守护进程。这被称为套接字激活,类似于在基于SysVinit的系统上使用{,x}inetd。

默认情况下,使用第一种方法——rsync守护进程在引导时启动,在关机时停止。如果需要socket方法,你需要以root用户运行:

systemctl stop rsyncd &&
systemctl disable rsyncd &&
systemctl enable rsyncd.socket &&
systemctl start rsyncd.socket

请注意,套接字方法仅对远程备份有用。对于本地备份,您需要使用service方法。

内容

安装程序: rsync 和 rsync-ssl

安装库: None

安装目录: Optionally, /usr/share/doc/rsync-3.2.7

简要描述

rsync 是具有更多特性的rcp(和scp)的替代品。它使用“rsync算法”,该算法提供了一种非常快速的远程文件同步方法。它通过在链接中只发送文件中的差异来实现这一点,而不要求这两组文件事先都存在于链接的一端。

rsync-ssl 是连接到内置SSL支持的rsync守护进程时使用的helper脚本。

15.10 Samba-4.17.5


简介Samba

Samba包为SMB/CIFS客户端提供文件和打印服务,为Linux客户端提供Windows组网。Samba还可以配置为Windows域控制器的替代品、作为Windows Active Directory域成员的文件/打印服务器和NetBIOS (RFC1001/1002)名称服务器(其中包括提供LAN浏览支持)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Samba 依赖

必要

GnuTLS-3.8.0, jansson-2.14, JSON-4.10, libtirpc-1.3.3, lmdb-0.9.29, 和 rpcsvc-proto-1.4.3

推荐

Fuse-3.13.1, GPGME-1.18.0, ICU-72.1, libtasn1-4.19.0, libxslt-1.1.37 (for documentation), Linux-PAM-1.5.2, Parse-Yapp-1.21, 和 OpenLDAP-2.6.4

可选

Avahi-0.8, BIND-9.18.12, Cups-2.4.2, Cyrus SASL-2.1.28, GDB-13.1, git-2.39.2, GnuPG-2.4.0 (所需的ADS和测试套件), libaio-0.3.113, libarchive-3.6.2, libcap-2.67 with PAM, libgcrypt-1.10.1, libnsl-2.0.0, libunwind-1.6.2, MIT Kerberos V5-1.20.1, nss-3.88.1, popt-1.19, Talloc-2.4.0 (包括), Vala-0.56.4, Valgrind-3.20.0 (可选地由测试套件使用), xfsprogs-6.1.1, cmocka, cryptography, ctdb (包括), cwrap, dnspython, FAM, Gamin, GlusterFS, Heimdal (包括), iso8601, ldb (included), M2Crypto (ADS所需), OpenAFS, pyasn1, PyGPGME (推荐用于ADS), tevent (包括), tdb (包括), 和 tracker-2

可选 (for the Developer Test Suite)

Install in listed order: six-1.16.0, pytest-7.2.1, argparse, extras, hypothesis, coverage, pytest-cov, doctools, unittest2, testtools, fixtures, python-mimeparse, contextlib2, traceback2, linecache2, testscenarios, testresources, virtualenv, pbr, 和 python-subunit

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/samba4

安装Samba

为了支持测试套件,为一些不在BLFS范围内的Python模块设置一个Python虚拟环境:

python3 -m venv pyvenv &&
./pyvenv/bin/pip3 install cryptography pyasn1 iso8601

运行以下命令安装Samba:

PYTHON=$PWD/pyvenv/bin/python3             \
CPPFLAGS="-I/usr/include/tirpc"            \
LDFLAGS="-ltirpc"                          \
./configure                                \
    --prefix=/usr                          \
    --sysconfdir=/etc                      \
    --localstatedir=/var                   \
    --with-piddir=/run/samba               \
    --with-pammodulesdir=/usr/lib/security \
    --enable-fhs                           \
    --without-ad-dc                        \
    --enable-selftest                      &&
make

要测试结果,执行命令:PATH=$PWD/pyvenv/bin:$PATH make quicktest。测试套件将产生看起来像失败的代码行,但这些代码行是无害的。对于良好的测试运行,最后几行输出应该报告“ALL OK”。任何失败的总结可以在./st/summary中找到。

注意

此外,开发人员测试套件是可用的。如果你已经在python虚拟环境中安装了上面的可选python模块来构建这个包,你可以使用make test运行这些测试。对于大约290个SBU和超过1 GB的磁盘空间的普通构建器,不建议这样做,您应该期望在3000多个测试中出现~73个错误和~30个失败。

修复Python 3解释器的硬编码路径:

sed '1s@^.*$@#!/usr/bin/python3@' \
    -i ./bin/default/source4/scripting/bin/samba-gpupdate.inst

如果从旧版本的samba升级,作为root用户,删除旧的Python支持文件以防止一些问题:

rm -rf /usr/lib/python3.11/site-packages/samba

仍然以root用户,安装这个包:

make install &&

install -v -m644    examples/smb.conf.default /etc/samba &&

sed -e "s;log file =.*;log file = /var/log/samba/%m.log;" \
    -e "s;path = /usr/spool/samba;path = /var/spool/samba;" \
    -i /etc/samba/smb.conf.default &&

mkdir -pv /etc/openldap/schema                        &&

install -v -m644    examples/LDAP/README              \
                    /etc/openldap/schema/README.LDAP  &&

install -v -m644    examples/LDAP/samba*              \
                    /etc/openldap/schema              &&

install -v -m755    examples/LDAP/{get*,ol*} \
                    /etc/openldap/schema

命令解释

--enable-fhs: 以符合文件系统层次标准(FHS)的方式分配所有其他文件路径。

--without-ad-dc: 禁用Active Directory域控制器功能。详细信息请参见Set up a Samba Active Directory Domain Controller。如果您已经安装了ADS支持所需的Python模块,请删除此开关。请注意,BLFS没有为Active Directory域控制器提供samba引导脚本或systemd单元。

--with-selftest-prefix=SELFTEST_PREFIX: 该选项指定测试套件工作目录(default=./st)。

install -v -m644 examples/LDAP/* /etc/openldap/schema: 这些命令用于将样例Samba模式复制到OpenLDAP schema目录。

install -v -m644 ../examples/smb.conf.default /etc/samba: 这将一个默认的smb.conf文件复制到/etc/samba。这个样例配置只有在您将其复制到/etc/samba/smb.conf并针对您的安装进行适当的更改后才能正常工作。有关必须设置的最小值,请参阅配置部分。

配置 Samba

配置文件

/etc/samba/smb.conf

打印到SMB客户端

如果您将CUPS用于打印服务,并且希望打印到连接到SMB客户机的打印机上,则需要创建SMB后端设备。要创建设备,以root用户发出以下命令:

install -dvm 755 /usr/lib/cups/backend &&
ln -v -sf /usr/bin/smbspool /usr/lib/cups/backend/smb

配置信息

由于Samba的复杂性和许多不同的用途,对于所有包的功能的完整配置远远超出了BLFS这本书的范围。本节提供了针对两种常见场景配置/etc/samba/smb.conf文件的说明。/etc/samba/smb.conf的完整内容将取决于samba安装的目的。

注意

您可能会发现将下面显示的配置参数复制到空的/etc/samba/smb.conf文件中比复制和编辑”命令解释”部分中提到的默认文件更容易。如何创建/编辑/etc/samba/smb.conf文件将由您自己决定。确保文件只能由root用户可写(模式644)。

场景1:最小的仅客户端独立安装

如果您只想使用smbclient传输文件,挂载Windows共享并打印到Windows打印机,并且不想将文件和打印机共享到Windows机器,请选择此变体。

/etc/samba/smb.conf文件中包含以下三个参数即可:

[global]
    workgroup = WORKGROUP
    dos charset = cp850
    unix charset = ISO-8859-1

本例中的值指定计算机属于名为“WORKGROUP”的Windows工作组,在与MS- dos和MS Windows 9x通信时使用 “cp850” 字符集,并且文件名以 “ISO-8859-1” 编码存储在磁盘上。根据您的安装情况适当调整这些值。当LANG变量设置为首选语言环境时,“unix charset”的值必须与locale charmap的输出相同,否则ls命令可能无法显示下载文件的正确文件名。

在此场景中不需要运行任何Samba服务器,因此不需要安装所提供的systemd单元。

场景2:独立文件/打印服务器

如果除了场景1中描述的功能之外,还希望将文件和打印机共享给工作组中的Windows机器,则选择此变体。

在这种情况下,/etc/samba/smb.conf.default文件可能是一个很好的开始模板。此外,您应该将“dos charset”和“unix charset”参数添加到场景1中所描述的“[global]”部分,以防止文件名损坏。出于安全考虑,您可能希望定义path = /home/alice/shared-files,假设您的用户名是alice,并且您只想共享该目录下的文件,而不是您的整个home目录。然后,将homes替换为shared-files,如果使用下面的配置文件或/etc/samba/smb.conf.default来创建您的配置文件,也更改comment

下面的配置文件为每个用户的主目录创建一个单独的共享,并使所有的Windows机器都可以使用打印机:

[global]
    workgroup = WORKGROUP
    dos charset = cp850
    unix charset = ISO-8859-1

[homes]
    comment = Home Directories
    browseable = no
    writable = yes

[printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = no
    guest ok = no
    printable = yes

您可能希望在“[global]”部分自定义的其他参数包括:

server string =
security =
hosts allow =
load printers =
log file =
max log size =
socket options =
local master =

有关这些参数的信息,请参考/etc/samba/smb.conf.default文件中的注释。

由于在本例中需要smbdnmbd守护进程,因此安装samba systemd单元。确保运行smbpasswd(使用-a选项添加用户)来启用和设置需要Samba访问的所有帐户的密码。使用默认的Samba passdb后端,您尝试添加的任何用户也需要存在于/etc/passwd文件中。

高级需求

涉及域控制或成员关系的更复杂的场景也是可能的。这些设置是高级主题,在BLFS中无法充分涵盖。仅就这些主题就有许多完整的书籍。请注意,在某些域成员场景中,需要winbindd守护进程和相应的systemd单元。

来宾帐户

默认的Samba安装使用nobody用户访问服务器。这可以通过在/etc/samba/smb.conf文件中设置guest account =参数来覆盖。如果您使用guest account =参数,请确保该用户存在于/etc/passwd文件中。

Systemd Units

要在引导时启动Samba守护进程,请以root用户运行以下命令,从blfs-systemd-units-20220720包中安装systemd单元:

make install-samba

要在引导时启动winbindd守护进程,请在blfs-systemd-units-20220720包中安装systemd单元,以root用户运行以下命令:

make install-winbindd

注意

这个包有两种类型的单元:一个服务文件和一个套接字文件。服务文件将在引导时启动smbd守护进程,它将一直运行直到系统关闭。套接字文件将使systemd侦听smbd端口(默认为445,需要对其他内容进行编辑),并在尝试连接到该端口时启动smbd守护进程,并在连接终止时停止守护进程。这被称为套接字激活,类似于在基于SysVinit的系统上使用{,x}inetd。

默认情况下,使用第一种方法—smbd守护进程在引导时启动,在关机时停止。如果需要socket方法,您需要以root用户运行以下命令:

systemctl stop smbd &&
systemctl disable smbd &&
systemctl enable smbd.socket &&
systemctl start smbd.socket

注意,只有smbd守护进程可以被套接字激活。

内容

安装程序: cifsdd, dbwrap_tool, dumpmscat, eventlogadm, gentest, ldbadd, ldbdel, ldbedit, ldbmodify, ldbrename, ldbsearch, locktest, masktest, mdsearch, mvxattr, ndrdump, net, nmbd, nmblookup, ntlm_auth, oLschema2ldif, pdbedit, profiles, regdiff, regpatch, regshell, regtree, rpcclient, samba-gpupdate, samba-regedit, samba-tool, sharesec, smbcacls, smbclient, smbcontrol, smbcquotas, smbd, smbget, smbpasswd, smbspool, smbstatus, smbtar, smbtorture, smbtree, tdbbackup, tdbdump, tdbrestore, tdbtool, testparm, wbinfo, 和 winbindd

安装库: libdcerpc-binding.so, libdcerpc-samr.so, libdcerpc-server-core.so, libdcerpc.so, libndr-krb5pac.so, libndr-nbt.so, libndr.so, libndr-standard.so, libnetapi.so, libnss_winbind.so, libnss_wins.so, libsamba-credentials.so, libsamba-errors.so, libsamba-hostconfig.so, libsamba-passdb.so, libsamba-policy.cpython-310-x86_64-linux-gnu.so, libsamba-util.so, libsamdb.so, libsmbclient.so, libsmbconf.so, libsmbldap.so, libtevent-util.so, libwbclient.so, 和 filesystem 并支持 /usr/lib/{python3.11,samba} 下的模块

安装目录: /etc/samba, /run/samba, /usr/include/samba-4.0, /usr/lib/python3.11/site-packages/samba, /usr/{lib,libexec,share}/samba, 和 /var/{cache,lib,lock,log,run}/samba

简要描述

cifsdd 为SMB的dd命令。

dbwrap_tool 用于使用dbwrap接口读取和操作TDB/CTDB数据库。

dumpmscat 转储MS目录文件的内容。

eventlogadm 用于从STDIN写入记录到事件日志,添加指定的源和DLL事件日志注册表项,并显示活动事件日志名称(来自smb.conf)。

gentest 用于对两个SMB服务器运行随机的通用SMB操作,并显示行为上的差异。

ldbadd 是一个命令行实用程序,用于向LDB数据库添加记录。

ldbdel 是一个用于删除LDB数据库记录的命令行实用程序。

ldbedit 允许您使用首选编辑器编辑LDB数据库。

ldbmodify 允许修改LDB数据库中的记录。

ldbrename 允许重命名LDB数据库。

ldbsearch 在LDB数据库中搜索与指定表达式匹配的记录。

locktest 用于查找两个SMB服务器之间的锁定差异。

masktest 用于查找Samba实现与远程服务器实现之间通配符匹配的差异。

mdsearch 针对SMB服务器运行Spotlight搜索。

mvxattr 用于递归重命名扩展属性。

ndrdump 是一个DCE/RPC包解析器和转储器。

net 是用于管理Samba和远程CIFS服务器的工具,类似于DOS/Windows的net实用程序。

nmbd 是Samba NetBIOS名称服务器。

nmblookup 查询NetBIOS名称并将其映射到IP地址。

ntlm_auth 是一个允许外部访问Winbind的NTLM身份验证功能的工具。

oLschema2ldif 将LDAP模式转换为与LDAP兼容的LDIF。

pdbedit 是用于管理SAM数据库的工具。

profiles 是一个报告和更改Windows注册表文件中的sid的实用程序。

regdiff 是一个用于Windows注册表文件的Diff程序。

regpatch 对注册表文件应用注册表补丁。

regshell 是一个使用readline的Windows注册表文件浏览器。

regtree 是文本模式注册表查看器。

rpcclient 用于执行MS-RPC客户端功能。

samba-gpupdate 允许您编辑Microsoft组策略对象(GPO)。

samba-regedit 是一个管理Samba注册表的基于ncurses的工具。

samba-tool 是主要的Samba管理工具。

sharesec 操作SMB文件共享的共享ACL权限。

smbcacls 用于操作Windows NT访问控制列表。

smbclient 是一个SMB/CIFS访问实用程序,类似于FTP。

smbcontrol 用于控制运行smbdnmbdwinbindd守护进程。

smbcquotas 用于操纵SMB文件共享上的Windows NT配额。

smbd 是主要的Samba守护进程,为客户端提供SMB/CIFS服务。

smbget 是一个简单的实用程序,具有wget-like的语义,可以从SMB服务器下载文件。您可以在命令行中指定要下载的文件。

smbpasswd 修改用户的Samba密码。

smbspool 向SMB打印机发送打印作业。

smbstatus 报告当前的Samba连接。

smbtar 是一个shell脚本,用于将SMB/CIFS共享直接备份到Linux磁带机或文件中。

smbtorture 是针对SMB服务器运行多个测试的测试套件。

smbtree 是一个基于文本的SMB网络浏览器。

tdbbackup 是用于备份或验证Samba完整性的工具.tdb文件。

tdbdump 是用于打印Samba内容的工具.tdb文件。

tdbrestore 是用于创建Samba的工具。从ntdbdump中取出.tdb文件。

tdbtool 是一个工具,允许从命令行进行简单的数据库操作。

testparm 检查smb.conf文件的语法是否正确。

wbinfo 查询正在运行的winbindd守护进程。

winbindd 解析来自Windows NT服务器的名称。

libnss_winbind.so 提供名称服务开关API功能,用于从NT服务器解析名称。

libnss_wins.so 为Samba的Windows Internet命名服务实现提供API函数。

libnetapi.so 为用于Samba和远程CIFS服务器的管理工具提供API功能。

libsmbclient.so 为Samba SMB客户端工具提供API功能。

libwbclient.so 为Windows域客户端服务提供API函数。

15.11 Wget-1.21.3


简介Wget

Wget包包含一个用于从Web非交互式下载文件的实用程序。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Wget 依赖

推荐

make-ca-1.12 (运行时)

可选

GnuTLS-3.8.0, HTTP-Daemon-6.15 (对于测试套件), IO-Socket-SSL-2.081 (对于测试套件), libidn2-2.3.4, libpsl-0.21.2, PCRE-8.45 or pcre2-10.42, 和 Valgrind-3.20.0 (对于测试套件)

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/wget

安装Wget

运行以下命令安装Wget:

./configure --prefix=/usr      \
            --sysconfdir=/etc  \
            --with-ssl=openssl &&
make

要测试结果,执行: make check.

启用Valgrind测试时,某些测试可能会失败。

现在,作为root用户:

make install

命令解释

--sysconfdir=/etc: 这将配置文件从/usr/etc重新定位到/etc

--with-ssl=openssl: 这允许程序使用openssl而不是GnuTLS-3.8.0

--enable-valgrind-tests: 这允许测试在valgrind下运行。

配置 Wget

配置文件

/etc/wgetrc~/.wgetrc

内容

安装程序: wget

安装库: None

安装目录: None

简要描述

wget 使用HTTP、HTTPS和FTP协议从Web检索文件。它被设计为非交互式的,用于后台或无人值守的操作。

15.12 Wireless Tools-29


简介Wireless Tools

无线扩展(WE,Wireless Extension)是Linux内核中的通用API,允许驱动程序向用户空间公开特定于通用无线局域网的配置和统计信息。只要驱动程序支持无线扩展,一组工具就可以支持无线局域网的所有变体,而不管它们的类型如何。WE参数也可以在不重新启动驱动程序(或Linux)的情况下动态更改。

无线工具(Wireless Tools, WT)包是一组允许操作无线扩展的工具。它们使用文本界面来支持完整的无线扩展。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/WirelessTools

内核配置

要使用无线工具,内核必须具有适当的驱动程序和其他可用的支持。适当的总线也必须可用。对于许多笔记本电脑,需要构建PCMCIA总线(CONFIG_PCCARD)。在某些情况下,还需要为嵌入式无线网卡构建这种总线支持。还需要建造适当的桥梁支撑。对于许多现代笔记本电脑,将需要CardBus主机桥接(CONFIG_YENTA)。

除了总线之外,特定无线网卡的实际驱动程序也必须可用。有很多无线网卡,它们并不都能与Linux兼容。寻找卡支持的第一个地方是内核。驱动程序位于设备Device Drivers → Network Device Support → Wireless LAN (non-hamradio)。也有一些非常常见的卡可用的外部驱动程序。要了解更多信息,请查看用户笔记。

加载正确的驱动程序后,接口将出现在/proc/net/wireless中。

安装Wireless Tools

首先,当有很多网络可用时,应用补丁来修复问题:

patch -Np1 -i ../wireless_tools-29-fix_iwlist_scanning-1.patch

使用以下命令安装无线工具:

make

这个包没有附带测试套件。

现在,作为root用户:

make PREFIX=/usr INSTALL_MAN=/usr/share/man install

命令解释

INSTALL_MAN=/usr/share/man: 在/usr/share/man中安装手册页,而不是/usr/man

内容

安装程序: ifrename, iwconfig, iwevent, iwgetid, iwlist, iwpriv, 和 iwspy

安装库: libiw.so

安装目录: None

简要描述

ifrename 基于各种静态标准重命名网络接口。

iwconfig 配置无线网络接口。

iwevent 显示由驱动程序和设置更改生成的无线事件。

iwgetid 报告无线网络的ESSID、NWID或AP/Cell地址。

iwlist 从无线接口获取详细的无线信息。

iwpriv 配置无线网络接口的可选(私有)参数。

iwspy 从特定节点获取无线统计信息。

libiw.so 包含无线程序所需的功能,并为其他程序提供API。

15.13 wpa_supplicant-2.10


简介WPA Supplicant

WPA Supplicant是一个WPA (Wi-Fi Protected Access)客户端和IEEE 802.1X客户端。它通过WPA认证器实现WPA密钥协商,并通过身份验证服务器实现可扩展身份验证协议(EAP)身份验证。此外,它还控制无线局域网驱动程序的漫游和IEEE 802.11认证/关联。这对于连接到密码保护的无线接入点很有用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

WPA Supplicant 依赖

推荐

desktop-file-utils-0.26 (用于运行update-desktop-database) 和 libnl-3.7.0

可选

libxml2-2.10.3, 和 Qt-5.15.8

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/wpa_supplicant

内核配置

在内核配置中启用以下选项以及硬件的特定设备驱动程序,并在必要时重新编译内核:

[*] Networking support  --->                                    [CONFIG_NET]
    [*] Wireless  --->                                          [CONFIG_WIRELESS]
        <*/M> cfg80211 - wireless configuration API             [CONFIG_CFG80211]
        [*]     cfg80211 wireless extensions compatibility      [CONFIG_CFG80211_WEXT]
        <*/M> Generic IEEE 802.11 Networking Stack (mac80211)   [CONFIG_MAC80211]
Device Drivers  --->
    [*] Network device support  --->                            [CONFIG_NETDEVICES]
        [*] Wireless LAN  --->                                  [CONFIG_WLAN]

打开子菜单并选择支持硬件的选项:lspcipciutils-3.9.0可以用来查看硬件配置。

安装WPA Supplicant

首先,您需要为构建过程创建一个初始配置文件。您可以阅读wpa_supplicant/READMEwpa_supplicant/defconfig来了解以下选项以及其他可以使用的选项的解释。通过运行以下命令创建一个应该适用于标准WiFi设置的构建配置文件:

cat > wpa_supplicant/.config << "EOF"
CONFIG_BACKEND=file
CONFIG_CTRL_IFACE=y
CONFIG_DEBUG_FILE=y
CONFIG_DEBUG_SYSLOG=y
CONFIG_DEBUG_SYSLOG_FACILITY=LOG_DAEMON
CONFIG_DRIVER_NL80211=y
CONFIG_DRIVER_WEXT=y
CONFIG_DRIVER_WIRED=y
CONFIG_EAP_GTC=y
CONFIG_EAP_LEAP=y
CONFIG_EAP_MD5=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_OTP=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_TLS=y
CONFIG_EAP_TTLS=y
CONFIG_IEEE8021X_EAPOL=y
CONFIG_IPV6=y
CONFIG_LIBNL32=y
CONFIG_PEERKEY=y
CONFIG_PKCS12=y
CONFIG_READLINE=y
CONFIG_SMARTCARD=y
CONFIG_WPS=y
CFLAGS += -I/usr/include/libnl3
EOF

如果您希望在NetworkManager-1.42.0中使用WPA Supplicant,请确保已安装dbus-1.14.6libxml2-2.10.3,然后通过运行以下命令将以下选项添加到WPA Supplicant构建配置文件中:

cat >> wpa_supplicant/.config << "EOF"
CONFIG_CTRL_IFACE_DBUS=y
CONFIG_CTRL_IFACE_DBUS_NEW=y
CONFIG_CTRL_IFACE_DBUS_INTRO=y
EOF
cd wpa_supplicant &&
make BINDIR=/usr/sbin LIBDIR=/usr/lib

如果您已经安装了Qt-5.15.8并希望构建WPA Supplicant GUI程序,请运行以下命令:

注意

下面的目录名称标记为qt4,但与Qt-5.15.8兼容。

pushd wpa_gui-qt4 &&
qmake wpa_gui.pro &&
make &&
popd

这个包没有附带测试套件。

现在,作为root用户:

install -v -m755 wpa_{cli,passphrase,supplicant} /usr/sbin/ &&
install -v -m644 doc/docbook/wpa_supplicant.conf.5 /usr/share/man/man5/ &&
install -v -m644 doc/docbook/wpa_{cli,passphrase,supplicant}.8 /usr/share/man/man8/

root用户运行如下命令安装systemd支持文件:

install -v -m644 systemd/*.service /usr/lib/systemd/system/

如果您使用D-Bus支持构建了WPA Supplicant,则需要安装D-Bus配置文件。以root用户运行以下命令安装它们:

install -v -m644 dbus/fi.w1.wpa_supplicant1.service \
                 /usr/share/dbus-1/system-services/ &&
install -v -d -m755 /etc/dbus-1/system.d &&
install -v -m644 dbus/dbus-wpa_supplicant.conf \
                 /etc/dbus-1/system.d/wpa_supplicant.conf

此外,启用wpa_supplicant.service,以便systemd可以正确激活D-Bus服务。注意,单连接服务和D-Bus服务不能同时启用。以root用户执行如下命令:

systemctl enable wpa_supplicant

如果您已经构建了WPA Supplicant GUI程序,请以root用户运行以下命令来安装它:

install -v -m755 wpa_gui-qt4/wpa_gui /usr/bin/ &&
install -v -m644 doc/docbook/wpa_gui.8 /usr/share/man/man8/ &&
install -v -m644 wpa_gui-qt4/wpa_gui.desktop /usr/share/applications/ &&
install -v -m644 wpa_gui-qt4/icons/wpa_gui.svg /usr/share/pixmaps/

注意

在使用WPA Supplicant D-Bus接口之前,需要重新启动系统D-Bus守护进程。

注意

这个包将桌面文件安装到/usr/share/applications层次结构中,你可以通过更新/usr/share/applications/mimeinfo.cache来提高系统性能和内存使用。要执行更新,您必须安装desktop-file-utils-0.26,并以root用户执行以下命令:

update-desktop-database -q

配置 wpa_supplicant

配置文件

/etc/wpa_supplicant/wpa_supplicant-*.conf

配置信息

要连接到使用密码的接入点,您需要将预共享密钥放入/etc/wpa_supplicant/wpa_supplicant-`wifi0`.conf中。SSID是接入点/路由器传输用来标识自身的字符串。以root用户执行如下命令:

install -v -dm755 /etc/wpa_supplicant &&
wpa_passphrase SSID SECRET_PASSWORD > /etc/wpa_supplicant/wpa_supplicant-wifi0.conf

/etc/wpa_supplicant/wpa_supplicant-`wifi0`.conf可以保存多个接入点的详细信息。当wpa_supplicant启动时,它将扫描它可以看到的SSID并选择适当的密码进行连接。

如果你想连接到一个没有密码保护的接入点,在/etc/wpa_supplicant/wpa_supplicant-`wifi0`.conf中添加这样的条目。将“Some-SSID”替换为接入点/路由器的SSID。

network={
  ssid="Some-SSID"
  key_mgmt=NONE
}

连接到配置文件中没有的新接入点可以通过命令行或GUI手动完成,但必须通过特权用户完成。为此,在配置文件中添加以下内容:

          ctrl_interface=DIR=/run/wpa_supplicant GROUP=<privileged group>
update_config=1

替换上面的系统组,其中成员具有连接到无线接入点的能力。

您可以使用许多选项来调整连接到每个接入点的方式。它们在源代码树中的wpa_supplicant/wpa_supplicant.conf文件中有详细的描述。

连接到一个接入点

已经安装的systemd单元有三种类型:

它们之间的唯一区别是用于连接的驱动程序(-D选项)。第一个使用默认驱动程序,第二个使用nl80211驱动程序,第三个使用有线驱动程序。

您可以以root用户运行以下命令连接到无线接入点:

systemctl start wpa_supplicant@wlan0

要在引导时连接到无线接入点,只需以root用户运行以下命令,启用适当的wpa_supplicant服务:

systemctl enable wpa_supplicant@wlan0

根据您的设置,您可以用上面列出的任何其他方式替换wpa_supplicant@.service。

要为无线接口分配网络地址,请参阅LFS中的General Network Configuration页面。

内容

安装程序: wpa_gui, wpa_supplicant, wpa_passphrase 和 wpa_cli

安装库: None

安装目录: None

简要描述

wpa_gui 是一个与wpa_supplicant交互的图形前端程序。

wpa_supplicant 是一个可以连接到密码保护的无线接入点的守护进程。

wpa_passphrase 获取一个SSID和一个密码,并生成一个wpa_supplicant可以理解的简单配置。

wpa_cli 是一个命令行接口,用于控制正在运行的wpa_supplicant守护进程。

上一页      主目录      下一页