目录

CentOS & Rocky Linux类系统使用笔记

这里记录CentOS 8 使用过程中积累的一些命令,多是因为要解决一些问题而尝试过,并不求完整和系统。

查看硬件信息

cat /proc/cpuinfo                        # 查看CPU 的详细信息 (型号, 家族, 缓存大小等)
cat /proc/cpuinfo | grep name            # 查看CPU 的信息,一般有型号,主频等
cat /proc/cpuinfo | grep "physical id"  | sort | uniq  # 查看物理CPU的个数,id从0开始,因此最后一行的数字+1就是CPU数目,少的时候直接看行数
cat /proc/cpuinfo | grep "processor"     # 查看逻辑CPU的个数,同样id从0开始
 
sudo dmidecode -t processor | grep Version   # CPU的信息
 
lscpu                                    # 查看cpu的相关信息
 
free -g                                  # 查看内存,-g是以G为单位
sudo dmidecode -t memory                 # 查看内存插口及内存条的信息 
sudo dmidecode -t memory | grep "Serial Number"  # 查看内存条的序列号,没有插内存条的插口则显示为Not Specified
 
df -h                                    # 查看磁盘使用情况
fdisk -l                                 # 查看硬盘和分区的详细信息
fdisk -l | grep Disk                     # 查看磁盘分区情况
 
lsblk                                    # 查看硬盘和分区分布

使用crontab计划任务

sudo vi /etc/crontab

对配置文件进行编辑,根据文件上边的# Example of job definition:设定各项就可以了。 前边五栏依次用来设定分(0-59)、时(0-23)、日(1-31)、月(1-12)、星期几(0-6或1-7, 星期天=0或7),然后是user,然后是要运行的命令。比如:

0 *  *  *  *  wanghong /home/wanghong/noticeEmail.R >> /home/wanghong/noticeEmail.log 2>&1

*表示取值范围内的所有数字;月和星期可以用jan、sun这样三个字母的形式;/表示每,比如日设成1/10 就表示1号运行一次,然后11号、21号、31号分别再运行一次;-表示从某个数字到某个数字;离散的数字可以用都好隔开,比如我这里如果想要从每个小时运行一次变成每半个小时,就可以把第一列设成0,30。可以man -s 5 crontab查看更多。
这里的'' » /home/wanghong/noticeEmail.log 2>&1 ''用于将输出或者报错信息转到noticeEmail.log这个文件。

然后重启一下服务就可以了:

sudo systemctl restart crond

SELinux

sudo vi /etc/selinux/config将SELINUX=enforcing改成SELINUX=disabled然后重启计算机就可以关掉SELinux。不建议关掉,测试是否SELinux(Security-Enhanced Linux)的问题的时候可以尝试。 用sestatus来查看SELinux的状态。

SELinux Context

使用ls -lZ查看当前目录下的所有文件的信息能够看到SELinux Context,后边可以具体指明某个文件夹或文件,比如可以试试

ls -ldZ /var/www/html

SELinux Context为user:role:type:mls_level的形式,可以看到此文件夹SELinux Context的第三项为httpd_sys_content_t,如果我们把网站放在别的地方,比如/home/www,就需要把/home/www这项Context相应地改变:

sudo chcon -R -t httpd_sys_content_t /home/www      # 这里只是临时改变了Context,重启之后就变成原来的了
 
sudo restorecon -R -v /home/www                     # 恢复成默认的Context
 
sudo semanage fcontext -a -t httpd_sys_content_t /home/www(/.*)/?     #设定默认的context,包括内部文件夹及文件
 
sudo restorecon -R -v /home/www                     # 使上一步设定的默认值生效

对于一些需要apache具有写的权限的文件夹,需要设成httpd_sys_rw_content_t。
使用seinfo -t | grep httpd查看更多相关的types。同样有-r、-u查看可能的role和user选项。

SELinux Booleans

getsebool -a | grep http

查看和http相关的所有布尔选项,比如httpd_can_sendmail是网站发生邮件所需要设定为on的,另外httpd_can_network_relay可能也是网站正常工作所需要的。

sudo setsebool httpd_can_sendmail on
sudo setsebool -P httpd_can_sendmail on
 
sudo setsebool httpd_can_network_relay on
sudo setsebool -P httpd_can_network_relay on

SELinux Ports

比如更改SSH端口之后,除了防火墙需要允许通过以外,SELinux也需要允许。

sudo semanage port -l | grep ssh   # 看看ssh开放的端口,默认的只有22
 
sudo semanage port -l | grep 2222  # 比如想要换成2222端口,可以看看是否已经预留给别的了
 
sudo semanage port -a -t ssh_port_t -p tcp 2222  #将2222端口添加到ssh,这样才能通过2222端口进行ssh
 
# 没有找到办法把这里的22端口去掉,在SSH配置文件中设置即可

同样,网站或者程序如果需要通过SMTP发送邮件,似乎也需要看看smtp的端口。

sudo semanage port -l | grep smtp   

SELinux问题查看

有时候一些运用运行不正常,很难找到具体的原因。这时候要想到看看是不是由于SELinux设置的问题。这时候可以运用两个命令帮助查看:

ausearch -m avc --start recent

这个看看是不是有有denied的情况。这时候看看是哪一步分设置不符合。这里的–start recent参数查看10分钟内的。也可以使用 –start today看今日内的。

grep sealert /var/log/messages* | tail

这样能够查看最新的信息,比如能够看到“SELinux is preventing…”这样的字样,那么就说明问题可能来自于受到了SELinux的阻止。详细信息根据提示查看,比如:

sealert -l 653df078-36c8-4828-adc8-d4b9ebceee5c

【*】更详细的学习可以转至https://wiki.gentoo.org/wiki/SELinux/Tutorials/Where_to_find_SELinux_permission_denial_details

重设Hostname

Hostname分为Static、Transient、Pretty三中,Static hostname存于/etc/hostname中。

hostname                      # 查看当前的Transient hostname
sudo hostname new_hostname    # 将Transient hostname设置为 new_hostname ,重启失效   
 
hostnamectl status            # 可以查看 Static hostname,以及别的信息
hostnamectl                   # 一样的效果
 
sudo hostnamectl set-hostname new_hostname  #将Static hostname设置为new_hostname,重新ssh之后就能看到变化

SSH安全设置

看看有没有被攻击,可以使用last | less命令查看最近的登陆情况。sudo less /var/log/secure查看登陆情况。使用如下命令查看登陆失败的情况,如果看到很多次root登陆密码错误(Failed password for …),那么说明可能被攻击了:

sudo grep 'sshd.*Failed password for' /var/log/secure | less

为了增强安全,除了密码设置复杂一点以外,一个是改SSH的端口,另一个是禁止root登陆。

sudo vi /etc/ssh/sshd_config

将PermitRootLogin yes改为PermitRootLogin no,增加一行Port 2222(2222改为自己想要的端口)。选择端口之前可以先看看是不是别的程序的默认的端口,也就是SELinux里是否有了。

sudo semanage port -l | grep 2222

然后要将这个端口添加到SELinux允许的端口里边去:

sudo semanage port -a -t ssh_port_t -p tcp 2222

另外需要使得这个端口能够通过防火墙,sudo vi /etc/firewalld/services/ssh.xml创建一个文件,内容如下:

ssh.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Add a new port for SSH</description>
  <port protocol="tcp" port="2222"/>
</service>

sudo firewall-cmd –list-services查看一下SSH是否已经被允许通过防火墙了,如果没有看到ssh,则这样添加:firewall-cmd –permanent –zone=public –add-service=ssh

然后sudo systemctl restart firewalld重启防火墙和sudo systemctl restart sshd重启sshd,试试能不能ssh成功。新的端口能够SSH成功之后,sudo vi /etc/ssh/sshd_config,在Port 22前边加#,然后重启防火墙即可。

最后再将22 端口的访问流量转向访问者本地:

sudo firewall-cmd --permanen --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=127.0.0.1

添加用户

创建用户

创建一个叫做username的新用户(将username改为具体的用户名):

sudo adduser username

如果需要设置特定的UID,那么使用–uid参数指明。比如在布置openPBS各个节点的时候,需要同样的用户具有同样的UID。

然后设置密码,修改密码用的也是同样的命令(将username改为具体的用户名):

sudo passwd username

可以强制用户首次登陆的时候修改密码:

sudo chage -d 0 username

添加管理员权限

如果确实有必要给某个用户管理员权限,可以将用户添加到wheel组,如下命名(将username改为具体的用户名):

sudo usermod -aG wheel username

也可以使用sudo visudo命令,在出现的待编辑的文件最后加上username ALL=(ALL) ALL

禁用root SSH

将文件/etc/ssh/sshd_config中的PermitRootLogin yes更改为PermitRootLogin no(用sed能够快速实现),然后重启sshd:

sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd

Kill tty and pts

要强制退出一个已经登录的tty或者pts,首先找到对应的PID,kill掉PID就可以了。

who -la

将<PID>换成具体要kill的:

kill -9 <PID>

新增条目

新增条目


本网页已被访问8936次,最后更新时间: 2022/09/02 09:53。