Linux(三)——高级命令

Posted dch-21

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux(三)——高级命令相关的知识,希望对你有一定的参考价值。

vi/vim

  • VI/VIM是一款类Unix系统自带的一款功能强大的文本编辑工具,只有命令,没有菜单
  • 很多类Unix系统中的应用程序都会默认使用VI/VIM编辑器
  • VIM是VI的升级版本
  • CentOS7.7 默认只安装VI,没有安装VIM

vi的三种模式

  • 命令模式,也叫一般模式,在此模式下,可以使用VI的指令
  • 底行命令模式,在此模式下,可以使用VI的底层命令
  • 插入模式,也叫编辑模式, 可以进行文本的随意修改。
    技术图片
    技术图片
    技术图片
    技术图片
    技术图片
    技术图片

注意:有突发情况,导致窗口退出。修改文件之后,直接删除同名的.swp文件

如图所示,使用vi编辑当前目录下的services文件时,突发情况而强制退出

技术图片

技术图片

使用ls -a命令查询当前目录下的所有文件,发现存在一个.services.swp的隐藏的缓存文件

技术图片

删除这个隐藏的缓存文件

技术图片

防火墙及相关服务的操作

  • 查看防火墙的状态
    • systemctl status firewalld
      d表示服务
  • 临时关闭
    • systemctl stop firewalld
  • 临时启动
    • systemctl start firewalld
  • 设置开机自启动
    • systemctl enable firewalld
  • 关闭开机自启动
    • systemctl disable firewalld

NetworkManager

NetworkManager服务是管理和监控网络设置的守护进程,CentOS7更加注重使用NetworkManager服务来实现网络的配置和管理它是一个动态的,事件驱动的网络管理服务。

systemctl  status NetworkManager
systemctl  start   NetworkManager
systemctl  stop  NetworkManager
systemctl  disable NetworkManager
systemctl  enable  NetworkManager

一个安全机制SELINUX(美国采用的一个安全机制)

对应的是一个配置文件:/etc/selinux/config, 集群的情况下,需要将SELINUX设置为禁用

[root@root ~]# vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing		#<----  需要将enforcing改为disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

网络通信命令

  • ping
    作用:测试网络的连通性,向指定主机发送固定字节,指定主机也会返回固定字节,即畅通。
    语法:ping 选项 IP地址
    选项:-c 指定发送次数
    ping -c 3 127.0.0.1
  • ip address ,可以简写成ip addr
    作用:CentOS7以后,用于查看IP地址
    技术图片
  • netstat
    CentOS7.x,默认是没有这个命令,需要安装: yum -y install net-tools
    作用:用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
    选项:
    • -a (all)显示所有连接和监听端口
    • -t (tcp)仅显示tcp相关选项
    • -u (udp)仅显示udp相关选项
    • -n 使用数字方式显示地址和端口号
    • -p 显示socket的PID和进程的名字
    • -l (listening)显示监控中的服务器的socket
#查看22号端口的情况
netstat -ntlp | grep 22

主机名的修改

  • 查看主机名
    • hostname
    • echo $HOSTNAME
  • 临时修改主机名:hostname 名字
  • 修改主机名
    • hostnamectl set-hostname 名字 立即生效,不需重启
    • vi /etc/hostname 需要重启虚拟机

进程管理命令

  • ps
    作用:查看系统中的进程信息
    语法:ps [-auxle]
    常用选项
    • a:显示所有用户的进程
    • u:显示用户名和启动时间
    • x:显示没有控制终端的进程
    • e:显示所有进程,包括没有控制终端的进程
    • l:长格式显示
案例:
ps aux     #查看系统中所有进程,使用BSD操作系统格式,unix
ps -le        #查看系统中所有进程,使用Linux标准命令格式
eg: ps -u or ps -l  查看隶属于自己进程详细信息
eg: ps aux | grep sam    查看用户sam执行的进程 
eg: ps -ef | grep init        查看指定进程信息
  • top
    作用:查看系统健康状态,显示当前系统中耗费资源最多的进程,以及系统的一些负载情况。
    语法:top [选项]
    -d 秒数,指定几秒刷新一次,默认3秒(动态显示)
  • 后台运行程序,可以使用&,也可以使用nohup命令
ping www.baidu.com &   

nohup ping www.baidu.com &
  • fg: 将后台进程调到前台运行
  • kill :杀死进程得命令
kill -9 pid    杀死进程
kill -1 pid   重启进程

用户和组

  • Linux引入User概念,用于管理账号的基本信息,比如密码,UID,所属组,主目录,shell环境
  • 用户文件:/etc/passwd 和/etc/shadow
  • Linux引入Group概念,便于管理多用户间的关系,比如分组,文件的使用权限等,组也有GID
  • 组文件:/etc/group

用户和组的关系解释

  • 一个用户可以属于多个用户组(主用户组和附加用户组)
  • 一个用户组下可以有多个用户

用户的管理命令

  • useradd
    语法格式:useradd? [选项]? [用户名]
    常用选项:
    • -c comment 指定一段注释性描述。
    • -g 用户组 指定用户所属的用户组。
    • -G 用户组,指定用户所属的附加组。
    • -u 用户ID号 指定用户的UID

注意:当我们新增账号时,Linux系统会同时维护/etc/passwd,/etc/shadow,/etc/group等等文件的数据

  • passwd
    语法格式:passwd [选项] [用户名]
    常用选项:
    • -l 锁定口令,即禁用账号。
    • -u 口令解锁。
    • -d 使账号无口令。
    • -f 强迫用户下次登录时修改口令。

注意:用户账号刚创建时没有口令,账号被系统锁定,无法使用。只有账户指定口令后,账户才可以使用。
超级用户可以为自己和普通用户设定口令,普通用户只能修改自己的口令。

  • su:用于切换当前用户
su [用户名]

su jack  :切换到普通用户下
su:  默认是切换到root
su -: 切换到root
  • usermod
语法格式:usermod  [选项]  [用户名]
常用选项:与useradd命令中的选项一样
另外,可以使用 -l 选项 来修改用户名(建议:如果修改用户名,最好也一起把主目录也一起修改了)。
格式如下:
usermod? -l? newName ?-d /home/newName? oldName

案例1:# usermod -s /bin/ksh -d /home/ls –g adm lisi
此命令将用户lisi的登录Shell修改为ksh,主目录改为/home/ls,用户组改为adm
  • userdel
语法格式:userdel  [选项]  [用户名]
常用的选项是 -r,它的作用是把用户的主目录一起删除。

如果没有添加-r. 可以使用useradd -g 指定原组 -u 指定原uid值  用户名, 添加回来,再次删除

小总结:

  1. 添加用户时,一定不要忘记设置密码。
  2. 删除用户时,别忘记带-r选项

用户组的管理

  • groupadd
语法格式如下:groupadd  [选项]  [用户组]
常用选项有:
       -g   指定新用户组的组标识号(gid)。
       -o  一般与-g选项同时使用,表示新用户组的gid可以与系统已有用户组的gid相同。
  • groupmod
语法格式:groupmod  [选项]  [用户组]
常用的选项有:
        -g 为用户组指定新的组标识号。
        -o 与-g选项同时使用,用户组的新gid可以与系统已有用户组的gid相同。
        -n  将用户组的名字改为新名字
  • groupdel
语法格式:groupdel   [用户组]

案例1:# groupdel grp1
//从系统中删除用户组grp1。

文件权限

技术图片
owner:文件的拥有者
group:文件的所属组
others:其他人
ll -a 查看文件详情时,详情信息分7列:
-rw-r--r-- 1 root root 302 年月日时分 namelist
【 1 】 【2】 【3】 【4】 【5】 【6】 【7】

第一列: 文件或目录的类型和权限	 
	10个字符构成了第一列的信息  
	第一个字符:表示文件的类型  d:目录, -:文件
	第[2-4]字符:表示拥有者的权限  
	第[5-7]字符:表示所属组成员的权限  
	第[8-10]字符:表示其他人(others)的权限  
第二列:文件或目录的硬链接数  
第三列:文件或目录的拥有者(user owner)  
第四列:文件或目录所属的用户组  
第五列: 大小  
第六列: 最后一次修改时间 
第七列:名称  
  • chmod
修改的是文件详情中的第一列里的内容
作用:此命令用于修改文件的权限	执行权限:owner和root

语法1:chmod [ugoa][+-=][rwx] [filename]  
语法2:chmod [nnn] [filename]           n为4,2,1,0四个数字的组合之和。0~7的数字
	   第一个N表示拥有者的权限的和
	   第二个N表示所属组的权限的和
	   第三个N表示其他人的权限的和
	   

案例1:赋予文件file1所属组写权限
      chmod g+w file1
案例2:取消所有者,用户组,其他人三个部分对file1的写权限
      chmod ugo-w file1
案例3:设定目录dir1为所有用户具有全部权限
      chmod 777 dir1 
      
案例4:chmod 763 file1
	7表示拥有者的权限是可读可写可执行  
	6表示所属组的权限是可读可写
    3表示其他人的权限是可写可执行
  • chown
    change owner
修改的是文件详情中的第三列里的内容
作用:此命令用于修改文件的owner	执行权限:root

格式1:chown [-R] [newOwner] filename
参数: -R 表示递归修改拥有者

案例1:改变文件file1的拥有者为nobody
	chown  nobody  file1
案例2:修改目录dir1及其子目录和文件的拥有者为michael.
	chown -R michael: dir1
  • chgrp
    change group
修改的是文件详情中的第四列里的内容
作用:此命令用于修改文件的group	执行权限:root

格式:chgrp [-R] [newGroup] filename
功能描述:改变文件或目录的所属组

案例1:? 改变文件file1的所属组为adm
? ? ? ? ? ??chgrp? dam? file1
案例2:修改目录dir1及其子目录和文件的用户组为michael
? ? ? ? ? ? chgrp -R michael dir1


扩展写法:
案例1:将install.log的拥有者与所属组改为root 
	chown root:root install.log
案例2:修改目录dir1的用户组为root
	chown .root dir1

sudo

sudo,则是root给普通用户的一个特殊指令,普通用户不用再特意切换成root身份,就可以使用root才能使用的一些指令。仅仅需要普通用户自己的密码即可(通过配置,甚至可以不用密码)

当然,普通用户拥有sudo的使用权,必须是管理员root事先通过审核,才能开放给普通用户的。(即,除非是信任用户,否则一般用户默认是不能操作sudo的)

/etc/sudoers文件的修改

/etc/sudoers文件详解请参考 https://www.cnblogs.com/yanling-coder/p/10947157.html
进入方式1:visudo
进入方式2:vi /etc/sudoers

[root@test ~]# cat /etc/sudoers
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码 
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或  
## ## 用户组所使用  
## This file must be edited with the ‘visudo‘ command.
## 该文件必须使用"visudo"命令编辑
## Host Aliases
#主机别名
## Groups of machines. You may prefer to use hostnames (perhap using 
## wildcards for entire domains) or IP addresses instead.
## 对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符)
## 或IP地址代替,这时可以配置主机别名

# Host_Alias     FILESERVERS = fs1, fs2
# Host_Alias     MAILSERVERS = smtp, smtp2
## User Aliases
#用户别名
## These aren‘t often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname 
## rather than USERALIAS
## 这并不很常用,因为你可以通过使用组来代替一组用户的别名  
# User_Alias ADMINS = jsmith, mikem

## Command Aliases
## These are groups of related commands...
## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权限,  
## 可以通过sudo调用所有别名包含的命令,下面是一些示例

## Networking
#网络操作相关命令别名  
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient,
 /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, 
 /sbin/mii-tool
## Installation and management of software
#软件安装管理相关命令别名  
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services
#服务相关命令别名 
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
## Updating the locate database
#本地数据库升级命令别名  
Cmnd_Alias LOCATE = /usr/sbin/updatedb
## Storage
#磁盘操作相关命令别名
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
## Delegating permissions
#代理权限相关命令别名 
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
## Processes
#进程相关命令别名
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
## Drivers
#驱动命令别名
Cmnd_Alias DRIVERS = /sbin/modprobe
#环境变量的相关配置
# Defaults specification
#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear. 
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty
Defaults    env_reset
Defaults    env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR                         LS_COLORS MAIL PS1 PS2 QTDIR USERNAME                         LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION                         LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC                         LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS                         _XKB_CHARSET XAUTHORITY"
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享)
## Syntax:
##语法
##      user    MACHINE=COMMANDS
##  用户 登录的主机=(可以变换的身份) 可以执行的命令  
##
## The COMMANDS section may have other options added to it.
## 命令部分可以附带一些其它的选项  
##
## Allow root to run any commands anywhere 
## 允许root用户执行任意路径下的任意命令 
root    ALL=(ALL)       ALL
## Allows members of the ‘sys‘ group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令

## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL
## 允许wheel用户组中的用户执行所有命令  
## Same thing without a password
## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
# %wheel        ALL=(ALL)       NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令 
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now
## 允许users用户组中的用户像root用户一样使用shutdown命令

找到99行左右,也就是以下注释内容:进行修改

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL
#使lily拥有和root一样的权限
lisi    ALL=(ALL)       ALL

# 找到也就是以下注释内容:进行修改无密码操作
## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
lisi    ALL=(ALL)       NOPASSWD:ALL





































以上是关于Linux(三)——高级命令的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript笔试题(js高级代码片段)

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

Linux Shell高级技巧

linux中怎么查看mysql数据库版本

Linux目录和文件高级操作精讲

markdown [Docker] Docker片段列表和命令#linux #docker #snippets