Skip to main content

设置

添加用户帐户

 
要在 Fedora Server 上添加用户帐户,请进行如下配置。
[1] 例如,添加 [fedora] 用户。
[root@localhost ~]# useradd fedora
[root@localhost ~]# passwd fedora
Changing password for user fedora.
New UNIX password:              # input any password you'd like to set
Retype new UNIX password:       # confirm
passwd: all authentication tokens updated successfully.
[2] 如果您想从上面添加的用户切换到 root 帐户,请使用 [su] 命令执行此操作。
localhost login: fedora         # login username
password:                       # input user password
[fedora@localhost ~]$ su -      # switch to root
Password:                       # input root password
[root@localhost ~]#             # just switched to root
[3] 如果你想限制用户运行 [su] 命令,配置如下。
在下面的示例中,只有 [wheel] 组中的用户可以运行 [su] 命令。
[root@localhost ~]# usermod -aG wheel fedora
[root@localhost ~]# vi /etc/pam.d/su
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
# uncomment the following line
auth            required        pam_wheel.so use_uid
auth            substack        system-auth
auth            include         postlogin
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         include         postlogin
session         optional        pam_xauth.so

# verify settings with a user that is not in allowed group
[redhat@localhost ~]$ su -
Password:
su: Permission denied     # denied normally
[4] 如果您想删除用户帐户,请按如下方式设置。
# remove a user [fedora] (only removed user account)
[root@localhost ~]# userdel fedora
# remove a user [fedora] (removed user account and his home directory both)
[root@localhost ~]# userdel -r fedora

防火墙

配置防火墙和 SELinux。
[1] 可以看到如下所示的 FireWall 服务状态。(默认启用)

[root@localhost ~]# systemctl status firewalld
*  firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor>
     Active: active (running) since Thu 2021-11-04 08:41:32 JST; 5min ago
       Docs: man:firewalld(1)
   Main PID: 762 (firewalld)
      Tasks: 2 (limit: 4647)
     Memory: 34.3M
        CPU: 388ms
     CGroup: /system.slice/firewalld.service
             +-- 762 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

# [Active: active (running) ***] means firewalld is running now

[2]如果您使用 FireWall 服务,则需要手动修改 FireWall 设置,因为默认情况下大多数情况下不允许传入的服务请求。
请参阅此处了解基本的防火墙操作和设置(CentOS Stream 8)。
本站Fedora 35的配置示例是基于Firewalld服务始终开启的环境。
[3] 如果您因为某些原因(例如某些 FireWall Machines 正在您的本地网络或其他网络中运行)而不需要 FireWall 服务,则可以如下所示停止和禁用 Fedora 服务器上的 FireWall 服务。

# stop service
[root@localhost ~]# systemctl stop firewalld
# disable service
[root@localhost ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

SELinux


[4] 可以显示当前 SELinux (Security-Enhanced Linux) 状态,如下所示。(默认启用)

[root@localhost ~]# getenforce
Enforcing     # SELinux is enabled

[5]如果启用 SELinux,有时需要手动修改 SELinux 策略,因为有时 SELinux 会停止应用程序。
有关基本 SELinux 操作和设置(CentOS Stream 8)的信息,请参阅此处。
本站 Fedora 35 的配置示例是基于 SELinux 始终 Enforcing 的环境。
[6] 如果您因为某些原因(例如您的服务器仅在本地安全网络或其他网络中运行)而不需要 SELinux 功能,则可以如下所示禁用 SELinux。

# disable SELinux
[root@localhost ~]# grubby --update-kernel ALL --args selinux=0
# restart computer to apply changes
[root@localhost ~]# reboot
# if falling back to enable, run like follows
[root@localhost ~]# grubby --update-kernel ALL --remove-args selinux

网络设置

[1] 为服务器设置静态 IP 地址。
(将接口名称 [enp1s0] 替换为您自己的名称,因为它在任何系统上都不相同)

# 如果你没有设置HostName,设置如下
[root@localhost ~]# hostnamectl set-hostname dlp.srv.world
# display devices
[root@localhost ~]# nmcli device
DEVICE  TYPE      STATE      CONNECTION
enp1s0  ethernet  connected  enp1s0
lo      loopback  unmanaged  --

# 设置 IPv4 地址
[root@localhost ~]# nmcli connection modify enp1s0 ipv4.addresses 10.0.0.30/24
# 设置网关
[root@localhost ~]# nmcli connection modify enp1s0 ipv4.gateway 10.0.0.1
# 设置DNS
# 如果设置多个 DNS,请以空格分隔 ⇒ ipv4.dns "10.0.0.10 10.0.0.11 10.0.0.12"
[root@localhost ~]# nmcli connection modify enp1s0 ipv4.dns 10.0.0.10
# 设置 DNS 搜索库(你的域名)
[root@localhost ~]# nmcli connection modify enp1s0 ipv4.dns-search srv.world
# 手动设置静态设置(它是 [auto] 用于 DHCP)
[root@localhost ~]# nmcli connection modify enp1s0 ipv4.method manual
# 重启界面重新加载设置
[root@localhost ~]# nmcli connection down enp1s0; nmcli connection up enp1s0
Connection 'enp1s0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

# 确认设置
[root@localhost ~]# nmcli device show enp1s0
GENERAL.DEVICE:                         enp1s0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         52:54:00:D3:14:49
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     enp1s0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveC>
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         10.0.0.30/24
IP4.GATEWAY:                            10.0.0.1
IP4.ROUTE[1]:                           dst = 10.0.0.0/24, nh = 0.0.0.0, mt = 1>
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 10.0.0.1, mt = 100
IP4.DNS[1]:                             10.0.0.10
IP4.SEARCHES[1]:                        srv.world
IP6.ADDRESS[1]:                         fe80::5054:ff:fed3:1449/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 100

# 确认状态
[root@localhost ~]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:d3:14:49 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.30/24 brd 10.0.0.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fed3:1449/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

配置服务

要启用或禁用服务,请进行如下配置。
[1] 显示服务列表。

# 现在处于活动状态的服务列表
# 添加 [--all],显示所有包含的非活动服务
# 添加 [--no-pager],不要使用像 [less/more] 这样的寻呼机
[root@dlp ~]# systemctl -t service
  UNIT                               LOAD   ACTIVE SUB     DESCRIPTION         >
  abrt-journal-core.service          loaded active running Creates ABRT problem>
  abrt-oops.service                  loaded active running ABRT kernel log watc>
  abrt-xorg.service                  loaded active running ABRT Xorg log watche>
  abrtd.service                      loaded active running ABRT Automated Bug R>
  atd.service                        loaded active running Deferred execution s>
  
.....
.....

  systemd-zram-setup@zram0.service   loaded active exited  Create swap on /dev/>
  user-runtime-dir@0.service         loaded active exited  User Runtime Directo>
  user@0.service                     loaded active running User Manager for UID>

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.
54 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

# 所有服务的列表
[root@dlp ~]# systemctl list-unit-files -t service
UNIT FILE                                  STATE           VENDOR PRESET
abrt-journal-core.service                  enabled         enabled
abrt-oops.service                          enabled         enabled
abrt-pstoreoops.service                    disabled        disabled
abrt-vmcore.service                        enabled         enabled
abrt-xorg.service                          enabled         enabled
abrtd.service                              enabled         enabled
arp-ethers.service                         disabled        disabled
atd.service                                enabled         enabled
auditd.service                             enabled         enabled

.....
.....

udisks2.service                            enabled         enabled
usb_modeswitch@.service                    static          -
user-runtime-dir@.service                  static          -
user@.service                              static          -
wpa_supplicant.service                     disabled        disabled

219 unit files listed.


[2] 如果您不需要,请停止并关闭服务的自动启动设置。
下面的例子意味着停止和禁用 smartd 服务。

[root@dlp ~]#systemctl disable --now smartd

更新系统

Fedora Server 成为生产系统后,可能很难更新系统,但至少在安装后,将 Fedora Server 更新到最新。
[1] 更新系统如下

[root@dlp ~]# dnf -y upgrade
Dependencies resolved.
================================================================================
 Package                       Arch    Version                   Repo      Size
================================================================================
Installing:
 kernel                        x86_64  5.14.14-300.fc35          updates   65 k
Upgrading:
 NetworkManager                x86_64  1:1.32.12-2.fc35          updates  2.3 M
 NetworkManager-bluetooth      x86_64  1:1.32.12-2.fc35          updates   52 k
 NetworkManager-libnm          x86_64  1:1.32.12-2.fc35          updates  1.7 M
 NetworkManager-team           x86_64  1:1.32.12-2.fc35          updates   30 k
 NetworkManager-wifi           x86_64  1:1.32.12-2.fc35          updates  116 k
 NetworkManager-wwan           x86_64  1:1.32.12-2.fc35          updates   58 k
 alsa-sof-firmware             noarch  1.9-1.fc35                updates  580 k
 bc                            x86_64  1.07.1-14.fc35            updates  118 k
 bluez                         x86_64  5.62-1.fc35               updates  973 k
 bluez-libs                    x86_64  5.62-1.fc35               updates   84 k
 btrfs-progs                   x86_64  5.14.2-1.fc35             updates  962 k
 checkpolicy                   x86_64  3.3-1.fc35                updates  338 k
 cockpit                       x86_64  256-1.fc35                updates   44 k
 cockpit-bridge                x86_64  256-1.fc35                updates  490 k
 cockpit-networkmanager        noarch  256-1.fc35                updates  523 k
 cockpit-packagekit            noarch  256-1.fc35                updates  572 k
 cockpit-selinux               noarch  256-1.fc35                updates  226 k
 cockpit-storaged              noarch  256-1.fc35                updates  584 k
 cockpit-system                noarch  256-1.fc35                updates  2.4 M
 cockpit-ws                    x86_64  256-1.fc35                updates  1.3 M
 curl                          x86_64  7.79.1-1.fc35             updates  310 k
 dnf-plugins-core              noarch  4.0.24-1.fc35             updates   35 k
 dnsmasq                       x86_64  2.86-3.fc35               updates  333 k
 dracut                        x86_64  055-6.fc35                updates  347 k
 dracut-config-rescue          x86_64  055-6.fc35                updates   12 k
 dracut-network                x86_64  055-6.fc35                updates   61 k
 dracut-squash                 x86_64  055-6.fc35                updates   12 k
 fedora-logos                  noarch  35.0.0-2.fc35             updates  1.3 M
 gdb-headless                  x86_64  11.1-2.fc35               updates  4.3 M
 gdbm-libs                     x86_64  1:1.22-1.fc35             updates   58 k
 gnupg2                        x86_64  2.3.3-1.fc35              updates  2.5 M
 hwdata                        noarch  0.352-1.fc35              updates  1.5 M
 iwl100-firmware               noarch  39.31.5.1-126.fc35        updates  134 k

.....
.....

Installed:
  python3-tracer-0.7.6-1.fc34.noarch
  reportd-0.7.4-4.fc34.x86_64
  sscg-2.6.2-5.fc34.x86_64
  tpm2-tools-5.0-2.fc34.x86_64
  tracer-common-0.7.6-1.fc34.noarch
  whois-nls-5.5.9-1.fc34.noarch

Complete!

使用 Moduler 存储库

[1] 显示可用模块

[root@dlp ~]# dnf module list
Fedora Modular 34 - x86_64
Name               Stream           Profiles Summary
avocado            latest           default [d], minimal  Framework with tools and libraries for Automated Testing
avocado            82lts            default,minimal Framework with tools and libraries for Automated Testing
avocado-vt         latest           default  Avocado Virt Test Plugin
avocado-vt         82lts            default  Avocado Virt Test Plugin
cri-o              nightly          default  Kubernetes Container Runtime Interface for OCI-based containers

.....
.....

varnish            6.0              default  Varnish HTTP cache

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

[2] 为了安装可用的模块,配置如下

# 例如,显示 [Node.js] 模块
[root@dlp ~]# dnf module list nodejs
Fedora Modular 35 - x86_64
Name       Stream     Profiles                             Summary
nodejs     12         default [d], development, minimal    Javascript runtime
nodejs     14         default, development, minimal        Javascript runtime
nodejs     15         default, development, minimal        Javascript runtime
nodejs     16         default, development, minimal        Javascript runtime

Fedora Modular 35 - x86_64 - Updates
Name       Stream     Profiles                             Summary
nodejs     12         default [d], development, minimal    Javascript runtime
nodejs     14         default, development, minimal        Javascript runtime
nodejs     15         default, development, minimal        Javascript runtime
nodejs     16         default, development, minimal        Javascript runtime

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

# 例如,安装 Node.js 12
[root@dlp ~]# dnf module -y install nodejs:12
Dependencies resolved.
==================================================================================================
 Package            Arch    Version                                         Repository        Size
==================================================================================================
Installing group/module packages:
 nodejs             x86_64  1:12.22.7-1.module_f35+13211+80e67b81           updates-modular   94 k
 npm                x86_64  1:6.14.15-1.12.22.7.1.module_f35+13211+80e67b81 updates-modular  3.3 M
Installing dependencies:
 nodejs-libs        x86_64  1:12.22.7-1.module_f35+13211+80e67b81           updates-modular   12 M
Installing weak dependencies:
 nodejs-docs        noarch  1:12.22.7-1.module_f35+13211+80e67b81           updates-modular  3.0 M
 nodejs-full-i18n   x86_64  1:12.22.7-1.module_f35+13211+80e67b81           updates-modular  7.7 M
Installing module profiles:
 nodejs/default
Enabling module streams:
 nodejs                     12

Transaction Summary
==================================================================================================
Install  5 Packages
.....
.....

# [Node.js 12] 的状态变为 [e]nabled 和 [i]nstalled
[root@dlp ~]# dnf module list nodejs
Fedora Modular 35 - x86_64
Name      Stream    Profiles                                Summary
nodejs    12 [e]    default [d] [i], development, minimal   Javascript runtime
nodejs    14        default, development, minimal           Javascript runtime
nodejs    15        default, development, minimal           Javascript runtime
nodejs    16        default, development, minimal           Javascript runtime

Fedora Modular 35 - x86_64 - Updates
Name      Stream    Profiles                                Summary
nodejs    12 [e]    default [d] [i], development, minimal   Javascript runtime
nodejs    14        default, development, minimal           Javascript runtime
nodejs    15        default, development, minimal           Javascript runtime
nodejs    16        default, development, minimal           Javascript runtime

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

[root@dlp ~]# node -v
v12.22.7
# 如果要切换到其他版本,请先重置
[root@dlp ~]# dnf module reset nodejs
# 启用并安装 [Node.js 16]
[root@dlp ~]# dnf module enable nodejs:16
[root@dlp ~]# dnf module -y install nodejs:16/default
# [Node.js 16] 的状态变为 [e]nabled
[root@dlp ~]# dnf module list nodejs
Fedora Modular 35 - x86_64
Name       Stream     Profiles                             Summary
nodejs     12         default [d], development, minimal    Javascript runtime
nodejs     14         default, development, minimal        Javascript runtime
nodejs     15         default, development, minimal        Javascript runtime
nodejs     16 [e]     default [i], development, minimal    Javascript runtime

Fedora Modular 35 - x86_64 - Updates
Name       Stream     Profiles                             Summary
nodejs     12         default [d], development, minimal    Javascript runtime
nodejs     14         default, development, minimal        Javascript runtime
nodejs     15         default, development, minimal        Javascript runtime
nodejs     16 [e]     default [i], development, minimal    Javascript runtime

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

[root@dlp ~]# node -v
v16.11.1

使用 web 管理控制台

如果您安装了 [Fedora Server] 组,Cockpit Admin Console 会默认安装并启动。
可以在 Web 浏览器上的这个管理控制台上管理您的 Fedora 服务器。
如果您想从远程计算机访问 Cockpit,并且 Firewalld 正在您的 Fedora 服务器上运行,它需要允许服务 [cockpit] 或允许端口 [9090]。(但默认情况下允许它们)

[1] 从 localhost 或客户端计算机使用 Web 浏览器访问 [https://(服务器的主机名或 IP 地址):9090/],然后显示 Cockpit 登录表单如下所示。使用用户登录。此示例使用 root 用户显示,如下所示。
[2] 这是驾驶舱索引页面。可以在这里管理各种系统设置。
[3] 对于左侧窗格中的[日志],可以管理或操作作为日志管理工具的[日志]服务。
[4] 左侧窗格中的[Storage],可以管理或操作Storage。
[5] 对于左侧窗格中的[网络],可以管理或操作网络设置。
[6] 在左侧窗格中的[Accounts],可以管理或操作系统帐户。
[7] 左侧窗格中的[服务],可以管理或操作系统服务。
[8] 对于左侧窗格中的 [应用程序],可以安装或删除应用程序。
[9] 对于左侧窗格中的 [SELinux],可以查看 SELinux 警报日志。(基于 SELinux 启用状态)
[10] 对于左侧窗格中的 [软件更新],可以确认更新或运行更新包。
[11] 对于左侧窗格中的[终端],可以直接使用命令操作系统。

sudo 设置