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 status firewalld
- 临时关闭
- 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
需要重启虚拟机
- hostnamectl set-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值 用户名, 添加回来,再次删除
小总结:
- 添加用户时,一定不要忘记设置密码。
- 删除用户时,别忘记带-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(三)——高级命令的主要内容,如果未能解决你的问题,请参考以下文章