设置指定的时区(Linux TimeZones Setting)
使用timedatectl 处理
timedatectl set-timezone Asia/Shanghai
创建非登陆用户(Create a Linux User with non-interactive shell)
使用 adduser 命令处理,这里另外要求改用户不能拥有shell的交互能力,也就是不能登陆
sudo adduser user -s /sbin/nologin
通过 cat /etc/passwd
可以看到最近添加的用户名以及相关的权限信息,大概会是这样 bind:x:115:118::/var/cache/bind:/usr/sbin/nologin
替换文本文件中的指定字符串(Linux String Substitute)
sed -i 's/Random/Marine/' /root/the_name.xml
使用sed 命令,替换 the_name.xml 文件中所有的Random字符串为Marine
Selinux 安装 (Selinux Installation)
yum install selinux-policy-targeted
SELinux 表示 Security-Enhanced Linux,是内核级别的安全模块
Linux 无密码登录(Linux SSH Authentication)
# 简单点就一路回车,不然就看自己需要了
ssh-keygen -t rsa -b 4096 ## 也可不需要指定长度,看需求
# 这里默认是将 当前用户 .ssh/id_rsa.pub 文件拷贝到目标服务器用户的.ssh/authorized_keys 里
ssh-copy-id [email protected]
## 如果你是自定义上边生成的密钥对,那这里copy时候使用 -i 指定公钥路径
ssh-copy-id -i /path/xxxxx.pub [email protected]
2022-12-05: Linux User Files (Linux上的用户文件)
要求移动指定目录下,指定用户的文件到另一个文件夹,在移动过程中需要保持文件夹到结构.
第一想到的是需要管道命令 |把文件一个个copy到指定路径上去,但有另外的点不知道怎么处理,一个是过滤用户,然后是保持文件夹结构。搜索一下,还是容易找到方法。使用find命令通过
-user
参数可以过滤指定用户的文件。而cpio这个命令的确是第一遇到,也是看了别人的答案才了解到的,主要用来做备份用。然后两者通过管道命令连接起来。
一些参数:
-p或–pass-through 执行copy-pass模式,略过备份步骤,直接将文件复制到目的目录
-d或–make-directories 如有需要cpio会自行建立目录。
-m或preserve-modification-time 不去更换文件的更改时间。
find . -user kareem|cpio -pdm /blog
2022-12-07: Linux run level (Linux运行级别)
目标: 修改系统的默认级别为GUI级别
- Linux系统的run level 就是在启动的过程中以哪种形态呈现,有点类似与window的启动方式选项。记得好像ubuntu系统启动时候,也有选择,图形化界面或者多用化交互界面
- 可选的级别,0 停机 1 单用户模式 2 多用户,没有 NFS 3 完全多用户模式 4 没有用到 5 图形界面 6 重新启动 S s Single user mode
- 有两种方式设置
# 使用init 命令设置默认级别为多用户模式
init 3
# 使用systemctl 命令,这个命令更清晰,但是需要指定默认的级别为字符串,需要提前知道。不过终究是用得少。建议使用
# 其他可选之 rescue.target,emergency.target,multi-user.target
systemctl set-default graphical.target
# 获取当前默认的运行级别
systemctl get-default
2022-12-08: Create a Cron job (添加一个定时任务)
目标:需要每个5分钟在/tmp/cron_text 文件下写入一个hello
这个是比较容易的,系统为centos7。唯一要注意的是用户权限,谁写入的任务,就是以对应的用户权限。我这里切换到了root
# 安装cronie
sudo yum install cronie
# 使用systemctl启动
systemctl start crond && systemctl enable crond
## 添加定时任务
# 1. 打开定时任务编辑器,看交互,指定自己使用的编辑器来编辑(如果有的话)
crontab -e
# 2. 写入定时任务
*/5 * * * * echo hello >> /tmp/cron_text
2022-12-09: Linux Collaborative Directories (文件夹权限设置)
目标: 在指定路径下创建一个文件夹,要求root用户和属组内用户有读、写执行权限,其他用户没有权限
# root用户创建文件夹,-p参数可以创建多集
sudo makedir -p /bob/data/
# 改变文件夹属组,将 /bob/data 以及子文件夹修改为归属 sysops
sudo chgrp -R sysops /bob/data/
# 改变权限,root 和属组内用户可以执行读、写、执行操作,其他用户没有权限
sudo chown 770 /bob/data/
2022-12-12: MariaDB Troubleshooting (MariaDB 文件处理)
目标:mariadb 没能启动,找出原因并让它启动起来
首先使用 systemctl status mariadb 查看状态,的确没起来,也没有明确的错误信息,或者说我看不出来
然后用 journalctl -u mariadb.service 查看,也没有看懂错误
然后没办法了,直接去社区找答案
结论: 是因为 /var/lib 下的mysql 文件夹需要权限不对。需要使用mysql组和mysql用户运行。
sudo chown -R mysql:mysql /var/lib/mysql
2022-12-13: linux without home (创建一个没有用户目录的Linux 服务用户)
# 代码很简单
adduser -M john
另外一些要注意的:
- -M 表示不要创建用户home文件夹,我服务器上默认是会创建同名文件夹的
- -s 可以指定shell 比如
-s /usr/sbin/nologin - -d 可以指定具体位置的主目录
-d /opt/hello其他具体的,可以多多查看 -h 命令
2022-12-14: DNS trouble (DNS 解析问题)
目标: 服务器无法解析域名,所以需要添加Google的dns域名解析服务器
# 就是需要在 /etc/resolv.conf 文件添加一个dns服务器地址
echo 'nameserver 8.8.8.8' >> /etc/resolv.conf
2022-12-18:Linux String Substitute (sed)(使用sed 命令解决字符串替换问题)
目标:
- 在指定文件中将包含有 ‘following’字符串的所有行删除,并将新的结果保存到另外一个文件
- 在指定文件中将所有 ‘and’ 字符串替换为 ‘or’ 字符串,并且将新的结果保存到另外一个文件中
问题还是比较简单,主要是sed命令的使用,我平时用的少,所有也都找的答案
# 1 删除包含字符串的行,-e 应该是指定编辑,/d 这部分是删除的意思
sed -e '/following/d' /home/bsd.txt > /home/bsd_delete.txt
# 2 替换字符串,使用 /s 模式,然后需要全局 需要 /g
sed -e 's/and/or/g' /home/bsd.txt > /home/bsd_replace.txt
2022-12-18: Linux Banner (linux 得登录banner 设置)
目标: 在指定得机器中,设置ssh 登录的banner 这对我来说也是盲点,所以找了下资料
- 通过 /etc/ssh/sshd_config 中设置 banner 的路径。 但是这个方法对任务而言是不对的,但我也没法确定这种方式是不是对的。同时也说明还有其他的方式。
- 修改 /etc/motd 文件内容为需要的banner信息。这种方式是被任务接受的,所以任务完成。
2022-12-21: Linux User Expiry (设置一个包含过期限制的用户)
目标: 在指定得机器中创建用户,并设置用户的失效期,保证在指定时间之后,该用户将无法使用
## 这个命令之前接触过了,所以不难。-e 指定失效时期。这里没有其他限制,所以直接用默认值了
useradd -e 2022-03-12 siva
2022-12-22: Linux Remote Copy (Linux 远程文件拷贝)
目标: 将本地文件拷贝到远程服务指定目录下
## 将/tmp/xxxx.txt 文件拷贝到stapp01 服务器到 /home/data 目录下。 这里会要求输入密码
scp /tmp/xxxx.txt tony@stapp01:/home/data
## 另外如果使用密钥,则增加 -i ssh/path 参数
scp -i /key/path /tmp/xxxx.txt tony@stapp01:/home/data
2022-12-23: Disable Root Login (禁止使用root用户登录)
目标:就是不能使用root用户通过ssh 登录系统
# sshd 配置文件路径为 /etc/ssh/sshd_config。注意需要切换到root用户
vi /etc/ssh/sshd_config
# 找到 PermitRootLogin 对应的行,取消注释,然后替换默认的yes 为no
# 重要点:一定要重启sshd 服务,不然无法生效。完成任务时候,因为没有重启sshd,所以没有通过,后面重启服务之后就通过了
systemctl restart sshd
2022-12-24: Linux Find Command (Linux 查找命令)
目标: 将指定文件夹下的所有指定类型的文件找出来,并且拷贝到另外的文件夹中去,需要保留父文件夹。
# 肯定是使用find 命令没错了
# 使用-type f 表示找文件, -name '*.js' 表示找js后缀的文件
# -exec 应该是类似管道,cp 周边就是相关的参数,这个不熟悉,也是通过网上寻找答案知道
sudo find /var/www/html/ecommerce -type f -name '*.js' -exec cp --parents {} /ecommerce \;
2022-12-26: Linux Bash Scripts (Linux Bash 脚本)
目标:对一个web应用备份,本地需要保存一份,同时备份服务器上也要保存一份
# 1. 本地备份要在/backups 目录
# 2. 整个应用文件夹需要压缩
# 3. 备份压缩文件需要无密码同步到备份服务器上
# 脚本内容为以下两行代码,文件为backup.sh
zip -r /backup/xfusioncorp_blog.zip /var/www/html/blog
scp /backup/xfusioncorp_blog.zip clint@stbkp01:/backup/
# 脚本执行前,需要两个准备
# 1 给脚本增加可执行的权限
sudo chmod +x backup.sh
# 2. 生成密钥对,并将公钥拷贝到备份服务器上去,实现无密码登录(具体参考之前的任务)
ssh-keygen
ssh-copy-id
2022-12-26: Install a package (Linux 上安装软件) Rank: 1013
目标: 需要在3台服务器上安装samba 包
# 首先已经确定是centos7,所以使用yum进行包安装
sudo yum install -y samba
2022-12-28: Application Security (应用安全) Rank: 1013
目标:需要在备份服务器上,nginx使用的8091端口允许访问,以及禁止Apache使用的3001端口的外部访问,并永久有效
# 任务中有要求用到iptables
# 开放8091 端口
iptables -A INPUT -p tcp --dport 8091 -j ACCEPT
# 禁止3001 端口
iptables -A INPUT -p tcp --dport 3001 -j REJECT
# 以上设置的规则在服务器重启后会丢失,所以需要写入iptables 规则文件
service iptables save
PS: 运维同事说工作中用iptables 会比较少,对于centos,多数时候会直接使用firewalld 防火墙来解决这些问题
2022-12-29: Linux LogRotate (Linux 滚动日志) Rank:973
目标:安装httpd 应用,并对httpd的日志做滚动处理,按月分割,并保留3个滚动日志。使用logrotate工具
# 先安装httpd 包
yum install -y httpd
# 安装完后,查看/etc/logrotate.d 文件夹下有没有对httpd 滚动日志的配置
ls -l /etc/logrotate.d
# 如果有,那就编辑该配置文件,然后修改为任务要求。要修改的主要为两个参数,频率为monthly,滚动日志保留个数为 3
xxxxxxx{
monthly
rotate 7
.....
}
# 修改完后,以防万一,重启httpd 服务
systemctl restart httpd
这个任务我是通过搜索才知道的,属于只是盲区。参考了这里
2022-12-30: Apache 服务器中的重新定向(Apache Redirects)
目标:1. 配置apache服务的监听端口 2. 需要指定地址重定向到带www的地址 3. 将指定路径 /blog 重定向到 /new 路径
#apache 服务依然不太了解,所以还是参考了外部答案
# 修改配置文件中的端口,应该是 `Listen` 字段
vi /etc/httpd/conf/httpd.conf
# 重定向问题需要建立一个新文件
vi /etc/httpd/conf.d/main.conf
# 内容如下。能看懂,但正要配置,还得找官文
<VirtualHost *:8083>
ServerName stapp02.stratos.xfusioncorp.com
Redirect 301 / http://www.stapp02.stratos.xfusioncorp.com:8083/
</VirtualHost>
<VirtualHost *:8083>
ServerName www.stapp02.stratos.xfusioncorp.com:8083/blog/
Redirect 302 /blog/ http://www.stapp02.stratos.xfusioncorp.com:8083/news/
</VirtualHost>
2022-12-31: 配置本地安装包(Configure Local Yum repos)
目标:在配置yum,让其在安装时候,从本指定路径下获取安装包来安装
# 先看看服务器原本有哪些源
yum repolist
# 去到源文件配置目录,可以看到文件名和上一步操作的结果有相关性
cd /etc/yum.repos.d
# 复制一份相同的到,在修改内容如下:baseurl这里指定为本地路径,使用file://的scheme
[local_yum]
name=local_yum
baseurl=file:///packages/downloaded_rpms/
enabled = 1
gpgcheck = 0
# 将配置的源添加进来
yum clear all
# 再次查看源列表
yum repolist
「如果这篇文章对你有用,请随意打赏」
如果这篇文章对你有用,请随意打赏
使用微信扫描二维码完成支付