学习 Linux,302(混合环境): Winbind
2013-10-18 16:25
302 查看
http://www.ibm.com/developerworks/cn/linux/l-lpic3-313-3/index.html
使用 Windows 域控制器进行 Linux 帐户管理
如果您的网络包括一个域控制器(一台 Windows 计算机或一台 Samba 服务器),那么您可以使用它的用户数据库,或者在 Linux 计算机的本地帐户数据库中维护本地登录用户。这样做要求使用一个名为
Winbind 的工具集。对于没有运行 Samba 来共享文件或打印机的 Linux 计算机来说,此工具集十分方便;具有 Windows 域帐户的用户可以从控制台登录,或者使用 SSH 访问仅限于 Linux 的功能,使用 POP 或 IMAP 邮件服务器进行 Windows 域身份验证,等等。
查看本系列更多内容
|
![](http://dw1.s81c.com/developerworks/i/v17/dw-cmts-arrow.png)
评论:
Roderick W. Smith, 顾问兼作家
2011 年 12 月 27 日
![](http://www.ibm.com/i/c.gif)
内容
Linux Professional Institute Certification 级别 3 (LPIC-3) 考试。
参见我们的
学习 Linux, 302(混合环境):LPI-302 路线图 查看本系列中各篇文章的介绍和链接。路线图目前仍在更新中,目前反映的最新内容是 LPIC-3 考试的
最新目标(2011 年 3 月)。在完成每篇文章之后,我们都会将其添加到路线图中。
安装 Winbind
配置 Winbind
本文帮助您准备 Linux Professional Institute (LPI) 的混合环境专业考试 (302) 的主题 312 下的目标 313.3。该目标的权值为 2。
回页首
Linux 系统管理知识。
要通过 LPIC 级别 3 (LPIC-3) 认证,您必须通过前两个一级考试 (101 和 102),两个二级考试(201 和 202),以及 LPIC-3 核心考试 (301)。到达这个级别后,才能参加一些可选专业考试,比如
LPI-302。
为了最有效地利用本系列中的文章,您应该具备高级 Linux 知识,同时还需要准备一个 Linux 系统,用它来练习本文介绍的命令。具体地讲,本文假设您拥有 Linux 命令行功能的应用知识,并且对
学习 Linux,302(混合环境):概念 中介绍的 Samba 的用途有基本了解,并了解 Samba 配置的一些基础知识,包括配置 Samba 以使用域控制器。您应该熟悉 smb.conf 配置文件的总体结构。您还应该了解服务器通常如何运行,包括使用 System V (SysV) 启动脚本和超级服务器。实际上,您必须具有访问 Windows 域的权限才能使用此处展示的信息。(您可以使用由 Samba 管理的域,或者是由运行 Windows Server 操作系统的计算机管理的域。)
回页首
developerWorks RSS 提要。选择 Linux 作为专区,Articles 作为类型,输入
如
学习 Linux,302(混合环境):Samba 角色 和
学习 Linux,302(混合环境):域控制 所述,Windows 网络通常包括一个域控制器,这是一台管理网络中所有 Windows 计算机的身份验证的计算机。这种配置可极大地简化具有许多用户和计算机的操作,因为不需要在多台计算机上复制(和维护)用户帐户信息。相反,所有 Windows 帐户信息都集中在一台计算机上,这支持管理员在一个位置管理帐户,并支持用户一次更改所有域成员计算机的密码。
您可以通过设置多个选项来将 Samba 服务器配置为域的成员服务器。加入域的常见全局选项集可能如下所示:
如果域控制器支持 Microsoft Active Directory 域服务功能,那么您可以使用
学习 Linux,302(混合环境):Samba 角色,以获得如何将 Samba 服务器配置为域成员的详细描述。
所有这些操作对 Samba 服务器来说都很好,但是,当然 Samba 仅是可以在 Linux 计算机上运行的一种服务器。其他服务器(和本地登录服务器)可能是域控制器提供的主要益处。例如,如果网络上的一些计算机作为 Linux 工作站进行工作,或者如果您在 Linux 计算机上运行邮局协议 (POP) 电子邮件服务器,那么您可能想要它们使用域控制器进行身份验证。这就是 Winbind 发挥作用的地方;它提供了 “粘合剂”,使得 Linux 能够使用 Windows 域的帐户完成非 Samba 身份验证任务。
在配置 Winbind 之前,您应该注意其局限性。由于 Microsoft 设计其域身份验证过程时考虑的是 Windows 的需求,因此它缺少 Linux 所需的帐户方面的一些功能,比如 UNIX®-style用户 ID (UID) 和组 ID (GID) 值。相反,Windows 域使用安全标识,它们与 Linux UID 和 GID 无法直接对应。同样地,域控制器不存储 UNIX/Linux 主目录信息。因此,Winbind 必须在本地创建一些此类 Linux 信息。这适用于大多数用途,但是这意味着使用
Winbind 的两台 Linux 计算机可轻松地位同一用户创建不同的 UID 和 GID。如果这些计算机使用网络文件系统 (NFS) 共享文件,那么这一事实可能具有负面影响,这取决于服务器之间的 UID 和 GID 对应关系。在这种情况下,这样做可能会更好,即为网络配置轻型目录访问协议 (LDAP) 服务器,并针对 Linux 帐户和 Windows 域帐户使用其帐户数据库。
Winbind 取决于几个不同的元素:
smb.conf 中特定于 Winbind 的选项
Pluggable Authentication Modules (PAM) 子系统的配置选项,这是现代 Linux 安装的标准部件
Net Service Switch (NSS) 子系统的 配置选项,这是现代 Linux 安装的标准部件
因此,配置 Winbind 要求修改所有这些配置。您不需要运行主 Samba 服务器程序(
回页首
学习 Linux,302(混合环境):Samba 角色。然后,您必须设置与 Winbind 相关的各种 smb.conf 选项。
MYDOMAIN\rexx 缩写为 rexx。如果网络包含多个域,则使用默认值
清单 1,它显示一组 smb.conf 选项,演示所有前面的选项。
清单 1. 演示 Winbind 配置的示例 smb.conf 文件
当然,您应该根据自己的需要自定义这些选项。例如,如前所述,the default value for
回页首
PAM,所以在一个版本上有效的修改在另一个版本上未必有效。
PAM 是一个复杂的系统,并且由于 PAM 配置中不同版本之间的差别,在此处进行完整的描述是不可能的。(参考资料 部分提供了其他 PAM 文档的链接。)您可以通过 /etc/pam.d 中的文件配置 PAM。此目录下的大部分文件描述 PAM 在具体的程序中如何工作,比如文本模式的
stackname 是四个 PAM 堆栈名的一个名称。(每个堆栈定义 PAM 提供的一种具体服务类型。)
典型的 PAM 堆栈如
清单 2 所示,清单 2 是 Ubuntu 版本 10.10 系统的 /etc/pam.d/common-auth 文件。
清单 2. 一个示例 PAM 堆栈
不幸的是,这一特定语法有些含义模糊。
要将此配置修改为包含 Winbind,您必须添加对
清单 3 类似,突出显示了更改。
清单 3. 提供 Winbind 支持的 PAM 堆栈
除了 Ubuntu(本示例使用的版本)之外的版本都需要对 PAM 进行其他更改,但是在进行此类更改之前您必须完全了解初始配置。还要注意,您必须修改所有四个堆栈:—
在安装 Winbind 包时,一些版本会对其 PAM 配置进行相应的更改。因此,您可能根本不需要进行任何更改。
回页首
一些系统在这些行使用
回页首
警告:如果您的系统正在运行 Name Service Cache Daemon (NSCD),请在运行 Winbind 守护进程之前终止守护进程。NSCD 会影响 Winbind 操作。
如果您想要在每次启动系统时都运行守护进程,请确保针对此任务正确配置了其 SysV 启动脚本。您可以使用
在 Winbind 运行时,
此示例显示了三个用户。您还可以键入
注意:
当然,测试 Winbind 是否正常工作的最终测试是,它是否可对配置为在 PAM 中使用的服务进行用户身份验证。因此,您应该使用在 Windows 域中的帐户而不是本地计算机上的帐户来测试此能力。如果您没有成功,请尝试检查客户端和 Windows 域控制器上的日志文件。记住,如果您设置了
使用 Windows 域控制器进行 Linux 帐户管理
如果您的网络包括一个域控制器(一台 Windows 计算机或一台 Samba 服务器),那么您可以使用它的用户数据库,或者在 Linux 计算机的本地帐户数据库中维护本地登录用户。这样做要求使用一个名为
Winbind 的工具集。对于没有运行 Samba 来共享文件或打印机的 Linux 计算机来说,此工具集十分方便;具有 Windows 域帐户的用户可以从控制台登录,或者使用 SSH 访问仅限于 Linux 的功能,使用 POP 或 IMAP 邮件服务器进行 Windows 域身份验证,等等。
查看本系列更多内容
|
![](http://dw1.s81c.com/developerworks/i/v17/dw-cmts-arrow.png)
评论:
Roderick W. Smith, 顾问兼作家
2011 年 12 月 27 日
![](http://www.ibm.com/i/c.gif)
内容
关于本系列
本系列文章帮助您了解 Linux 系统管理任务。您可以使用本系列文章的资料准备Linux Professional Institute Certification 级别 3 (LPIC-3) 考试。
参见我们的
学习 Linux, 302(混合环境):LPI-302 路线图 查看本系列中各篇文章的介绍和链接。路线图目前仍在更新中,目前反映的最新内容是 LPIC-3 考试的
最新目标(2011 年 3 月)。在完成每篇文章之后,我们都会将其添加到路线图中。
概述
在本文中,将了解这些概念:安装 Winbind
配置 Winbind
本文帮助您准备 Linux Professional Institute (LPI) 的混合环境专业考试 (302) 的主题 312 下的目标 313.3。该目标的权值为 2。
回页首
先决条件
关于选修的 LPI-302 考试
Linux Professional Institute Certification (LPIC) 与其他许多认证一样,Linux Professional Institute Certification (LPIC) 提供多个不同级别,每个级别都比前一个级别要求更多知识和经验。LPI-302 考试是 LPIC 层级的第三级中的一个可选专业考试,要求具有高级Linux 系统管理知识。
要通过 LPIC 级别 3 (LPIC-3) 认证,您必须通过前两个一级考试 (101 和 102),两个二级考试(201 和 202),以及 LPIC-3 核心考试 (301)。到达这个级别后,才能参加一些可选专业考试,比如
LPI-302。
为了最有效地利用本系列中的文章,您应该具备高级 Linux 知识,同时还需要准备一个 Linux 系统,用它来练习本文介绍的命令。具体地讲,本文假设您拥有 Linux 命令行功能的应用知识,并且对
学习 Linux,302(混合环境):概念 中介绍的 Samba 的用途有基本了解,并了解 Samba 配置的一些基础知识,包括配置 Samba 以使用域控制器。您应该熟悉 smb.conf 配置文件的总体结构。您还应该了解服务器通常如何运行,包括使用 System V (SysV) 启动脚本和超级服务器。实际上,您必须具有访问 Windows 域的权限才能使用此处展示的信息。(您可以使用由 Samba 管理的域,或者是由运行 Windows Server 操作系统的计算机管理的域。)
回页首
了解 Winbind
构建您自己的提要
您可以构建一个自定义 RSS、Atom 或 HTML 提要,以便在我们添加新文章或更新内容时收到通知。访问developerWorks RSS 提要。选择 Linux 作为专区,Articles 作为类型,输入
Linux Professional Institute作为关键字。然后选择您想要的提要类型。
如
学习 Linux,302(混合环境):Samba 角色 和
学习 Linux,302(混合环境):域控制 所述,Windows 网络通常包括一个域控制器,这是一台管理网络中所有 Windows 计算机的身份验证的计算机。这种配置可极大地简化具有许多用户和计算机的操作,因为不需要在多台计算机上复制(和维护)用户帐户信息。相反,所有 Windows 帐户信息都集中在一台计算机上,这支持管理员在一个位置管理帐户,并支持用户一次更改所有域成员计算机的密码。
您可以通过设置多个选项来将 Samba 服务器配置为域的成员服务器。加入域的常见全局选项集可能如下所示:
security = Domain password server = CONTROL domain logons = No encrypt passwords = Yes
如果域控制器支持 Microsoft Active Directory 域服务功能,那么您可以使用
security = ADS而不是
security = Domain。您还必须输入
net join member -U adminuser,以便让 Samba 服务器加入域中,其中
adminuser是域的管理帐户。请参阅
学习 Linux,302(混合环境):Samba 角色,以获得如何将 Samba 服务器配置为域成员的详细描述。
所有这些操作对 Samba 服务器来说都很好,但是,当然 Samba 仅是可以在 Linux 计算机上运行的一种服务器。其他服务器(和本地登录服务器)可能是域控制器提供的主要益处。例如,如果网络上的一些计算机作为 Linux 工作站进行工作,或者如果您在 Linux 计算机上运行邮局协议 (POP) 电子邮件服务器,那么您可能想要它们使用域控制器进行身份验证。这就是 Winbind 发挥作用的地方;它提供了 “粘合剂”,使得 Linux 能够使用 Windows 域的帐户完成非 Samba 身份验证任务。
在配置 Winbind 之前,您应该注意其局限性。由于 Microsoft 设计其域身份验证过程时考虑的是 Windows 的需求,因此它缺少 Linux 所需的帐户方面的一些功能,比如 UNIX®-style用户 ID (UID) 和组 ID (GID) 值。相反,Windows 域使用安全标识,它们与 Linux UID 和 GID 无法直接对应。同样地,域控制器不存储 UNIX/Linux 主目录信息。因此,Winbind 必须在本地创建一些此类 Linux 信息。这适用于大多数用途,但是这意味着使用
Winbind 的两台 Linux 计算机可轻松地位同一用户创建不同的 UID 和 GID。如果这些计算机使用网络文件系统 (NFS) 共享文件,那么这一事实可能具有负面影响,这取决于服务器之间的 UID 和 GID 对应关系。在这种情况下,这样做可能会更好,即为网络配置轻型目录访问协议 (LDAP) 服务器,并针对 Linux 帐户和 Windows 域帐户使用其帐户数据库。
Winbind 取决于几个不同的元素:
smb.conf 中特定于 Winbind 的选项
Pluggable Authentication Modules (PAM) 子系统的配置选项,这是现代 Linux 安装的标准部件
Net Service Switch (NSS) 子系统的 配置选项,这是现代 Linux 安装的标准部件
winbindd服务器程序
因此,配置 Winbind 要求修改所有这些配置。您不需要运行主 Samba 服务器程序(
smbd和
nmbd)来使用 Winbind,但是,您必须安装该服务器才能获得所有必需的支持文件。您可能需要安装一个单独的 Winbind 包,通常称为
winbind或
samba-winbind。您可能还需要安装一个名为
samba-winbind-clients的包。一定要确保最终安装包括 /lib/security/pam_winbind.so 和 /lib/libnss_winbind.so.2 文件。
回页首
在 smb.conf 中设置 Winbind 选项
要设置 Winbind,您必须首先将计算机配置为加入域,如前所述,更多信息请参见学习 Linux,302(混合环境):Samba 角色。然后,您必须设置与 Winbind 相关的各种 smb.conf 选项。
了解 Winbind 选项
需要设置的 smb.conf 选项包括:winbind separator。在域中,Windows 用户名包含一个用户名和一个域名,在它们之间有一个分隔符。此选项设置该字符。默认是反斜杠(
\),加号(
+)是常见的替代分隔符。
winbind cache time。Winbind 缓存指定时间段的身份验证数据,默认设置为 300 秒(5 分钟)。在测试 Winbind 配置时您可能想要降低此值。
template shell。使用此选项设置用户的默认 shell。默认值是
/bin/false,这适用于不支持 shell 访问的系统;但是,如果您想让用户能够从本地登录或者通过 Secure Shell (SSH) 等服务器登录,则应该将此选项设置为 /bin/bash 或其他一些合法的 Linux shell。
template homedir。您必须为用户设置默认主目录。您通常会使用一个或多个 Samba 变量,比如用户名的
%U和域名的
%D。此参数的默认值是
/home/%D/%U。
winbind enum users。此 Boolean 选项启用或禁用某些系统调用的支持,支持程序枚举用户。默认值是
Yes,但是将它设置为
No可改进性能,也会避免一些程序(比如
finger)的古怪行为。
winbind enum groups。此选项的工作方式与
winbind enum users非常类似,但它适用于组而不是用户。
winbind use default domain。如果您将此选项设置为
Yes,Winbind 会删除大多数操作的用户名的域组件,这通常是想要的效果,因为它会缩写用户名—例如,将
MYDOMAIN\rexx 缩写为 rexx。如果网络包含多个域,则使用默认值
No很有意义。
idmap uid。您应该使用此选项指定一组 UID,使用短划线作为 (
-) 分隔符,如
10000-20000所示。确保您使用的范围与您系统上使用的本地定义的 UID 不重叠。
idmap gid。此选项和
idmap uid一样,但它设置一组 GID。
检查示例配置
例如,考虑清单 1,它显示一组 smb.conf 选项,演示所有前面的选项。
清单 1. 演示 Winbind 配置的示例 smb.conf 文件
winbind separator = + winbind cache time = 60 template shell = /bin/bash template homedir = /home/%U winbind enum users = Yes winbind enum groups = Yes winbind use default domain = Yes idmap uid = 10000-20000 idmap gid = 10000-20000
当然,您应该根据自己的需要自定义这些选项。例如,如前所述,the default value for
template shell的默认值可能适用于不提供登录 shell 访问的服务器,比如电子邮件服务器或 FTP 服务器。
回页首
配置 PAM
配置了 smb.conf 后,您必须处理 PAM 配置。学习 Linux,302(混合环境):身份验证和授权 介绍了 PAM,但是由于 Winbind 的目的,您想要将 Winbind 作为非 Samba 工具的身份验证方法进行添加,而不是使用 PAM 对 Samba 用户进行身份验证。这样做可能有些困难,因为不同版本以不同的方式配置PAM,所以在一个版本上有效的修改在另一个版本上未必有效。
了解 PAM
PAM 是一个库集合,可供需要身份验证的程序使用,比如处理文本模式登录的login程序、处理图形用户界面登录的 X Display Manager 程序或 POP 电子邮件服务器程序。要提供灵活的系统,您可以使用配置文件配置 PAM,如前所述。
PAM 是一个复杂的系统,并且由于 PAM 配置中不同版本之间的差别,在此处进行完整的描述是不可能的。(参考资料 部分提供了其他 PAM 文档的链接。)您可以通过 /etc/pam.d 中的文件配置 PAM。此目录下的大部分文件描述 PAM 在具体的程序中如何工作,比如文本模式的
login程序或 SSH 服务器计划。尽管大多数版本提供全局 PAM 配置文件,比如 system-auth 或 common-stackname,其中
stackname 是四个 PAM 堆栈名的一个名称。(每个堆栈定义 PAM 提供的一种具体服务类型。)
修改 PAM 堆栈
配置 PAM 时,您必须决定您想进行的更改是要影响所有登录服务还是几个登录服务。(检查 /etc/pam.d 中的文件来查看系统上安装的登录服务类型,然后询问自己是所有还是仅一些登录服务需要使用 Winbind。)如果您只想修改一或两个服务,比如一台 POP 服务器,同时又不支持对其他服务使用 Winbind 身份验证,比如一台 FTP 服务器,则只需修改想要更改的服务文件即可。如果您想要更改影响所有服务,可编辑通用文件,比如 system-auth。典型的 PAM 堆栈如
清单 2 所示,清单 2 是 Ubuntu 版本 10.10 系统的 /etc/pam.d/common-auth 文件。
清单 2. 一个示例 PAM 堆栈
auth [success=1 default=ignore] pam_unix.so nullok_secure auth requisite pam_deny.so auth required pam_permit.so
不幸的是,这一特定语法有些含义模糊。
pam_unix.so模块使用本地密码数据库文件管理身份验证,此行的
success=1选项表示当此模块成功返回时 PAM 会跳过此行。因此,如果
pam_unix.so成功并且登录成功,会跳过
pam_deny.so(总是返回身份验证失败代码)。
要将此配置修改为包含 Winbind,您必须添加对
pam_winbind.so模块的引用,并将行号更改为跳过
pam_unix.so行。结果与
清单 3 类似,突出显示了更改。
清单 3. 提供 Winbind 支持的 PAM 堆栈
auth [success=2 default=ignore] pam_unix.so nullok_secure auth [success=1 default=ignore] pam_winbind.so cached_login try_first_pass auth requisite pam_deny.so auth required pam_permit.so
除了 Ubuntu(本示例使用的版本)之外的版本都需要对 PAM 进行其他更改,但是在进行此类更改之前您必须完全了解初始配置。还要注意,您必须修改所有四个堆栈:—
auth、
account、
session和
password。这些堆栈可能在一个文件中出现也可能分散在多个文件中。如果您想要修改单个服务,则必须在您想要修改的所有服务配置文件中修改所有四个堆栈。
在安装 Winbind 包时,一些版本会对其 PAM 配置进行相应的更改。因此,您可能根本不需要进行任何更改。
回页首
配置 NSS
第二个您必须进行调整以支持 Winbind 登录的服务是 NSS。幸运的是,与 PAM 配置相比,NSS 配置相对简单。您必须编辑 /etc/nsswitch.conf 文件并更改下列三行内容:passwd: compat group: compat shadow: compat
一些系统在这些行使用
files而不是
compat,并且您可能在这些行中发现其他项。这些行告诉 NSS 为其任务使用本地文件,这为想要使用它们的程序提供了用户和组列表。要将 Winbind 添加到系统,请为下列每一行添加一个对 Winbind 的引用:
passwd: compat winbind group: compat winbind shadow: compat winbind
回页首
运行 Winbind
更改完成之后,您可以最终运行并测试 Winbind。通常您可以使用 SysV 启动脚本来启动 Winbind,如下所述:# /etc/init.d/winbind start
警告:如果您的系统正在运行 Name Service Cache Daemon (NSCD),请在运行 Winbind 守护进程之前终止守护进程。NSCD 会影响 Winbind 操作。
如果您想要在每次启动系统时都运行守护进程,请确保针对此任务正确配置了其 SysV 启动脚本。您可以使用
chkconfig、
ntsysv、
update-rc.d或其他工具来进行这一操作。
在 Winbind 运行时,
wbinfo程序支持您测试它。
-u选项返回一个用户列表:
$ wbinfo -u grogers fastaire mikhail
此示例显示了三个用户。您还可以键入
getent passwd来获取一个用户列表;从本质上讲,这等同于 /etc/passwd 文件。此命令返回由所有方法定义的用户,包括本地帐户、Winbind 和其他可能正在使用的服务,比如 LDAP 服务器。
注意:
wbinfo -u和
getent passwd命令有时无法返回域用户的而完整列表,尤其是如果您设置了
winbind enum users = No。因此,如果这些命令不起作用,可测试登录能力。
当然,测试 Winbind 是否正常工作的最终测试是,它是否可对配置为在 PAM 中使用的服务进行用户身份验证。因此,您应该使用在 Windows 域中的帐户而不是本地计算机上的帐户来测试此能力。如果您没有成功,请尝试检查客户端和 Windows 域控制器上的日志文件。记住,如果您设置了
inbind use default domain = No,则本地用户名的格式为 DOMAIN\username(或类似的格式,如果您设置
winbind separator,则使用不同的分隔符。)
相关文章推荐
- 学习 Linux,302(混合环境): 概念
- 学习 Linux,302(混合环境): Samba 角色
- 学习 Linux,302(混合环境): 与 Active Directory 集成
- 在tinycolinux上编译jupyter和rootcling组建混合cpp,python学习环境
- 《华清远见学习手记》之 嵌入式Linux开发环境的建立
- linux 环境变量设置、指令学习、日常用到的linux知识
- Cocos2d-x 学习笔记:linux环境下开发
- 【Linux学习】配置环境:实现【VirtualBox + ubuntu】+【开启ssh服务】+【putty远程连接到虚拟机】
- ESP8266学习之搭建Linux开发环境
- 用gdb来学习c语言(linux环境下)
- 【嵌入式Linux学习七步曲之第二篇 ARM+Linux开发环境】在AT91RM9200上通过nfs调试linux程序
- 【linux高级环境编程学习笔记四】消息队列进程通信
- LINUX系统学习笔记管道符和作业控制 ,shell变量 , 环境变量配置文件
- Linux 学习一 搭建环境系列之三 linux搭建django 以及搭建django时遇到的各种问题
- VMWare虚拟机安装CentOS 7 Linux及Hadoop与Eclipse学习环境(2-伪分布模式hadoop环境)
- deepin linux 15.5 + 小米笔记本pro 下的深度学习环境tensorflow-gpu 1.4版本搭建过程
- ARM Linux学习,从宿主机传程序到ARM——环境搭建1
- 流媒体技术学习笔记之(十二)Linux(Ubuntu)环境运行EasyDarwin
- GTK+学习:概述 、搭建环境(Windows,Linux)、开发 收藏
- Linux学习总结(十)-文件复制及查看, 环境变量