-a 查看系统所有信息
-r 查看内核和系统版本
-m 系统版本(32还是64)
[root@tony ~]# cat /etc/redhat-release #查看系统版本
CentOS release 6.7 (Final)
[root@tony ~]# uname -r #查看内核和系统版本(32还是64)
2.6.32-573.el6.x86_64
[root@tony ~]# uname -m #系统版本(32还是64)
x86_64
[root@tony ~]# hostname #查看主机名
tony
Linux是一个多用户分时系统,想要使用系统资源,就必须在系统中有合法的账号,每个账号都有一个唯一的用户名,同时设置密码。
在系统中用户的概念,一方面可以方便识别不同的用户,另一方面可以更加灵活的管理用户和控制文件权限。
Linux系统的用户主要分为root和普通用户两种,root账户拥有对系统的完整的控制权:可以修改,删除任何文件,运行任何命令,所以root用户也是系统里面最具危险性的用户,当使用root用户登录系统时需要小心谨慎。
普通用户拥有的系统权限非常小,而且操作安全。平常操作尽量使用普通用户操作,企业的生产环境中一般的开发和运维也不知道root账户的密码。
[root@tony ~]# useradd guanglei #添加普通用户
[root@tony ~]# tail -1 /etc/passwd
guanglei:x:500:500::/home/guanglei:/bin/bash
[root@tony ~]# tail -1 /etc/group
guanglei:x:500:
[root@tony ~]# tail -1 /etc/shadow
guanglei:!!:16836:0:99999:7:::
在登录Linux时必须输入用户名和密码,而系统用来记录用户名和密码最重要的两个文件就是/etc/passwd和/etc/shadow
[root@tony ~]# passwd guanglei #普通用户设置密码
Changing password for user guanglei.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password: #重新输入密码
passwd: all authentication tokens updated successfully.
设置完用户名和密码之后就可以使用SecureCRT来远程连接Linux服务器了
[guanglei@tony ~]$ whoami #查看当前登录的用户名$表示普通用户
guanglei
使用su实现用户的切换
su - username 表示切换到指定的用户,-表示切换用户的环境变量
从普通用户到root是需要输入密码,从root用户到普通用户不需要输入密码。
[guanglei@tony ~]$ su - #切换到root用户,-表示用户的环境变量
Password: #为了安全 密码不会回显
[root@tony ~]# #切换成功后的结果
使用sudo让普通用户实现只有root用户才能执行的操作
guanglei ALL=(ALL) ALL
用户 机器 角色 命令路径
[root@tony ~]# visudo #修改sudo配置文件,指定普通用户可以执行root的所有命令
99 guanglei ALL=(ALL) ALL
[guanglei@tony root]$ sudo su - root #通过这种方式不用输入root用户密码
借用sudo添加测试用户
[guanglei@tony root]$ sudo useradd angela #调用root权限添加用户
[guanglei@tony root]$ sudo passwd angela #设置密码
Changing password for user angela.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
angela用户在所有机器上,可以以所有的角色操作指定目录下的命令
100 angela ALL=(ALL) /bin/touch, /usr/sbin/useradd #执行指定目录下的命令
验证是否能够通过sudo执行指定路径下的命令
[guanglei@tony root]$ su angela
Password:
[angela@tony root]$ sudo touch /etc/test.txt
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for angela:
SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对强制访问控制的实现,这个功能让系统管理员又爱又恨,这里考虑还是先把它关了,至于安全问题,后面通过其他方式来解决。
[root@tony ~]# cat /etc/selinux/config #查看SELinux配置
SELinux的三种状态,取自于/etc/selinux/config 文件说明信息
enforcing - SELinux security policy is enforced.
permissive - SELinux prints warnings instead of enforcing.
disabled - No SELinux policy is loaded.
这种修改SELinux配置文件的方式只能重启服务器后永久生效
[root@tony ~]# cp /etc/selinux/config /etc/selinux/config_guanglei_bak #修改前备份
[root@tony ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config #使用sed实现修改SELinux为禁用状态
[root@tony ~]# grep =disabled /etc/selinux/config #查看修改的结果
SELINUX=disabled
下面这种方法是临时生效
[root@tony ~]# getenforce #检查selinux状态
Permissive
[root@tony ~]# setenforce #修改selinux状态
usage: setenforce [ Enforcing | Permissive | 1 | 0 ] #0表示警告,不起用
[root@tony ~]# setenforce 0
Linux系统默认有从运行级别0-运行级别6的7个运行级别。
运行级0:关机
运行级1:单用户模式,系统出现问题时可以使用这种模式进入系统维护,典型的使用场景是在忘记root用户密码时可以进入此模式修改root用户的密码
运行级2:多用户模式,但是没有网络连接
运行级3:完全多用户模式,这是Linux服务器最常见的运行级
运行级4:保留未使用
运行级5:窗口模式,支持多用户,支持网络
运行级6:重启
之前安装的CentOS6.6没有图形运行环境
任何时候Linux只能在一种runlevel下运行,可以使用init 0-6之间的数字,切换到指定的模式下运行系统
[root@tony ~]# cat /etc/inittab #查看运行级别的配置文件信息
[root@tony ~]# runlevelb #查看当前系统的运行级 3表示文本模式
N 3
[root@tony ~]# init 6 #表示切换成重启模式,此时服务器会重启
Linux系统在开机启动时,会有很多无用的软件服务默默在后台运行着,这样浪费了系统的内存资源,而且也带来了安全隐患,因此除了几个必须的程序之外,其他的无用服务都关掉。
sshd:Linux远程连接时必须使用到这个服务,如果不开启,则无法远程连接
rsyslog:是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog将各种信息写入到系统日志文件中,CentOS6以前次服务的名称叫syslog。
network:系统启动时,要想激活/关闭各个网络接口,则必须考虑开启
crond:用于周期性执行系统及用户配置的任务计划,企业生产场景必须要用的软件
sysstat:包含检测系统性能和效率的一组工具,比如CPU的使用率,硬盘和网络吞吐的数据等。
chkconfig 查看当前系统的开机启动项
–list 开机启动项列表
–level 指定的运行级别
[root@tony ~]# chkconfig --list #查看服务在所有运行模式下的开启/关闭状态
[root@tony ~]# chkconfig --list|grep 3:on #查看运行模式为3的开机启动项
[root@tony ~]# chkconfig --list atd #查看指定软件的开机启动信息
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
[root@tony ~]# chkconfig --level 3 atd off #关闭指定运行模式的开机启动项
使用awk实现关闭5个必须启动项之外的其他服务
[root@tony ~]# for name in `chkconfig --list|grep 3:on|awk '{print $1}'|grep -Ev "sshd|network|rsyslog|crond|sysstat"`;do chkconfig $name off;done #关闭5个必须服务之外的其他服务
[root@tony ~]# chkconfig --list|grep 3:on #查看修改后的结果
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
使用sed实现闭5个必须启动项之外的其他服务
不需要使用for循环!!!
[root@tony ~]# for name in `chkconfig --list|grep 3:off|awk '{print $1}'|grep -Ev "rsyslog|network|sshd|sysstat|crond"`;do chkconfig $name off ;done; #先开启之前关闭的服务
[root@tony ~]# clear
[root@tony ~]# chkconfig --list|grep 3:on|grep -Ev "network|rsyslog|sysstat|crond|sshd"|sed -r 's#(.*)#chkconfig /1 off#g'|bash #使用sed实现闭5个必须启动项之外的其他服务
sed命令结合正则表达式实现后向引用
-r 不需要转义
正则表达式:
. 表示任意字符
* 表示一个或者多个字符
sed -i ‘s#(正则表达式)#\1#g’ tom.txt \1表示取正则表达式匹配的行
[root@tony data]# cat tom.txt #查看测试数据
this is test content
this is test content again
[root@tony data]# sed -n '1p' tom.txt #打印指定行号的内容
[root@tony data]# sed -i 's#this is test content#this is release content#g' tom.txt #实现内容替换
[root@tony data]# sed -r 's#(.*)#\1#g' tom.txt #实现正则匹配的内容输出
this is release content
this is release content again
[root@tony data]# sed -r 's#(.*)release #\1#g' tom.txt
this is content
this is content again
[root@tony ~]# iptables -L -n
[root@tony ~]# /etc/init.d/iptables status #查看防火墙状态
[root@tony ~]# /etc/init.d/iptables stop #关闭防火墙
[root@tony ~]# /etc/init.d/iptables start #开启防火墙
[root@tony data]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_guanglei_bak #备份服务端ssh服务配置文件
[root@tony data]# vimdiff /etc/ssh/sshd_config /etc/ssh/sshd_config_guanglei_bak #使用vimdiff比较修改前后的内容
修改的内容如下:
12行 Port 52118 #将端口修改为52118
123行 UseDNS no #禁用DNS域名解析
42行 PermitRootLogin no #禁用root用户通过ssh客户端访问
15行 ListenAddress 192.168.91.128 #修改监听的IP地址
[root@tony data]# /etc/init.d/sshd restart #重启ssh服务
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
1 安装Linux系统最小化,即选包最小化,yum安装软件包也要最小化,无用的包不装
2 开机启动服务最小化,无用的服务不启动
3 操作命令最小化
4 登录Linux系统最小化,平时没有需求不用root用户登录,用普通用户登录即可
5 普通用户授权最小化,即只给必须的管理系统命令
6 Linux系统文件目录的权限设置最小化,禁止随意创建 更改和删除文件