服务管理


1. 系统启动过程

    首先,BIOS 控制电脑,探测磁盘,加载Master Boot Record,并执行启动加载器。启动程序接手后,找到磁盘上的内核,加载并执行。然后,内核被初始化,并开始寻找和挂载包含根文件系统的分区,最后执行第一个程序-init。根分区和启动程序init常常驻留在仅存在于 RAM 中的虚拟文件系统(正如它的名字,“initramfs”,一般称之为“initrd”初始内存磁盘)。启动加载器将文件系统加载到内存中,文件通常位于硬盘或者源于网络。它包含了内核需要的最少裸信息,以便用来加载“真正”的根文件系统:可能是硬盘上的驱动模块,或者其他系统启动必须的设备,或者更常见的是初始化脚本和模块以组建 RAID 阵列,打开加密分区,激活 LVM ,等等。一旦根分区挂载,initramfs 就会把控制权交到真正的启动程序,机器则回到标准的启动过程。

  • Systemd启动系统

    通常,第一个启动的进程是 /sbin/init 程序(默认是到 /lib/systemd/systemd 的符号链接)。然而,也可以通过传递 init 选项告诉内核使用其他的程序。

    任何可以接近电脑的人都能按下复位 按,并重新启动。然后,在启动提示下,传递init=/bin/sh选项给内核,无需知道密码而获取超级用户权限。

loongson@loongson-pc:~$ cat /lib/systemd/system/ssh.service 
[Unit]
Description=OpenBSD Secure Shell server
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=/usr/sbin/sshd -t
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/usr/sbin/sshd -t
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
RuntimeDirectory=sshd
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
Alias=sshd.service

    单元文件是声明性的而不是脚本或程序,不能直接运行,只能被 systemd 解译;因些有些工具允许管理者与 systemd 交互且控制系统的状态与其组件。

2. 远程登录

    SSH (Secure SHell) 通信协议系以安全与可靠考量。以 SSH 连接是安全的:伙伴需认证且数据交换经过加密。

    ssh 还有两个文件传输服务:scp、sftp

  1. ssh远程登录:

    loongson@loongson-pc:~$ ssh loongson@10.40.41.193
    The authenticity of host '10.40.41.193 (10.40.41.193)' can't be established.
    ECDSA key fingerprint is SHA256:OjtKqBCoqqJDtLTO0zc73GzJDkHmwCQSHlScPUbJL9U.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.40.41.193' (ECDSA) to the list of known hosts.
    loongson@10.40.41.193's password: 
    Last login: Fri Mar 19 09:32:24 2021 from 10.40.42.51
    
  2. 文件远程传输:

    loongson@loongson-pc:~$ scp -r a b loongson@10.40.41.193:~
    loongson@loongson-pc:~$ sftp loongson@10.40.41.193
    loongson@10.40.41.193's password: 
    Connected to loongson@10.40.41.193.
    sftp> ls
    
  3. 实现ssh免密登录:

loongson@loongson-pc:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/loongson/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/loongson/.ssh/id_rsa.
Your public key has been saved in /home/loongson/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:LO6UEtmrJ1OG1SDJSTiLjchPz2uwEBx8tuQmRKHok1Q loongson@loongson-pc
The key's randomart image is:
+---[RSA 2048]----+
|oo.E.o           |
|o+++= .          |
|B=*o.. o         |
|*=+= o...        |
| +* =oo S        |
| ..o.=o+         |
|  . +o*          |
|   .oB.          |
|    o+.          |
+----[SHA256]-----+
loongson@loongson-pc:~$ ssh-copy-id loongson@10.40.41.193
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/loongson/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
loongson@10.40.41.193's password: 
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'loongson@10.40.41.193'"
and check to make sure that only the key(s) you wanted were added.
loongson@loongson-pc:~$ ssh  loongson@10.40.41.193
Last login: Thu Mar 25 11:38:41 2021 from 10.40.41.194
[loongson@localhost ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0b:2f:18:df:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.40.41.193/22 brd 10.40.43.255 scope global dynamic enp2s0
       valid_lft 622398sec preferred_lft 622398sec
  1. 使用远程X11

    SSH 协议允许转发图形数据(“X11”会话,源于最广泛传播Unix图形系统的名字);然后,服务器为这些数据保留固定通道。特别地,远程执行的图形程序可以在本地系统X.org服务器屏幕上显示,并且整个会话(输入和显示)都是安全的。由于该特性允许远程应用与本地系统交互,因此默认是关闭的。您可以指明X11Forwarding yes参数,将其写入服务器配置文件(/etc/ssh/sshd_config)以启用该功能。最后,用户必须通过添加 -X 选项到 ssh 命令行中以提出功能请求。

loongson@loongson-pc:~$ ssh -X loongson@10.40.41.193

3. 权限管理

    Linux 是一个典型的多用户系统,这就有必要提供许可制度来控制对文件和目录的操作。

    每个文件和文件夹有三种用户许可类型:

1)所有者 (使用符号 u “user”首字母);
2)所有者组(使用符号 g “group”首字母),代表组中的所有成员;
3)其他(使用符号 o “other”的首字母)。

    有三种可以相互结合的权限类型:

1)读取(使用符号 r “read”的首字母);
2)写(使用符号 w “write”的首字母);
3)执行(使用“eXecute”中的符号 x )

    两个特殊权限和可执行文件相关:setuid 和 setgid(使用字符“s”表示)。由于 setuid 根程序在系统层以超级用户的身份运行,有必要确定其安全性和可靠性。     “粘着”位(使用符号“t”)是仅用于目录的许可位。专门用于所有人都有写权限的临时目录(例如 /tmp/):它严格限制删除操作,只有所有者(或者父目录的所有者)可以删除。

    3个常用控制文件许可权限的命令(u/g/o):

1)chown 用户 文件 命令更改文件的所有者;
2)chgrp 组 文件 改变所有组
3)chmod 权限 文件 改变文件许可权限。

    要表示特殊权限,可以根据同样的原则在数字上加入第四个前缀位,位 setuid, setgid 和 sticky 分别对应4,2,和1。chmod 4754 会设置前面描述的 setuid 位权限。

    -R 选项来递归操作子目录。

# chmod -R a+X tmp

4. 运行计划任务

cron 是负责调度和运行周期命令(每天,每周,等)的守护进程; atd 用于处理单次执行命令,命令将在未来某个指定时刻运行。

loongson@loongson-pc:/var/backups$ ls /etc/cron*
/etc/crontab

/etc/cron.d:
mdadm  sendmail  xserver-xorg-video-loongson

/etc/cron.daily:                #每天运行
apt-compat    cracklib-runtime  logrotate  mdadm   sendmail
bsdmainutils  dpkg              man-db     passwd

/etc/cron.hourly:                #每小时运行
/etc/cron.monthly:              #每月运行
/etc/cron.weekly:               #每周运行
libvirt-sanlock  man-db
loongson@loongson-pc:~$ cat /etc/cron.daily/passwd 
#!/bin/sh

cd /var/backups || exit 0
for FILE in passwd group shadow gshadow; do
        test -f /etc/$FILE              || continue
        cmp -s $FILE.bak /etc/$FILE     && continue
        cp -p /etc/$FILE $FILE.bak && chmod 600 $FILE.bak
done

4.1. crontab文件的格式

loongson@localhost:~$ cat /etc/crontab 
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
17 * * * * root    cd / && run-parts --report /etc/cron.hourly
25 6 * * * root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

4.2. at命令

at 在未来的特定时间运行某个命令。以命令行参数的模式在指定的时间与日期运行,并把结果以标准方式键入。

5. 异步任务调度:anacron

    anacron 用于不能全天开机的电脑,替代完成 cron 命令的守护进程。通常的计划任务通常被安排在凌晨执行,如果计算机没有开机就不会运行这些任务。anacron的目的就在于考虑计算机关机时间并运行这些计划任务。     安装anaron软件包会禁用 cron 在 /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, 和 /etc/cron.monthly/目录中的脚本。避免 anacron 和 cron重复运行这些脚本。 cron 命令仍然可用并处理其他计划任务(特别是用户安排的计划任务)。

6. 使用rsync备份

6.1. 本地同步:

loongson@loongson-pc:~$ rsync -azvr  ~/import-date /opt

6.2. 远程同步:

1)本地同步到远程主机

loongson@loongson-pc:~$ rsync -avz /home/loongson/ loongson@10.40.41.193:/home/loongson/zn/test

2)远程主机同步到本机

loongson@loongson-pc:~$ mkdir test; rsync -avz loongson@10.40.41.193:/home/loongson/loongson-grub test

6.3. 找出文件间的区别:

loongson@loongson-pc:~/test$ rsync -avzi /home/loongson/test/zhangna-grub/ loongson@10.40.41.193:/home/loongson/zhangna-grub
sending incremental file list
.d..t...... ./

sent 247,099 bytes  received 704 bytes  495,606.00 bytes/sec
total size is 560,686,734  speedup is 2,262.63
loongson@loongson-pc:~/test$ touch zhangna-grub/aa
loongson@loongson-pc:~/test$ rsync -avzi /home/loongson/test/zhangna-grub/ loongson@10.40.41.193:/home/loongson/zhangna-grub
sending incremental file list
.d..t...... ./
<f+++++++++ aa

sent 247,150 bytes  received 719 bytes  165,246.00 bytes/sec
total size is 560,686,734  speedup is 2,262.03

6.4. 定时备份

可在Cron 中添加rsync命令可以实现定时备份功能.

©龙芯开源社区 all right reserved,powered by Gitbook文档更新时间: 2021-09-01 09:53:48

results matching ""

    No results matching ""

    results matching ""

      No results matching ""