手把手带你玩转 openEuler | openEuler 的使用
本文章分为四部分,教你怎么使用 openEuler,学完之后你可以了解到 openEuler 的基本配置、软件包的使用、基本语法以及服务搭建:
• 第 1 部分:openEuler 基本配置(网络配置、查看系统信息、管理用户和用户组)
• 第 2 部分:openEuler 的软件包管理(使用 DNF 管理软件包)
• 第 3 部分:systemd 基本用法(管理服务)
• 第 4 部分:服务搭建(搭建服务)
文档指导
openEuler 官网文档:管理员指南
相关文档说明可以查看 管理员指南
1. openEuler 基本配置
1.1 openEuler 基本配置之网络配置
本部分教会大家怎么去配置 openEuler 的静态 ip。如果您想了解更多的网络配置,请参考 openEuler 的网络配置文档[2])。
这里我们使用第三方的终端软件 ssh 登录之后进行操作,这样的话终端软件的优化是比较好的,使用起来比较方便。
由于 openEuler 默认的 ip 是 DHCP 动态分配的,这个 ip 可能会变,有些需求需要 ip 是固定的,这里就需要我们将动态 ip 改成静态 ip 了,配置方法如下:
• 获取 ip:ip a
• 通过终端软件 ssh 登录机器操作:ssh root@ip 配置静态 ip:修改 /etc/sysconfig/network-scripts/ifcfg-ens33
配置如下:
设置好静态 ip 后,现在还没发生效,需要重启一下网络服务,命令行:
systemctl restart NetworkManager
1.2 openEuler 基本配置之用户管理
在 Linux 中,每个普通用户都有一个账户,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,它们具有特殊的意义,其中最重要的是管理员账户,默认用户名是 root。同时 Linux 也提供了用户组,使每一个用户至少属于一个组,从而便于权限管理。
用户和用户组管理是系统安全管理的重要组成部分,下面介绍 openEuler 提供的用户管理和组管理命令,以及为普通用户分配特权的方法。
1.2.1 管理用户
常用的 管理用户 的命令如下:
• useradd name:增加用户—在 root 权限下,通过 useradd 命令可以为系统添加新用户信息
• passwd name:修改用户密码—使用 passwd 命令修改用户的密码,没有设置密码的新账号不能登录系统。修改用户密码时需要满足密码复杂度要求,密码的复杂度的要求如下:
◊ 口令长度至少 8 个字符。
◊ 口令至少包含大写字母、小写字母、数字和特殊字符中的任意 3 种。
◊ 口令不能和账号一样。
◊ 口令不能使用字典词汇。
• userdel name:删除用户—在 root 权限下,使用 userdel 命令可删除现有用户。如果想同时删除该用户的主目录以及其中所有内容,要使用-r 参数递归删除
• id name:使用 id 命令查看新建的用户信息
• usermod -s newshell_path username:修改用户 shell 设置—用户也可以使用 usermod 命令修改 shell 信息,在 root 权限下执行如下命令,其中 _new_shell_path 为目标 shell 路径,username 为要修改用户的用户名
• usermod -d newhome_directory username:修改主目录—修改主目录,可以在 root 权限下执行如下命令,其中 _new_home_directory 为已创建的目标主目录的路径,username 为要修改用户的用户名
• usermod -u UID username:修改用户 ID—修改用户 ID,在 root 权限下执行如下命令,其中 UID 代表目标用户 ID,username 代表用户名
• usermod -e MM/DD/YY username:修改账户有效期—如果使用了影子口令,则可以在 root 权限下,执行如下命令来修改一个账号的有效期,其中 MM 代表月份,DD 代表某天,YY 代表年份,username 代表用户名
用户信息文件
下面介绍与用户账号信息有关的文件:
• /etc/passwd:用户账号信息文件。
• /etc/shadow:用户账号信息加密文件。
• /etc/group:组信息文件。
• /etc/default/useradd:定义默认设置文件。
• /etc/login.defs:系统广义设置文件。
• /etc/skel:默认的初始配置文件目录。
1.2.2 管理用户组
常用的 管理用户组 的命令如下:
• groupadd name:增加用户组—在 root 权限下,通过 groupadd 命令可以为系统添加新用户组信息,其中 options 为相关参数, groupname 为用户组名称
• groupmod -g GID groupname:修改用户组 ID—修改用户组 ID,在 root 权限下执行如下命令,其中 GID 代表目标用户组 ID, groupname 代表用户组
• groupmod -n newgroupname oldgroupname:修改用户组名称—修改用户组名,在 root 权限下执行如下命令,其中 newgroupname 代表新用户组名, oldgroupname 代表已经存在的待修改的用户组名
• groupdel groupname:删除用户组—在 root 权限下,使用 groupdel 命令可删除用户组。groupdel 不能直接删除用户的主组,如果需要强制删除用户主组,请使用 groupdel -f groupname 命令
• gpasswd -a username groupname:将用户加入用户组—将用户 username 加入用户组 groupname
• gpasswd -d username groupname:从用户组中移除用户—将用户 username从 groupname 用户组中移除
• newgrp newgroupname:切换用户组—一个用户同时属于多个用户组时,则在用户登录后,使用 newgrp 命令可以切换到其他用户组,以便具有其他用户组的权限
用户组信息文件
下面介绍与用户组账号信息有关的文件:
• /etc/gshadow:用户组信息加密文件。
• /etc/group:组信息文件。
• /etc/login.defs:系统广义设置文件。
sudo:允许普通用户执行管理员账户才能执行的命令
sudo ls /root
如果该用户在 root 下没有权限,需要在 root 下给该用户添加权限
vi /etc/sudoers visudo
User host=(run as user) command
1.3 openEuler 基础配置之系统信息
系统信息查看 官方文档[3]
想要了解系统的其他信息,比如系统信息、CPU、内存、磁盘、系统资源实时信息、版本信息,这里有几个常用的命令行提供给大家:
• 查看系统信息:cat /etc/os-release
• 查看 CPU 信息:lscpu(Lx cache 非单个 cup 值)
• 查看内存信息:free
• 查看磁盘信息:fdisk -l
• 查看系统资源实时信息:top
• 查看版本信息:cat /etc/openEuler-latest
系统语言及键盘 官方文档[4]
大家可以通过 localectl 修改系统的语言环境,对应的参数设置保存在/etc/locale.conf 文件中。这些参数会在系统启动过程中被 systemd 的守护进程读取。
也可以通过 localectl 修改系统的键盘设置,对应的参数设置保存在/etc/locale.conf 文件中。这些参数,会在系统启动的早期被 systemd 的守护进程读取。
给大家提供一些系统语言和键盘的命令行:
• 当前环境语言:localectl status
• 可用环境语言/键盘:localectl list-locales/list-keymaps
• 设置环境语言/键盘:localectl set-locale/set-keymap LANG=zh_CN.UTF-8/cn 更改语言环境之后,需要重新登录 ,或者 root 权限下执行source /etc/locale.conf 刷新配置文件 ,使其生效
系统日期和时间 官方文档[5]
有些时候我们需要修改系统的日期、时间、时区,有哪些调整的方式呢,下面提供的很多命令行,我们可以通过使用 timedatectl、date、hwclock 命令来设置系统的日期、时间和时区等。
• 当前系统时间:timedatectl
• 时钟自动同步:timedatectl set-ntp yes/no
• 修改系统日期:timedatectl set-time YYYY-MM-DD
• 修改系统时间:timedatectl set-time HH:MM:SS
• 显示可用时区:timedatectl list-timezones
• 修改系统时区:timedatectl set-timezone time_zone
• 显示当前的日期和本地时间:date
• 显示当前的日期和 UTC 时间:date --utc/--u
• 自定义 date 命令的输出:date +"%Y-%m-%d %H:%M:%S"
• 修改时间:date --set HH:MM:SS
• 修改日期:date --set YYYY-MM-DD
• 硬件日期时间 :hwclock
• 设置硬件日期和时间:hwclock --set --date "dd mm yyyy HH:MM"
常用技巧
这里有个小 Tips 分享给大家,ssh 登录一段时间后出现过期推出的情况,使得大家比较烦恼,该如何解决呢?
简单的给大家提供了两种方式:
• 第一种是 TMOUT 环境变量不为 0 导致的 ssh 登出,我们可以在/etc/profile 内加入 export TMOUT=0,source /etc/profile 来解决。
• 我们可以在 /etc/profile.d 加入要执行的脚本文件,登录时自动触发该操作,这样也可以避免 ssh 经常登出的情况。
2. openEuler 软件包管理
软件包管理官方文档[6]
给大家介绍一下,用来管理 openEuler 的软件包的工具 DNF。
DNF 是一款 Linux 软件包管理工具,用于管理 RPM 软件包。DNF 可以查询软件包信息,从指定软件库获取软件包,自动处理依赖关系以安装或卸载软件包,以及更新系统到最新可用版本。
简单的小说明:- DNF 与 YUM 完全兼容,提供了 YUM 兼容的命令行以及为扩展和插件提供的 API,所以在 openEuler 使用命令行的工具中,可以使用 DNF 也可以使用 YUM,根据自己的喜欢来用。- 后面主要使用 YUM 来给大家进行演示,在使用 YUM 的时候需要管理员权限,所有命令需要在管理员权限下执行。
2.1 openEuler 源配置 YUM
给大家提供两种下载软件的方式:
1. 利用本地 iso 挂载源,当作光驱一样(离线),这种方式是比较有限的,需要离线使用。mount iso /mnt 该源的配置文件:编辑/etc/yum.repos.d/xxx.repo(/etc/dnf/dnf.cong)
2. 利用 openEuler 官方提供的源(在线),这种方式是比较全的,比较新的,里面有许多源地址可供选择,但该方式需要在线使用。源网址[7]该源的配置文件:编辑/etc/yum.repos.d/xxx.repo(/etc/dnf/dnf.conf)
2.2 openEuler update 源配置
openEuler update 源:openEuler 升级软件包的 repo 源,用于已发布版本的 bug、CVE 的修复和部分软件因特性增强后的更新发布。提供在线下载和版本内软件升级功能。目录下区分 AArch64 架构和 x86 架构。
安全公告里的很多 CVE 漏洞是实时修复的,修复完之后,修复的包大家可以通过 yum update 命令将系统上所有的包进行升级。
2.3 openEuler 使用 dnf/yum 下载软件包
下载/安装/更新软件包时(yum 和 dnf 本质相同),大家可以根据自己使用习惯使用相应的终端命令。下表就是常用的 yum 命令行,查看系统包的相关内容。
注意:有时候在包升级过程中,部分包的升级会有一些冲突,你需要在 update 命令最后面使用 --allowerasing 先移除之前的包,然后再升级该包。
2.3 openEuler 使用 rpm 管理本地软件包
除了 dnf 和 yum 也可以使用 rpm 针对本地的管家包进行管理。rpm 与 yum 的区别是 rpm 不会从固定的地方去取,它是先将所有的包下载下来再去安装,使用起来比较复杂,建议大家使用 yum。下面也提供了一些 rpm 对软件包操作的命令行,感兴趣的同学可以试一试。
3. systemd 基本用法
官方文档[8]
systemd 是在 Linux 下,与 SysV 和 LSB 初始化脚本兼容的系统和服务管理器。systemd 使用 socket 和 D-Bus 来开启服务,提供基于守护进程的按需启动策略,支持快照和系统状态恢复,维护挂载和自挂载点,实现了各服务间基于从属关系的一个更为精细的逻辑控制,拥有更高的并行性能。
systemd 有哪些优点
并行启动能力强(SysVinit 是串行启动,UpStart 有依赖关系的是串行启动)
按需启动,只有真正被请求时才启动(SysVinit 将可能用到的进程全部启动)
利用内核提供的 cgroup 确保跟踪所有子进程
systemd 对 SysV 和 LSB 兼容
systemd 作为 1 号进程
systemd 取代了 initd 成为了系统的第一个进程,我们称之为 1 号进程。
内核空间初始化完成后,加载 init(/sbin/init)程序拉起 1 号进程;1 号进程通过 systemd 目标(target)拉起必须的进程,实现初始化。
下图命令是指向了 systemd 文件:
启动级别
systemd 目前有 7 个启动级别,下表中详细的说明了每个级别的作用及命令行。
以下命令可以查看我们运行了哪些级别/更改默认的启动级别/当前立马更改级别
systemctl get-default/set-default/isolate name.target
单元文件
systemd 开启和监督整个系统是基于 unit 的概念。unit 是由一个与配置文件对应的名字和类型组成的(例如:avahi.service unit 有一个具有相同名字的配置文件,是守护进程 Avahi 的一个封装单元)。所有的可用 systemd unit 类型路径如下:
服务文件介绍
常用的 systemd 服务文件格式固定:[Unit]:服务简单描述及文档,以及依赖关系 [Service]:定义服务如何启动当前的服务 [Install]:定义如何安装文件,即如何做到开机启动
常见用法
systemctl start/restart/stop/reload/status/enable/disable/daemon-reload name.unit
Systemd 命令和 sysvinit 命令的对照表
systemd 提供 systemctl 命令与 sysvinit 命令的功能类似。当前版本中依然兼容 service 和 chkconfig 命令,相关说明如下表,但建议用 systemctl 进行系统服务管理。
启动流程
启动服务需要使用三个主线 target 去拉取上。每个 target 都会拉取各自需要的服务进程,拉取完成后系统准备就绪可以使用了。
multi-user.target -> basic.target -> sysinit.target
systemd 日志
systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。可以记录开机过程中的所有信息,包括启动服务等情况。
systemd 日志常见用法
journalctl:全部日志 journalctl -f:实时日志 journalctl _SYSTEMD_UNIT=NetworkManager.service journalctl --since "2020-08-05 12:20" (yesterday,today)
日志默认保存在 /run/log 中,重启丢失,保存重启前日志方法。
创建/var/log/journal 目录
修改/etc/systemd/journald.conf,将 Storage=auto 改为 persistent,重启日志服务
这两个方法可以使得您的日志不至于丢失,有时候需要定位一些问题,将日志改成 debug 级别,这对日志定位问题有很大的帮助。
修改日志为 debug 级别
/etc/systemd/system.conf loglevel=debug
/etc/profile 中加:export SYSTEMD_LOG_LEVEL=debug
修改完进行重启。
4. 服务搭建
这里介绍四种服务器搭建:
• Repo 服务器:openEuler 提供了多种 repo 源供用户在线使用,各 repo 源含义可参考系统安装[9]。若用户无法在线获取 openEuler repo 源,则可使用 openEuler 提供的 ISO 发布包创建为本地 openEuler repo 源。
• FTP 服务器搭建:FTP(File Transfer Protocol)即文件传输协议,是互联网最早的传输协议之一,其最主要的功能是服务器和客户端之间的文件传输。FTP 使用户可以通过一套标准的命令访问远程系统上的文件,而不需要直接登录远程系统。
• Web 服务器搭建:Web(World Wide Web)是目前最常用的 Internet 协议之一。目前在 Unix-Like 系统中的 web 服务器主要通过 Apache 服务器软件实现。为了实现运营动态网站,产生了 LAMP(Linux + Apache +MySQL + PHP)。web 服务可以结合文字、图形、影像以及声音等多媒体,并支持超链接(Hyperlink)的方式传输信息。openEuler 系统中的 web 服务器版本是 Apache HTTP 服务器 2.4 版本,即 httpd,一个由 Apache 软件基金会发展而来的开源 web 服务器。
• 数据库服务器搭建:数据库服务器使用 PostgreSql
具体详细四种服务器搭建方式可以参考 官方文档[10]
参考资料
[1]管理员指南: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/administration.html
[2]文档: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/配置网络.html
[3]官方文档: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/%E6%9F%A5%E7%9C%8B%E7%B3%BB%E7%BB%9F%E4%BF%A1%E6%81%AF.html
[4]官方文档: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE.html
[5]官方文档: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE.html
[6]软件包管理官方文档: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/使用DNF管理软件包.html
[7]源网址: http://repo.openeuler.org/
[8]官方文档: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/%E7%AE%A1%E7%90%86%E6%9C%8D%E5%8A%A1.html
[9]系统安装: https://openeuler.org/zh/docs/20.03_LTS/docs/Releasenotes/系统安装.html
[10]官方文档: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1.html
文章转载自公众号:openEuler