一. Linux 概述
1.1 Linux是什么
Linux 是一个操作系统平台,我们平时常用的操作系统是 Windows。如果是苹果电脑,操作系统是 MacOS。那么还有一款系统叫做 Unix。其实 Unix 是一款比 Linux 更老的操作系统,而平时手机上的 Android 系统也是一款 Linux 操作系统。只不过 Windows 系统有非常好的可视化界面功能,一般应用于办公娱乐。而 Linux 系统常用于服务器,像百度,阿里,腾讯,字节跳动等一线互联网公司 99% 的操作系统都是 Linux。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。Linux 能运行主要的 Unix 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
1.2 Linux与Windows区别
1.3 要养成的习惯
- 使用命令行
- 操作要谨慎
- 安全不可忽视
二.常用命令
cd
命令是”change directory”中单词的首字母缩写,其英文释义是改变目录,所以该命令的功能是从当前目录切换到指定目录。
~
也表示为用户目录的意思,.
则是表示目前所在的目录,..
则表示当前目录位置的上一级目录。
mkdir
命令是make directories
的缩写,用来创建目录。
rmdir
命令作用是删除空的目录。【不常用】
rm
是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。
cp
命令可以理解为英文单词copy
的缩写,其功能为复制文件或目录。
mv
命令是move
单词的缩写,其功能大致和英文含义一样,可以移动文件或对其改名。
Linux
系统中有很多个用于查看文件内容的命令,每个命令又都有自己的特点,比如这个cat
命令就是用于查看内容较少的纯文本文件的。
tac
命令就是将文件反向输出,刚好和cat
输出相反。【不常用】
more
命令用于将内容较长的文本文件内容(不能在一屏显示完)进行分屏显示,并且支持在显示时定位关键字。而对于内容较少的文本文件内容则推荐使用cat命令查看。
less
的作用与more
十分相似,不同点为less
命令允许用户向前或向后浏览文件,而more
命令只能向前浏览 。
head命令以行为单位,取文件的内容,后面不接参数时默认打印前10行。
tail用于显示文件尾部的内容,默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
-
**语法格式:**tail [参数]
-
常用参数:
-
-
13 文件权限属性
-
-
我们使用
ll
命令查看当前目录下的文件时,共显示9列内容,分别为:权限,占用的节点数【如果是目录,与子目录的数量有关】,文件的所有者,文件所属组,文件的大小,【6,7,8】表示文件的最后一次修改的时间【mtime】,文件名
drwxr-xr-x
d:表示该文件是目录
r:表示该文件是可读的
w:表示该文件是可写的
x:表示该文件是可执行的
rwx
三个一组,分别为:当前用户的权限,同一用户组其他用户的权限,【不在同一用户组的】其他用户的权限
14 chgrp
chgrp
是英语单词“change group”的缩写,命令的作用和其中文释义一样,为用于变更文件或目录的所属群组。
Linux/Unix 属于多用户多任务操作系统,所有的文件皆有拥有者。利用 chown 命令可以将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID,组可以是组名或者组ID,文件是以空格分开的要改变权限的文件列表,支持通配符。 一般来说,这个指令仅限系统管理者(root)所使用,普通用户没有权限改变文件所属者及所属组 。
chmod
命令的英文原意是“change the permissions mode of a file”,我们简称为“change mode”,意为用来改变文件或目录权限的命令,但是只有文件的属主和超级用户root才能执行这个命令。有两种模式,一种是采用权限字母和操作符表达式;另一种是采用数字。 权限字母分别为:u【user】,g【group】,o【others】,a【all】。可以使用u=rwx
修改权限,也可以使用u+
和u-
来增加和减少权限。
如果使用数字,具体规则为r【4】,w【2】,x【1】,那么想设置权限为rwxrw-rwx
那么就是767
。
umask命令可用来设定权限掩码。权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。 默认情况下,目录的权限值为755
,普通文件的权限值为644
,那么这个值是由谁来确定的呢?究其根本其实就是umask
命令。
比如目录的权限为755
,其实就是由777 - 022
得到的;文件的权限644
,其实就是由666-022
得到的。但是并不是单纯的减法,比如umask
的值为033
的话,文件权限不是666-033
,而是644
。
18 chattr
chattr
指令可改变linux
文件系统的文件属性,通用格式为:+-=[aAcCdDeijsStTu]
aAcCdDeijsStTu
表示可以赋予文件的新属性,这些属性共有以下几种模式 。
- a:让文件或目录仅供附加用途,表示该文件只能追加不能删除,非roo用户不能设定该权限。
- A:当一个具有“A”属性的文件被访问时,它的atime记录不会被修改;
- c:将文件或目录压缩后存放,读取时自动解压
- d:将文件或目录排除在倾倒操作之外;
- i:不得任意更动文件或目录;
- j:如果文件系统安装有“data=order”或“data=writeback”选项,则具有“j”属性的文件在写入文件本身之前将其所有数据写入ext 3日志;
- s:当删除具有“s”属性集的文件时,其块将被归零并写回磁盘;
- s:当修改具有“s”属性集的文件时,更改将同步写入磁盘;这相当于应用于文件子集的“同步”挂载选项;
- u:当删除具有‘u’属性集的文件时,它的内容将被保存。
-
19 lsattr
lsattr
【list attribute】,该命令用于读取文件或者目录的特殊权限。
- a:类似于ls -a,即联通隐藏文件一同列出
- R:连同子目录一起列出
20 which【重点】
which
命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。运维人员在日常工作中经常使用which命令来检查某个系统命令是否存在,或者找出所执行命令所对应的具体位置。
whereis
命令用来定位命令的二进制程序、源代码文件和man
手册页等相关文件的路径。
whereis
命令查找速度非常快,因为它不是在磁盘中乱找,而是在一个数据库中查询; 数据库是linux
系统自动创建的,包含有本地所有文件的信息,并且每天通过自动执行updatedb
命令更新一次。正因为这样,whereis
命令的搜索结果有时候会不准确,比如刚添加的文件可能搜不到, 原因就是该数据库文件没有被更新。
locate
命令其实是find -name
的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,值得注意的是:版本不同,会有所不同。有的版本位置是 /var/lib/mlocate/mlocatedb ,还有的是/var/lib/slocate/slocate.db ,这个数据库中含有本地所有文件信息。
Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
- 语法格式:locate [参数] [文件]
23 find【重点】
find
命令可以根据给定的路径和表达式查找的文件或目录。find
参数选项很多,并且支持正则,功能强大。和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。
find
如不加任何参数,表示查找当前路径下的所有文件和目录,如果服务器负载比较高尽量不要在高峰期使用find
命令,find
命令模糊搜索还是比较消耗系统资源的。
ln命令是linux系统中一个非常重要命令,英文全称是“link”,即链接的意思,它的功能是为某一个文件在另外一个位置建立一个同步的链接。 一种是hard link,又称为硬链接;另一种是symbolic link,又称为符号链接或软连接。
通俗一点理解,可以把硬链接当成源文件的副本,他和源文件一样的大小,但是事实上却不占任何空间。符号链接可以理解为类似windows一样的快捷方式。
三. Linux 系统用户和用户组管理
3.1 基本概念
Linux/Unix是一个用户、多任务的操作系统;在讲Linux账号及账户组管理之前,先简单了解一下多用户、多任务操作系统的基本概念。
3.1.1 Linux的单用户多任务
在Linux下,当你登录后,你也可以同时开启很多的服务任务和进程,而各自服务都会跑的很好却对其他任务没有任何影响,这种登录一个用户登录系统执行多个服务任务和进程的情况,就称为单用户多任务。
3.1.2 Linux的多用户多任务
有时可能是很多用户同时用同一个系统,如公司几十个运维人员,每台机器都可以和被若干个运维人员登录部署或解决相关故障问题,但并不是所有的运维人员都要做同一件事,所以就有了多任务、多用户的情况。
值得注意的是:多用户、多任务并不是大家同时挤到一起,在一台机器的键盘和显示器前来操作机器,多用户可能是通过SSH客户端工具
等远程工具等远程登录服务器来进行,比如对服务器的运程控制,只要具有相关用户的权限,任何人都是可以上去操作访问服务器。
3.1.3 系统用户角色划分
用户在系统中是分角色的,在 Linux 系统中,由于角色的不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过 UID 和 GID 识别的;特别是 UID,在运维工作中,一个 UID 是唯一标识一个系统用户的账号。
-
用户账户
超级用户root(0)
程序用户(伪用户)(1~499)
普通用户(500~65535) -
超级用户
默认是 root 用户,其 UID 和 GID 均为0。在每台 Unix/Linux 操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。在生产环境,一般禁止 root 账号远程登录SSH连接服务器,以加强系统安全。
-
普通用户
这类用户一般是由具备系统管理员root的权限的运维人员添加的。
-
程序用户
与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在的,且默认情况不能登录系统,它们是系统正常运行必不可少的,他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求。例如系统默认的 bin、adm、nodoby、mail 用户等。由于服务器角色的不同,有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)。
3.1.4 安全性
多用户系统从实际来说使得系统管理更为方便了。从安全角度来说,多用户也更为安全,比如普通用户 zyf 下的某个文件不想让其他用户看到,只是设置一下该文件的权限为普通用户 zyf 一个用户可读可写可执行的权限就行了,这样以来只有普通用户 zyf 一个用户可以对其私有文件进行操作,从而达到了保护每个用户的私有数据安全。
3.2 账户(user)和账户组(group)
3.2.1 用户(user)介绍
如果要使用系统资源,就必须向系统管理员申请一个账号,然后通过这个账号进入系统。这个账号和用户是同一个账号,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。
每一个用户都有一个唯一的用户名和用户口令(密码),在登录系统后,只有正确输入了用户名和密码,才能登录系统和相应的目录。
在生产环境中,一般会为每一个有权限管理服务器的运维人员分配一个独立的普通用户账号及8位以上(包含数字、字母)以上的密码。
如 zyf 普通用户,该人员只能通过建立的这个账号登录到系统中进行维护,当需要超级用户权限时,可以通过"sudo 命令名"方式来执行仅有root权限才允许执行的权限。当然,sudo 权限要尽量的小。还有,当运维人数不多时(如2-3个),也可以直接 su - 切换到超级用户 root 下,再执行相应的维护工作。特别提醒,维护时,如果不需要 root 权限,就不要进入 root 用户下操作,以减少误操作对系统带来的损失。
3.2.2 用户组(group)介绍
简单的说,Linux 系统中的用户组(group)就是具有相同特性的用户(user)集合。
有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件或目录,如果不用用户组,这种需求在授权时就很难实现。如果使用用户组就方便多了,只需要把授权的用户都加入到同一个用户组里,然后通过修改该文件或目录的对应的用户组的权限,让用户组具有符合需求的操作权限,这样用户组下的所有用户对该文件或目录就会具有相同的权限,这就是用户组的用途。
将用户分组是 Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了运维管理工作。
实际上,在日常生活中,对人类的分组也是无处不在的,大到国家,小到公司,家庭,学校,班级等等都类似Linux 中用户组的概念,而其中的成员就类似 Linux 用户组中用户的概念。
3.2.3 用户和用户组的对应关系
用户和用户组的对应关系有:一对一、一对多、多对一和多对多.
一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。比如,root。
一对多:即一个用户可以存在多个组中,这个用户就具有这些组。
多对一:即多个用户可以存在一个组中,这些用户这些组的共同权限。
多对多:即多用户可以存在于多个组中。并且几个用户可以归属相同的组;其实多对多的关系是前面三条的扩展。
组账户
基本组(私有组)
附加组(公共组)
3.3 用户及用户组配置文件介绍
Linux系统中下的账户文件主要有 /etc/passwd
、/etc/shadow
、/etc/group
、/etc/gshadow
四个文件。
/etc/passwd
#用户的配置文件, 保存用户账户的基本信息
/etc/shadow
#用户影子口令文件
/etc/group
#用户组配置文件
/etc/gshadow
#用户组的影子文件
3.3.1 /etc/passwd
/etc/passwd
文件中每行定义一个用户账号,有多少行就表示多少个账号,在一行中可以清晰的看出,各内容之间又通过”:”号划分了7个字段,这7个字段分别定义了账号的不同属性,passwd文件实际内容如下:
[root@localhost ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
在 passwd
文件中,第一行内容就是超级用户 root 行,可以看到它的uid和gid都为0。为了方便理解,下面是各字段的描述:
-
字段1
帐号名,这是用户登陆时使用的账户名称,在系统中是唯一的,不能重名
-
字段2
密码占位符x;早期的unix系统中,该字段是存放账户和密码的,由于安全原因,后来把这个密码字段内容移到/etc/shadow中了。这里可以看到一个字母x,表示该用户的密码是/etc/shadow文件中保护的。
-
字段3
UID:范围是0-65535
-
字段4
GID:范围是0-65535。当添加用户时,默认情况下会同时建立一个与用户同名且UID和GID相同的组。
-
字段5
用户说明:这个字段是对这个账户的说明
-
字段6
用户主目录:用户登陆后首先进入的目录,一般是"/home/用户名"这样的目录
-
字段7
登录 Shell :当前用户登陆后所使用的shell,在 centos/rhel 系统中,默认的 shell 是bash;如果不希望用户登陆系统,可以通过 usermod 或者手动修改passwd设置,将该字段设置为/sbin/nologin 即可。大多数内置系统账户都是/sbin/nologin,这表示禁止登陆系统。这是出于安全考虑的。
3.3.2 /etc/shadow
由于passwd文件必须要被所有的用户读,所以会带来安全隐患。而shadow文件就是为了解决这个安全隐患而增加的。
[root@localhost ~]# more /etc/shadow
root:$6$RFWekxbh2Zs695t.$R1aNhbUkaEAZ7g9yTNg83FcwcHfRiYP
Q8QWRHztwlx1B8eohKWcud1JaHoHUoA5WWpF2dl6ytuRJt7e/ldLHN0:
:0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
sync:*:17834:0:99999:7:::
-
字段1
帐号名称
-
字段2
加密的密码
-
字段3
最近更改密码的时间;从1970/1/1到上次修改密码的天数
-
字段4
禁止修改密码的天数;从1970/1/1开始,多少天之内不能修改密码,默认值为0
-
字段5
用户必须更改口令的天数;密码的最长有效天数,默认值为99999
-
字段6
警告更改密码的期限;密码过期之前警告天数,默认值为7;在用户密码过期前多少天提醒用户更改密码
-
字段7
不活动时间;密码过期之后账户宽限时间 3+5;在用户密码过期之后到禁用账户的天数
-
字段8
帐号失效时间,默认值为空;从1970/1/1日起,到用户被禁用的天数
-
字段9
保留字段(未使用),标志
3.3.3 /etc/group
/etc/group
文件是用户组的配置文件,内容包括用户与用户组,并且能显示用户归属哪个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用户组的用户之间具有相似的特性。如果某个用户下有对系统管理有最重要的内容,最好让用户拥有独立的用户组,或者是把用户下的文件的权限设置为完全私有;另外root用户组一般不要轻易把普通用户加入进入。
[root@localhost ~]# more /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
-
字段1
组账户名称
-
字段2
密码占位符x;通常不需要设置该密码,由于安全原因,该密码被记录在/etc/gshadow中,因此显示为’x’。这类似/etc/shadow
-
字段3
组账户GID号,用户组ID
-
字段4
本组的成员用户列表;加入这个组的所有用户账号
3.3.4 /etc/gshadow
/etc/gshaow
是 /etc/group
的加密文件,比如用户组的管理密码就是存放在这个文件。/etc/group
和 /etc/gshadow是互补的两个文件;比如大型服务器,针对很多用户和用户组,定制一些关系结构比较复杂的额权限模型,设置用户组密码是极有必要的。比如不想让一些非用户组成员永久拥有用户组的权限和特性,这时就可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码;/etc/gshadow格式如下,每个用户组独占一行;
[root@localhost ~]# more /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
-
字段1
组账号的名称
-
字段2
加密后的密码字符串,这个字段可以空的或者!;如果是空的或有!,表示没有密码
-
字段3
本组的管理员列表;这个字段也可为空;如果有多个用户组管理员,用,号分隔
-
字段4
本组的成员列表;加入这个组的所有用户账户;列表中多个用户通过","分隔
3.4 用户管理
3.4.1 添加用户
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
-
基本语法
useradd 选项 用户名
-
参数使用
-
选项:
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用 -m 选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
- -e 用户终止日期,日期的格式为YYYY-MM-DD
- -f 用户过期几日后永久停权。当值为0时用户立即被停权,而值为-1时则关闭此功能,预设值为-1
-
用户名:
指定新账号的登录名。
-
-
参考实例
创建了一个用户 zhang,其中 -d 和 -m 选项用来为登录名 zhang 产生一个主目录 /home/zhang
useradd –d /home/zhang -m zhang
新建一个用户 wang ,该用户的登录Shell是
/bin/sh
,它属于group用户组,同时又属于wang和root用户组,其中group用户组是其主组。useradd -s /bin/sh -g group –G wang,root wang
添加新用户 zhang,指定UID为888,指定归属用户组为root,aa成员,其shell类型为/bin/sh:
useradd -u 888 -s /bin/sh -G root,aa zhang
添加新用户zhang,设置家目录为/tmp/zhang,用户过期时间为2019/11/03.过期后两天停权:
useradd -e "2019/11/03" -f 2 -d /tmp/zhang zhang
3.4.2 删除用户
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。
-
基本格式
userdel 选项 用户名
-
参数说明
-f 强制删除用户账号 参数名 描述 -r 删除用户主目录及其中的任何文件**【重点】** -h 显示命令的帮助信息 -
参考实例
删除用户,但不删除其家目录及文件:
userdel zhang
删除用户,并将其家目录及文件一并删除 :
userdel -r zhang
3.4.3 修改用户
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
-
基本语法
usermod 选项 用户名
-
参数说明
参数名 描述 -c<备注> 修改用户账号的备注文字 -d<登入目录> 修改用户登入时的目录 -e<有效期限> 修改账号的有效期限 -f<缓冲天数> 修改在密码过期后多少天即关闭该账号 -g<群组> 修改用户所属的群组 -G<群组> 修改用户所属的附加群组 -l<账号名称> 修改用户账号名称 -L 锁定用户密码,使密码无效 -s 修改用户登入后所使用的shell -u 修改用户ID -U 解除密码锁定 -
参考实例
更改登录目录:
usermod -d /home/zhang root
改变用户的uid:
usermod -u 777 root
修改用户名为zhang1:
usermod -l zhang1 zhang
锁定linuxcool的密码:
usermod -L zhang
解锁linuxcool的密码:
usermod -U zhang
3.4.4 密码管理
用户管理的一项重要内容是用户密码的管理。用户账号刚创建时没有密码,但是被系统锁定,无法使用,必须为其指定密码后才可以使用,即使是指定空密码。
指定和修改用户密码的Shell命令是passwd
。超级用户可以为自己和其他用户指定密码,普通用户只能用它修改自己的密码。
-
基本语法
passwd 选项 用户名
-
参数说明
参数名 描述 -d 删除密码 -l 锁定用户密码,无法被用户自行修改 -u 解开已锁定用户密码,允许用户自行修改 -e 密码立即过期,下次登陆强制修改密码 -k 保留即将过期的用户在期满后能仍能使用 -S 查询密码状态 -
参考实例
修改当前登录的账户密码:
passwd
修改其他用户密码(假设有zhang用户):
passwd zhang
锁定密码不允许用户修改:
passwd -l zhang
解除锁定密码,允许用户修改:
passwd -u zhang
下次登陆强制改密码:
passwd -e zhang
清除登录密码。清除之后登录时无需密码,风险极大,不推荐使用:
passwd -d zhang
查询密码状态:
passwd -S zhang
3.4.5 用户切换
su
命令用于切换当前用户身份到指定用户或者以指定用户的身份执行命令或程序。
普通用户切换到 root
用户,可以使用 su --
或 su root
,但是必须输入 root
密码才能完成切换。root
用户切换到普通用户,可以使用 su username
,不需要输入任何密码即可完成切换。
切换到 zhang 用户,但环境变量仍然是 root 用户的:
[root@localhost ~]# su zhang
切换到 zhang 用户,并改变为 zhang 用户环境变量:
[root@localhost ~]# su - zhang
3.5 用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。
3.5.1 添加用户组
groupadd
命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
-
基本语法
groupadd 选项 用户组
-
参数说明
参数名 描述 -g 指定新建用户组的id -r 创建系统用户组,系统用户组的组ID小于500 -o 允许添加组ID号不唯一的用户组 -
参考实例
增加了一个新组zhang,新组的组标识号是在当前已有的最大组标识号的基础上加1。
groupadd zhang
使用-g参数新建zhang用户组名,1005是用户组id
groupadd -g 1005 zhang
使用-r创建系统用户组
groupadd -r -g 368 zhang
3.5.2 删除用户组
groupdel命令用于删除指定的用户组, 给出的组名必须存在。若该用户组中仍包括某些用户,则必须先删除这些用户后,方能删除用户组。
-
基本语法
groupdel 用户组
-
参考实例
删除组zhang
groupdel zhang
3.5.3 修改用户组
-
基本语法
groupmod 选项 用户组;
-
参数说明
参数名 描述 -g 设置欲使用的群组识别码 -o 重复使用群组识别码 -n 设置欲使用的群组名称 -
参考实例
将组 zhang 的组标识号修改为102。
groupmod -g 102 zhang
将组 zhang 的标识号改为10000,组名修改为 wang。
groupmod –g 10000 -n wang zhang
3.5.4 用户组切换
用户可以在登录后,使用命令 newgrp
切换到其他用户组,这个命令的参数就是目的用户组 。
这条命令将当前用户切换到 root
用户组,前提条件是 root
用户组确实是该用户的主组或附加组。
newgrp root
四. Linux 磁盘管理
Linux 磁盘管理好坏直接关系到整个系统的性能问题。Linux 磁盘管理常用三个命令为 df
、du
和 fdisk
。
4.1 常用命令
4.1.1 df
df
命令的英文全称即 Disk Free
,顾名思义功能是用于显示系统上可使用的磁盘空间。默认显示单位为 KB
,建议使用 df -h
的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。日常普遍用该命令可以查看磁盘被占用了多少空间、还剩多少空间等信息。
-
基本语法
df [参数] [指定文件或目录]
-
参数说明
参数名 描述 -a 显示所有系统文件,包含隐藏文件 -B <块大小> 指定显示时的块大小 -h 以比较友好的方式显示,超过G则显示单位为G,默认为 KB【重点】 -H 以1000 字节为换算单位来友好显示 -i 显示索引字节信息 -k 指定块大小为1KB -l 只显示本地文件系统 -t <文件系统类型> 只显示指定类型的文件系统 -T 输出时显示文件系统类型 -
参考实例
默认情况显示如下:
[root@node01 ~]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/mapper/centos-root 38815216 1831540 36983676 5% / devtmpfs 1918596 0 1918596 0% /dev tmpfs 1930756 0 1930756 0% /dev/shm tmpfs 1930756 11832 1918924 1% /run tmpfs 1930756 0 1930756 0% /sys/fs/cgroup /dev/sda1 1038336 148712 889624 15% /boot /dev/mapper/centos-home 18950144 32992 18917152 1% /home tmpfs 386152 0 386152 0% /run/user/0
针对以上信息进行说明:
挂载点
挂载点实际上就是 Linux 中的磁盘文件系统的入口目录,类似于 Windows 中的用来访问不同分区的C:、D:、E:等盘符
tmpfs
第一列显示的是分区的名字,这种分区都是一些临时文件系统,重启即消失,不要碰
以友好方式显示
[root@node01 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 38G 1.8G 36G 5% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 12M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 1014M 146M 869M 15% /boot /dev/mapper/centos-home 19G 33M 19G 1% /home tmpfs 378M 0 378M 0% /run/user/0
显示文件类型等信息
[root@node01 ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 38G 1.8G 36G 5% / devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 1.9G 12M 1.9G 1% /run tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 146M 869M 15% /boot /dev/mapper/centos-home xfs 19G 33M 19G 1% /home tmpfs tmpfs 378M 0 378M 0% /run/user/0
查看指定目录或文件所在分区的使用情况
[root@node01 ~]# df -h /opt 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 38G 1.8G 36G 5% /
显示文件类型为ext4的磁盘使用情况
[root@node01 ~]# df -t xfs -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 38G 1.8G 36G 5% / /dev/sda1 xfs 1014M 146M 869M 15% /boot /dev/mapper/centos-home xfs 19G 33M 19G 1% /home
4.1.2 du
Linux du
【 Disk Usage 】命令也是查看使用空间的,但是与 df
命令不同的是 Linux du
命令是对文件和目录磁盘使用的空间的查看,还是和 df
命令有一些区别的。
-
基本语法
du [参数] [文件或目录]
-
参数说明
参数名称 描述 -a 显示目录中所有文件【包含隐藏文件或目录】大小 -k 以KB为单位显示文件大小 -m 以MB为单位显示文件大小 -g 以GB为单位显示文件大小 -h 以友好方式显示文件大小【常用】 -s 仅显示总计 -
参考实例
输出指定目录下各个子目录所使用的空间
[root@node01 ~]# du -h --max-depth=1 / 113M /boot 0 /dev 0 /home 0 /proc 12M /run 0 /sys 31M /etc 44K /root 104M /var 0 /tmp 874M /usr 0 /media 0 /mnt 731M /opt 0 /srv 1.9G /
输出指定目录所使用的空间总和
[root@node01 ~]# du -hs / 1.9G /
4.2 创建 swap 增加虚拟内存
swap 类似于 Windows 的虚拟内存,分区的时候一般指定虚拟内存为实际内存的 2 倍。如果实际内存超过 4 GB,那么划分 8 GB 给虚拟内存就足够了。如果真遇到了虚拟内存不够用的情况,那么就必须增加一个虚拟磁盘,因为不可能重新给磁盘分区。增加虚拟磁盘的思路是:创建 swap文件——>格式化为 swap 格式——>启用虚拟磁盘。
## 创建一个虚拟内存文件
[root@node01 ~]# dd if=/dev/zero of=/tmp/myswap bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,4.5663 秒,235 MB/秒
## 查看当前的虚拟内存
[root@node01 ~]# free -m
total used free shared buff/cache available
Mem: 3771 112 2435 11 1222 3379
Swap: 3967 0 3967
## 格式化文件为 swap格式
[root@node01 ~]# mkswap -f /tmp/myswap
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=64ee0279-0ef8-48c4-a34f-674119cdaa73
## 挂载虚拟内存
[root@node01 ~]# swapon /tmp/myswap
swapon: /tmp/myswap:不安全的权限 0644,建议使用 0600。## 只是提示不安全,没有影响
## 虚拟内存增加
[root@node01 ~]# free -m
total used free shared buff/cache available
Mem: 3771 113 2435 11 1222 3379
Swap: 4991 0 4991
五. vim 编辑工具
之前已经多次使用过 vi
这个命令,在早期的 Unix
系统中,都是使用的 vi
编辑器,那么 vi
和 vim
有什么区别呢?其实 vim
就是 vi
的升级版,使用 vim
最大的好处就是可以让文本文件根据格式显示不同的颜色。由于我们使用的是最小化安装,因此我们的系统中没有 vim
工具,需要使用 yum
进行安装。
[root@node01 ~]# yum -y install vim
Vim
编辑器有三种模式:一般模式、编辑模式和命令模式。
5.1 一般模式
使用命令 vim filepath
编辑文件时,默认进入的就是一般模式,在这种模式下可以进行的操作有:光标移动、删除字符、删除行、复制和粘贴操作。
首先复制文件 /etc/profile 到 /opt/目录,并重命名为 aaa,然后使用 vim 进行编辑。
cp /etc/profile /opt/aaa
vim /opt/aaa
光标移动操作如表 5.1 所示:
按键 | 作用 |
---|---|
h或者左方向键 | 光标向左移动一个字符 |
l或者右方向键 | 光标向右移动一个字符 |
k或者上方向键 | 光标向上移动一个字符 |
j或者下方向键 | 光标向下移动一个字符 |
Ctrl+B | 文本向前翻一页 |
Ctrl+F | 文本向后翻一页 |
0或者 Shift+6 | 光标移动到行首 |
Shift+4 | 光标移动到行尾 |
gg | 移动到首行 |
G | 移动到尾行 |
nG | 移动到第 n 行【n 为任意整数】 |
字符或字符串的复制、粘贴、删除操作如表 7.2 所示:
按键 | 作用 |
---|---|
x | 向后删除 1 个字符 |
X | 向前删除 1 个字符 |
nx | 向后删除 n 个字符 |
dd | 删除/剪切光标所在行 |
ndd | 删除/剪切光标所在行之后的 n 行 |
D | 删除/剪切光标位置到行尾 |
dG | 删除/剪切光标位置到最后一行 |
yy | 复制光标所在行 |
p【小写】 | 从光标所在行开始,向下粘贴已经复制/剪切的内容 |
P【大写】 | 从光标所在行开始,向上粘贴已经复制/剪切的内容 |
nyy | 从光标所在行开始,向下复制 n 行 |
u | 还原上一步操作 |
Ctrl+r | 撤销操作,直接返回到最新的操作【类似于还原下一步,直到最新】 |
v【视图模式】 | 可以选中多个字符,然后可以实现复制粘贴等操作 |
V【行视图模式】 | 可以选中多行,然后可以实现复制粘贴等操作 |
r | 替换光标位置的字符 |
R | 从光标位置开始替换,直到按 esc 结束 |
5.2 编辑模式
在一般模式下不能修改某一个字符,亦不能添加数据,要编辑文件,则需要进入到编辑模式【有时候也叫插入模式】。进入编辑模式的操作如表 7.3 所示:
按键 | 作用 |
---|---|
i | 在光标位置前插入 |
I | 在光标所在行的行首插入 |
a | 在光标位置后插入 |
A | 在光标所在行行尾插入 |
o | 在光标所在行的下面插入新的一行 |
O | 在光标所在行的上面插入新的一行 |
5.3 命令模式
在一般模式下,输入 : 或者 / 就可以进入命令模式,在该模式下可以实现搜索、替换、保存、退出、显示行号等操作。具体操作如表 7.4 所示。
命令 | 作用 |
---|---|
/word | 在光标后搜索字符串 word,按 n 向后继续搜索【N则反向搜索】 |
?word | 在光标前搜索字符串 word,按 n 向前继续搜索 |
:n1,n2s/w1/w2/g | 在 n1 和 n2 之间查找w1并且替换为w2,不加 g 则只替换每行的第一个 w1 |
:1,$s/w1/w2/g | 将文档中的所有 w1 替换为 w2,不加 g 则只替换每行的第一个 w1 |
:w | 保存内容 |
:q | 退出 vim |
:w! | 强制保存,在 root 用户下,即使是只读文件也可保存 |
:q! | 强制退出,不保存 |
:wq | 保存并退出 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:n | 光标移动到第 n 行 |