Linux入门

1、Linux简介

Linux英文解释为Linux is not Unix。它是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

Linux是在1991由林纳斯·托瓦兹在赫尔辛基大学上学时创立的,主要受到Minix和Unix思想的启发。Linux内核最初只是出于个人爱好而编写的。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux遵循GNU通用公共许可证(GPL),任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。由于Linux是自由软件,任何人都可以创建一个符合自己需求的Linux发行版。

总结:Linux是一套开源的类Unix多用户的操作系统,支持32位和64位。

2、Linux的发行版

Linux的发行版说简单点就是将Linux内核与应用软件做一个打包。如下图:
在这里插入图片描述
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
在这里插入图片描述

3、Linux和Windows的比较

目前国内Linux更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下表:
在这里插入图片描述
一般用户使用的都是Windows操作系统,因为它的界面友好,无需掌握太多计算机方面的知识即可轻松上手,Linux一般用作服务器,作为开发人员,掌握它的基本使用是非常有必要的。

4、Linux的安装

略。这里直接使用云机,版本为CentOS8.1内核版本。

5、远程连接Linux

我们一般使用的是Windows系统,而Linux系统作为服务器使用的话一般是放在机房的,我们需要远程连接。使用SSH工具进行连接。这里使用PUTTY来连接,先去网上下载PUTTY,安装好:
在这里插入图片描述
打开PUTTY:
在这里插入图片描述
Session里输入ip地址、端口,连接方式选择SSH,这里的端口为22,如果是云主机的话,需要去安全组将此端口开放出来。然后点击Open:
在这里插入图片描述
输入账号和密码进行验证登录:
在这里插入图片描述
账号默认是root,密码是自己设置的,注意,输入密码的时候是不显示的,所以并不是没有输入,这是保护用户账号安全一种措施。校验成功后登录成功。

6、Linux的启动过程

Linux系统的启动过程可以分为5个阶段:

  • 内核的引导。
  • 运行init。
  • 系统初始化。
  • 建立终端 。
  • 用户登录系统。
    在这里插入图片描述

(1)内核引导

当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。如下图:
在这里插入图片描述
(2)运行init

init进程是系统所有进程的起点,没有这个进程,系统中任何进程都不会启动。init程序首先是需要读取配置文件 /etc/inittab。如下图:
在这里插入图片描述
关于运行有不同的运行级别。

运行级别:

许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。

init进程的一大任务,就是去运行这些开机启动的程序。但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
在这里插入图片描述
Linux系统有7个运行级别(runlevel):

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动。
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆。
  • 运行级别2:多用户状态(没有NFS)。
  • 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式。
  • 运行级别4:系统未使用,保留。
  • 运行级别5:X11控制台,登陆后进入图形GUI模式。
  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。

(3)系统初始化

在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit。
它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。
在这里插入图片描述
表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。/etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的连接文件,对于以 S 开头的启动脚本,将以start参数来运行。而如果发现存在相应的脚本也存在K打头的连接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的"System Services"来自行设定。
在这里插入图片描述
(4)建立终端

rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。

(5)用户登录系统

一般来说,用户的登录方式有三种:

  • 命令行登录
  • ssh登录
  • 图形界面登录
    在这里插入图片描述
    Linux关机

一般情况下Linux作为服务器是不会关机的,服务器上跑一个服务是永无止境的,除非特殊情况下才会关机。
正确的关机流程为:sync > shutdown > reboot > halt

7、Linux的目录结构

在root路径下,输入:ls /
在这里插入图片描述
所有目录就是这样,标记的是我自己建立的目录, 把它去掉。

树状目录结构如下:
在这里插入图片描述
说明:

  • bin:bin 是Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
  • boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • dev:dev是Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
  • etc:etc是Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
  • lib:lib是Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
  • media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下。
  • mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
  • opt:opt是optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
  • proc:proc是Processes(进程) 的缩写,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件。
  • root:该目录为系统管理员,也称作超级权限者的用户主目录。
  • sbin:s就是Super User的意思,是Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
  • sys:这是Linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
  • tmp:tmp是temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
  • usr:usr是unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • var:var是variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
  • srv:该目录存放一些服务启动之后需要提取的数据。

8、Linux的文件属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:

  • chown (change ownerp) : 修改所属用户与组。
  • chmod (change mode) : 修改用户的权限。

在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如下:
在这里插入图片描述
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
实例中,bin文件的第一个属性用d表示。d在Linux中代表该文件是一个目录文件。说明如下:

  • 当为 d 则是目录
  • 当为 - 则是文件
  • 若是 l 则表示为链接文档(link file)
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

接下来的字符中,以三个为一组,且均为rwx的三个参数的组合。其中, r代表可读(read)、 w代表可写(write)、 x代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。如下图:
在这里插入图片描述
每个文件的属性由左边第一部分的10个字符来确定。如下图:
在这里插入图片描述
从左至右用 0-9 这些数字来表示。

第0位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。

第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。

其中,第 1、4、7 位表示读权限,如果用r字符表示,则有读权限,如果用 - 字符表示,则没有读权限。第 2、5、8 位表示写权限,如果用w字符表示,则有写权限,如果用 - 字符表示没有写权限。第 3、6、9 位表示可执行权限,如果用x字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。

(1)文件属主和属组

在这里插入图片描述
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

在以上实例中,所有文件是都是一个目录文件,属主和属组都为root,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。对于root用户来说,一般情况下,文件的权限对其不起作用。

(2)更改文件的属性

chgrp:更改文件属组
语法如下:

chgrp [-R] 属组名 文件名

参数:

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

chown:更改文件属主,也可以同时更改文件属组
语法如下:

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

下面将client文件的属主改为ycz这个用户。
在根目录下,先创建新用户:
在这里插入图片描述
然后改变文件的属主:
在这里插入图片描述
查看:
在这里插入图片描述
可以看到文件的属主已经改变了,照同样的方式改回来。

chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others(拥有者/组/其他) 三种身份各有自己的read/write/execute权限,一共3*3=9种。
在这里插入图片描述
用户的权限就是1-9位9个字符,3个一组。其中,我们可以使用数字来代表各个权限,各权限的分数对照如下:

  • r:4
  • w:2
  • x:1
  • 横线:0

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为drwxr-xr-x时,分数分别为:

  • owner:分数为4+2+1=7。
  • group:分数为4+0+1=5。
  • others:分数为4+0+1=5。

所以设定权限的变更时,该文件的权限数字就是770。变更权限的指令chmod的语法如下:

chmod [-R] xyz 文件或目录

说明:

  • xyz : 就是刚刚提到的数字类型的权限属性,为rwx属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更。

现在将刚才的client文件的权限重新改为root,进入根目录,输入:
chmod 755 /fastdfs/client

(3)符号类型改变文件权限

还有一个改变权限的方法。可以使用 u, g, o 来代表三种身份的权限。
user:用户
group:组
others:其他
此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:
在这里插入图片描述
如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用

chmod u=rwx,g=rx,o=r 

文件名来设定。

9、文件与目录管理

Linux的目录结构为树状结构,最顶级的目录为根目录 /。其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。需要先知道什么是绝对路径与相对路径:

  • 绝对路径:由根目录 / 写起,例如: /usr/share/doc 这个目录。
  • 相对路径:不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,只需要跳到上一级目录然后进入man目录,cd …/man即可。

(1)处理目录的常用命令

  • ls(list files): 列出目录及文件名。
  • cd(change directory):切换目录。
  • pwd(print work directory):显示目前的目录。
  • mkdir(make directory):创建一个新的目录。
  • rmdir(remove directory):删除一个空的目录。
  • cp(copy file): 复制文件或目录。
  • rm(remove): 删除文件或目录。
  • mv(move file): 移动文件与目录,或修改文件与目录的名称。

ls命令列举目录

在Linux系统当中, ls命令可能是最常被运行的。

语法格式:

ls -R

-R参数说明:

  • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)。
  • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)。
  • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)。
    如下:
    在这里插入图片描述
    cd命令切换目录

cd是Change Directory的缩写,这是用来变换工作目录的命令。
语法:

cd [绝对路径或相对路径]

如下:
在这里插入图片描述
需要说明的是cd /是切到根目录,cd ../是切到上一级目录。

pwd命令显示当前所在目录

pwd是Print Working Directory的缩写,也就是显示目前所在目录的命令。
语法:

pwd [-P]

说明:

  • -P:显示出确实的路径,而非使用连结 (link) 路径。
    如下:
    在这里插入图片描述
    注意:加上 -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径。

mkdir命令创建目录

mkdir是make directory的缩写,用于创建新目录。
语法:

mkdir -[mp] 目录名称

参数说明:

  • -m :配置文件的权限。
  • -p :将所需要的目录(包含上一级目录)递归创建起来。
    如下:
    在这里插入图片描述
    可以看到,加了-p之后,可以创建多级目录。
    现在我想创建权限为 rwx–x--x 的目录。
    rwx为7,–x为1,那么就是711。如下:
    在这里插入图片描述
    可以看到不加-m的话,系统会使用默认属性drwxr-xr-x,加了-m之后,会使用我们指定的711权限配置,也就是rwx–x--x 。

rmdir命令删除空目录

rmdir是remove directory的缩写,可以移除空目录。
语法:

rmdir [-p] 目录名称

参数说明:

  • -p :连同上一级『空的』目录也一起删除。
    如下:
    在这里插入图片描述
    可以看到,demo是空的,里面什么都没有,所以直接rmdir demo命令,不用加-p参数即可删掉。但是t1里面有t2,t2里面有t3,直接rmdir t1是删不掉的,可以使用rmdir -p t1/t2/t3命令将t1及t1里面的空目录一并删掉。
    注意:rmdir仅能删除空目录,不能删除非空目录,可以使用rm命令来删除非空目录。

cp命令复制文件或目录

使用cp可以复制文件或者目录。
语法:

cp [-adfilprsu] source destination

参数说明:

  • -a:相当於 -pdr 的意思(常用)。

  • -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身。

  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次。

  • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)。

  • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身。

  • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)。

  • -r:递归持续复制,用於目录的复制行为。

  • -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件。

  • -u:若 destination比source旧才升级destination。

  • source:被复制的目标。

  • destination:复制文件的输出路径。
    如下:
    在这里插入图片描述
    上面将t2目录复制到了demo里面。

rm命令移除目录或文件

使用rm命令可以删除目录或者文件,这个命令比较好用。
语法:

rm [-fir] 文件或目录

参数说明:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息。
  • -i :互动模式,在删除前会询问使用者是否动作。
  • -r :递归删除,最常用在目录的删除,非常危险的选项,使用这个命令要十分注意。
    如下:
    在这里插入图片描述
    注意:使用rm -r命令要十分注意,会全部删除,这个操作也需要用户一步一步确认,保证不会误删!

mv命令移动文件或目录,或者是修改名称

使用mv命令可以移动文件或者目录,修改文件或目录的名称也可以。
语法:

mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory

参数说明:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖。
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖。
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)。
    如下:
    在这里插入图片描述
    将t2目录移到了demo目录里,并且将t2目录进行了重新命名。

(2)文件内容查看

Linux系统中使用以下命令来查看文件的内容:

  • cat :由第一行开始显示文件内容。
  • tac:从最后一行开始显示,可以看出 tac 是 cat 的倒着写。
  • nl :显示的时候输出行号。
  • more:一页一页的显示文件内容。
  • less :与 more 类似,但是比 more 更好的是,可以往前翻页。
  • head :只看头几行。
  • tail :只看尾巴几行。

cat命令
由第一行开始显示文件内容。
语法:cat [-AbEnTv]
参数说明:

  • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已。
  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号。
  • -E :将结尾的断行字节 $ 显示出来。
  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同。
  • -T :将 [tab] 按键以 ^I 显示出来。
  • -v :列出一些看不出来的特殊字符。
    如下:
    在这里插入图片描述
    tac命令

tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出tac是cat的倒着写,如下:
在这里插入图片描述
nl命令

显示行号。语法:nl [-bnw] 文件
参数说明:

  • -b :指定行号指定的方式,主要有两种:
    -b a :表示不论是否为空行,也同样列出行号(类似 cat -n)。
    -b t :如果有空行,空的那一行不要列出行号(默认值)。
  • -n :列出行号表示的方法,主要有三种:
    -n ln :行号在荧幕的最左方显示。
    -n rn :行号在自己栏位的最右方显示,且不加 0 ;
    -n rz :行号在自己栏位的最右方显示,且加 0 ;
  • -w :行号栏位的占用的位数。

如下:
在这里插入图片描述
行号会显示出来。

more命令

此命令可以翻页。在 more 这个程序的运行过程中,几个按键可以按:

  • 空白键 (space):代表向下翻一页;
  • Enter :代表向下翻『一行』。
  • /字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • f :立刻显示出档名以及目前显示的行数;
  • q :代表立刻离开 more ,不再显示该文件内容。
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

如下:
在这里插入图片描述
按一下空格键:
在这里插入图片描述
翻页了。

less命令

一页一页翻动,less运行时可以输入的命令有:

  • 空白键 :向下翻动一页。
  • [pagedown]:向下翻动一页。
  • [pageup] :向上翻动一页。
  • /字串 :向下搜寻『字串』的功能。
  • ?字串 :向上搜寻『字串』的功能。
  • n :重复前一个搜寻 (与 / 或 ? 有关!)。
  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)。
  • q :离开 less 这个程序。

如下:
在这里插入图片描述
head命令

取出文件前面几行。语法:head [-n number] 文件
参数说明:

  • -n :后面接数字,代表显示几行的意思。

如下:
在这里插入图片描述
空白行也算一行。

tail命令

取出文件后面几行。与head命令正好相反,语法:tail [-n number] 文件
如下:
在这里插入图片描述

10、用户和用户组管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个唯一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改。
  • 用户口令的管理。
  • 用户组的管理。

(1)用户账号管理

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

a、添加用户账号

添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
语法:useradd 选项 用户名
参数说明:

  • 选项:
    -c:comment 指定一段注释性描述。
    -d:目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    -g:用户组 指定用户所属的用户组。
    -G:用户组,用户组 指定用户所属的附加组。
    -s:Shell文件 指定用户的登录Shell。
    -u:用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  • 用户名:指定新账号的登录名。

如下:
在这里插入图片描述
此命令创建了一个用户yanchengzhi,其中-d和-m选项用来为登录名yanchengzhi产生一个主目录 /home/yanchengzhi(/home为默认的用户主目录所在的父目录)。

b、删除用户账号

如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。删除一个已有的用户账号使用userdel命令,其格式如下:

userdel 选项 用户名

常用的选项是 -r,它的作用是把用户的主目录一起删除。
先查看系统的用户:
在这里插入图片描述
现在想删除ycz这个用户,如下:
在这里插入图片描述
看home下:
在这里插入图片描述
与ycz相关的目录也没有了。

c、修改帐号

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。修改已有用户的信息使用usermod命令,其格式如下:

usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。另外,有些系统可以使用选项:-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
例如:

# usermod -s /bin/ksh -d /home/z –g developer sam

此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。

d、用户口令管理

用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:

passwd 选项 用户名

说明:

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 强迫用户下次登录时修改口令。

如果默认用户名,则修改当前用户的口令。
例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:
在这里插入图片描述
如果是超级用户,可以用下列形式指定任何用户的口令:
在这里插入图片描述
我现在登录的是root超级账号,退出,用新的账号登录:
在这里插入图片描述
登录成功!

(2)用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

a、添加新的用户组

groupadd 选项 用户组

说明:

  • 选项:
    -g:GID 指定新用户组的组标识号(GID)。
    -o:一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
    如下:
    在这里插入图片描述
    添加了2个新的用户组,然后查看:
    在这里插入图片描述在这里插入图片描述
    添加成功了。

b、删除用户组

现在想删除一个已有的用户组,如下:
在这里插入图片描述
查看:
在这里插入图片描述
用户组g1已经删除了。

c、修改用户组

groupmod 选项 用户组
  • 选项:
    -g:GID 为用户组指定新的组标识号。
    -o:与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
    -n:新用户组将用户组的名字改为新名字。

如下:
在这里插入图片描述
此命令将组group2的组标识号修改为102。
在这里插入图片描述
此命令将组group2的标识号改为10000,组名修改为group3。

d、改变用户属组

先查看用户所属组:
在这里插入图片描述
该用户所属daemon组,现在想改成root组:
在这里插入图片描述
现在该用户同时属于root组合daemon组了,即该用户同时属于多个组。

(3)与用户账号有关的配置文件

完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。下面分别介绍这些文件的内容。

a、/etc/passwd

是用户管理工作涉及的最重要的一个文件。Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
内容如下:
在这里插入图片描述
可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
  • 用户名:代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号,因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符,并且不使用连字符(-)和加号(+)打头。
  • 口令:存放着加密后的用户口令字。这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
  • 用户标识号:是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
  • 组识别号:记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
  • 注释描述:记录着用户的一些个人情况。例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
  • 主目录:用户的起始工作目录。它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
  • 登录Shell:用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
  • 伪用户:系统中有一类用户称为伪用户(pseudo users)。这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
    常见的伪用户如下所示:
    在这里插入图片描述

b、/etc/shadow

由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。
/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生它的文件格式与/etc/passwd类似。内容如下:
在这里插入图片描述
由若干个字段组成,字段之间用":"隔开,字段如下:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

说明:

  • “登录名”:是与/etc/passwd文件中的登录名相一致的用户账号。
  • “口令”:字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
  • “最后一次修改时间”:表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
  • “最小时间间隔”:指的是两次修改口令之间所需的最小天数。
  • “最大时间间隔”:指的是口令保持有效的最大天数。
  • “警告时间”:字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  • “不活动时间”:表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  • “失效时间”:字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

c、/etc/group

用户组的所有信息都存放在/etc/group文件中。将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。
.
每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。
/etc/group内容如下:
在这里插入图片描述
用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

组名:口令:组标识号:组内用户列表

说明:

  • “组名”:是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
  • “口令”:字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
  • “组标识号”:与用户标识号类似,也是一个整数,被系统内部用来标识组。
  • “组内用户列表”:是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

(4)批量添加用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户的方法。Linux系统提供了创建大量用户的工具,方法如下:

首先编辑一个用户文本文件。每一列按照/etc/passwd密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号。如下:
在这里插入图片描述
然后以root身份执行命令 /usr/sbin/newusers,从刚创建的用户文件user.txt中导入数据,创建用户:
在这里插入图片描述
查看/etc/passwd文件:
在这里插入图片描述
执行命令/usr/sbin/pwunconv。先取消 shadow password 功能:
在这里插入图片描述
将 /etc/shadow 产生的 shadow 密码解码,然后回写到 /etc/passwd 中,并将/etc/shadow的shadow密码栏删掉。这是为了方便下一步的密码转换工作。

然后编写每个用户的密码对照文件,格式为:用户名:密码
在这里插入图片描述

然后以 root 身份执行命令 /usr/sbin/chpasswd。
在这里插入图片描述
创建用户密码,chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入 /etc/passwd 的密码栏。

确定密码经编码写入/etc/passwd的密码栏后,执行命令 /usr/sbin/pwconv 将密码编码为 shadow password,并将结果写入 /etc/shadow:
在这里插入图片描述
设置完毕,下面退出用户root,以user001和密码123456进行登录:
在这里插入图片描述
登录成功,然后切回root,将批量添加的用户全部删掉。
在这里插入图片描述
将这些全部删掉:
在这里插入图片描述
现在只有root账号了。

11、磁盘管理

Linux磁盘管理好坏直接关系到整个系统的性能问题。Linux磁盘管理常用三个命令为df、du和fdisk。

  • df:列出文件系统的整体磁盘使用量。
  • du:检查磁盘空间使用量。
  • fdisk:用于磁盘分区。

(1)df命令

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:df [-ahikHTm] [目录或文件名]

参数说明:

  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统。
  • -k :以 KBytes 的容量显示各文件系统。
  • -m :以 MBytes 的容量显示各文件系统。
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示。
  • -H :以 M=1000K 取代 M=1024K 的进位方式。
  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出。
  • -i :不用硬盘容量,而以inode的数量来显示。

如下:
在这里插入图片描述
将系统内所有的文件系统列出来。在Linux底下如果 df 没有加任何选项,那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以1 Kbytes的容量来列出来。
在这里插入图片描述
将容量结果以易读的容量格式显示出来。

在这里插入图片描述
将系统内的所有特殊文件格式及名称都列出来。

在这里插入图片描述
将 /etc 底下的可用的磁盘容量以易读的容量格式显示。

(2)du命令

du命令也是查看使用空间的,但是与df命令不同的是du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,语法如下:

du [-ahskm] 文件或目录名称

参数说明:

  • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
  • -h :以人们较易读的容量格式 (G/M) 显示。
  • -s :列出总量而已,而不列出每个各别的目录占用容量。
  • -S :不包括子目录下的总计,与 -s 有点差别。
  • -k :以 KBytes 列出容量显示。
  • -m :以 MBytes 列出容量显示。

如下:
在这里插入图片描述
只列出当前目录下的所有文件夹容量(包括隐藏文件夹)。直接输du没有加任何选项时,则du会分析当前所在目录的文件与目录所占用的硬盘空间。

在这里插入图片描述
将文件的容量也列出来。

在这里插入图片描述
通配符 * 来代表每个目录。与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。

(3)fdisk命令

fdisk 是Linux的磁盘分区表操作工具。语法如下:

fdisk [-l] 装置名称

说明:

  • -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
    如下:
    在这里插入图片描述

(4)磁盘格式化
略。

(5)磁盘检验
略。

(6)磁盘挂载与卸除
略。

12、vi/vim命令

所有的Unix Like系统都会内建vi文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

(1)vim介绍

Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim则可以说是程序开发者的一项很好用的工具。vim的官方网站自己也说vim是一个程序开发工具而不是文字处理软件。

vim键盘图如下:
在这里插入图片描述

(2)vim使用

基本上vi/vim共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。以下会分别介绍。

a、命令模式

用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • :切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本,启动Vim,进入了命令模式,按下i,切换到输入模式。命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

b、输入模式

在命令模式下按下i就进入了输入模式。在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符。
  • ENTER,回车键,换行。
  • BACK SPACE,退格键,删除光标前一个字符。
  • DEL,删除键,删除光标后一个字符。
  • 方向键,在文本中移动光标。
  • HOME/END,移动光标到行首/行尾。
  • Page Up/Page Down,上/下翻页。
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线。
  • ESC,退出输入模式,切换到命令模式。

c、底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。在底线命令模式中,基本的命令有:

  • q 退出程序。
  • w 保存文件。

按ESC键可随时退出底线命令模式。

以下以图示这3种模式的关系:
在这里插入图片描述
(3)例子

在test目录下新建一个demo.txt文件,并且进入命令模式:
在这里插入图片描述
输入i进入输入模式:
在这里插入图片描述
输入内容:
在这里插入图片描述
按esc键进入底线命令模式:
在这里插入图片描述
可以看到下面的INSERT没有了,说明当前已经退出了输入模式。输入:wq写入并退出vim。
在这里插入图片描述
按enter键确定。
查看demo.txt文件:
在这里插入图片描述
文件修改成功。vim命令使用非常普遍,需要熟练掌握。

(4)vim按键

除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

13、yum命令

(1)yum介绍

yum(Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum语法如下:

yum [options] [command] [package ...]

说明:

  • options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 “yes”),-q(不显示安装的过程)等等。
  • command:要进行的操作。
  • package:安装的包名。

(2)yum常用命令

  • yum check-update:列出所有可更新的软件清单命令。
  • yum update:更新所有软件命令。
  • yum install <package_name>:仅安装指定的软件命令。
  • yum update <package_name>:仅更新指定的软件命令。
  • yum list: 列出所有可安裝的软件清单命令。
  • yum remove <package_name>:删除软件包命令。
  • yum search <keyword>:查找软件包命令。
  • yum clean packages:清除缓存目录下的软件包。
  • yum clean headers:清除缓存目录下的 headers。
  • yum clean oldheaders:清除缓存目录下旧的headers。
  • yum clean, yum clean all (= yum clean packages; yum clean oldheaders):清除缓存目录下的软件包及旧的headers。

(3)例子

先安装pam-devel,如下:
在这里插入图片描述
在这里插入图片描述
然后移除pam-devel,如下:
在这里插入图片描述
查看以pam开头的软件有哪些:
在这里插入图片描述
(4)切换yum源

查看可用的yum:
在这里插入图片描述
现在我想将yum源设置为163的yum,网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。

先备份CentOS-Base.repo,如下:
在这里插入图片描述
然后下载网易的yum:
在这里插入图片描述
然后将网易的yum设置为系统使用的即改名为CentOS-Base.repo,如下:
在这里插入图片描述
生成缓存:
在这里插入图片描述
我这里还是换回原来的yum:
在这里插入图片描述
因为我这里用的阿里云的ecs实例,换成其他的yum源可能会有问题,所以换了回来。

(5)yum和wget的区别

yum是一种安装工具。如果想安装软件,可以使用yum安装的时候,建议使用yum安装最好,基本上是一步完成。 比如安装Linux的rz/sz命令工具:直接输入:yum install -y lrzsz 就会安装了。

wget是一种下载工具。可以下载网络上的资源,有点类似于迅雷。 比如安装redis时需要先下载redis软件然后再安装,那就用wget命令。

14、总结

Linux入门掌握这些应该可以了,后面会将Linux中常用的命名进行汇总,放在一起方便查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值