Linux

目录

一、Linux简介

Linux介绍

Linux的分类

根据发行版本分类

 Red hat和Centos

二、Linux的安装

虚拟机简介

 VMware安装Centos7

新建虚拟机

安装Centos

 快照

 恢复快照

 安装图形化工具

 VM的网络管理

桥接模式

 NAT模式

仅主机模式

三、客户端工具

 四、Linux的目录结构

 五、Linux基本命令

目录操作

创建

 剪切

修改

拷贝

删除

​编辑

 查看

 搜索

 文件操作

创建

查看

删除

拷贝

vi编辑器

命令模式

 编辑模式

 末行模式

压缩与解压

压缩

 解压

 其他命令

关机与重启

日期相关命令

查看帮助文档

 less命令

>指令和>>指令

 六、用户管理

关于用户和组的相关命令

添加用户

分配密码

 切换登录用户

 修改用户

 删除用户

用户组操作

添加组

 修改组

删除组

权限管理

分配权限

权限操作

 权限优先级


一、Linux简介

Linux介绍

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debianarchlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。

综上所述:Linux是一款操作系统,免费,开源, 安全,高效,稳定, 处理高并发非常强悍的操作系统,现在很多的企业级的项目都部署到Linux服务器运行。

Linux的分类

根据市场需求Linux大致分为两个版本,一个是主要服务于大众用户的图形化版本:

另一款是面向服务器端的服务器版本 

根据发行版本分类

根本发行版本的分类大致有:ubuntu、redhat、centos、lubuntu、freebsd、deepin....

 Red hat和Centos

红帽的全称是Red Hat Enterprise Linux,简称Red Hat或RHEL,红帽Linux(RHEL)是Red Hat专为企业设计的基于Linux的操作系统。RHEL可以在桌面,服务器,虚拟机管理程序或云中运行。Red Hat是世界上使用最广泛的Linux发行版之一。

RedHat 是用 LINUX 核心构架的一个操作系统。RedHat Linux 是目前世界上使用最多的 Linux 操作系统。因为它具备最好的图形界面,无论是安装、配置还是使用都十分方便,而且运行稳定,因此不论是新手还是老玩家都对它有很高的评价。

CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。

区别如下:

  • 无偿和有偿的区别:redhat是收费版,centos是免费版;
  • redhat一个提供商业的解决方案 ,centos一个不提供。
  • CentOS是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。它与RedHat使用同样的源代码;它完全就是对Red Hat AS进行改进后发布的!各种操作、使用和RED HAT没有区别!

二、Linux的安装

虚拟机简介

虚拟机是一个软件,它可以使你在一台真实PC机器上同时运行二个或更多的不同的操作系统。它可以模拟 一个标准PC环境。这个环境和真实的计算机一样,都有芯片组、CPU、内存、显卡、声卡、网卡、软驱、硬盘、光驱、串口、并口、USB控制器。

简单的来说,虚拟机就是用来模拟一台真实的电脑,我们实际在学习过程中,有的时候需要多态电脑模拟真实的环境,那么不可能在硬件层面上真正的提供多态电脑,这个时候我们可以使用虚拟机来帮我们虚拟出一台电脑来;

目前市场上流行的虚拟机有两种:

1)VMware(威睿)公司的虚拟机软件,功能强大,收费产品,有30天试用期,分为64位和32位两种版本,专注企业级用户,性能稳定功能强大,操作简单,公司创建于1998年。

 2)VitrualBox(Oracle)公司的虚拟机软件,免费开源软件,体积小巧,专注个人用户,对Linux系统支持好,硬件要求远不及VWware,系统资源占用率低

 

 3)Microsoft Virtual PC:Windows Virtual PC是最新的Microsoft虚拟化技术。使用此技术可在一台计算机上同时运行多个操作系统。

tips:我们本次教程采用的是VMware

 VMware安装Centos7

Centos7镜像地址:

新建虚拟机

1.新建虚拟机---选择iso镜像文件

 2.选择存放路径

3.设置虚拟机磁盘大小

 4.点击完成

安装Centos

1.开始安装

2.选择语言

3.选择磁盘

 

4.设置网络连接

4.设置root账号密码

5.等待安装

6.安装完毕

 7.登录Linux

 快照

我们以后要在虚拟机上做非常多的操作,其中很有可能会损坏某些文件,我们可以在给虚拟机拍摄快照,记录虚拟机这个时候的一个状态,以后误操作虚拟机后可以通过恢复快照的形式来恢复到以前的状态

 

 恢复快照

 安装图形化工具

我们在学习过程中,可以安装Linux提供的图形化桌面,让我们操作更加便捷

输入命令:

yum groupinstall -y "GNOME Desktop"

这个过程比较漫长,需要下载安装大量的文件

安装完成之后输入命令:

startx

 启动图形化工具

 VM的网络管理

我们知道VM中的操作系统是我们虚拟出来的,具体的硬件也是有VM虚拟的,关于硬件的配置如下:

 

 关于其他硬件的参数都比较简单,如果想要虚拟机的性能比较好,可以酌情调高(占用的资源也会随之增加),VM安装完毕之后,会有两个网卡,分别是VMware Network Adapter VMnet1VMware Network Adapter VMnet8

 其实除了VMnet1、VMnet8还有一个VMnet0网卡,只不过这个网卡默认是隐藏状态的;

在VM中,网络管理主要有三种模式,分别为bridged(桥接模式)、NAT模式(网络地址转换模式)、host-only(仅主机模式)

桥接模式

在桥接模式中,虚拟的操作系统就是一台独立于局域网中的一台主机,宿主机就相当于是一台网络交换机,虚拟机连上宿主机后,可以访问局域网内的任意一台机器,但是需要在虚拟机中手动配置IP地址、子网掩码、DNS服务器等,而且必须要和宿主机在同一网段;桥接模式一般用于需要在局域网内容真正独立出一台机器的情况;

tips:在桥接模式中,默认使用的是VMnet0网卡

 选择好桥接模式后,重启虚拟机,输入命令:

ip addr			# 查看虚拟机的ip地址

 在查看宿主机的ip地址:

ipconfig

发现虚拟机的ip地址与宿主机的在同一个网段,此时虚拟机在局域网中是一个独立的主机,可以使用局域网内的任意一台主机与之通信

我们也可以查看VM的网络编辑器,点击VM工具栏上的编辑--虚拟网络编辑

 点击更改设置:

 NAT模式

NAT:全称Net Address Transform,网络地址转换,NAT模式是通过宿主机的网络来访问公网,NAT模式下虚拟机中的IP配置信息是由VMnet8虚拟网络的DHCP服务器提供的;由于NAT模式下,虚拟机是借助于宿主机的网络来访问公网的,在局域网内并不是一台独立的主机,因此不能与局域网内其他主机进行通信;NAT的优势在于虚拟机接入互联网简单,不需要进行任何的配置,只要宿主机能够访问互联网即可;

tips:在NAT模式中,默认使用的是VMnet8网卡;

 重启虚拟机:

reboot

查看ip:

ip addr

 打开虚拟网络编辑器:

更改网段记得重启

 需要注意的是,在NAT模式下,即使虚拟机的网段改为了12(和宿主机同一个网段),在12段的其它机器也还是不能与虚拟机进行通信,因为在NAT模式下,虚拟机在局域网并不是一台独立的主机;

仅主机模式

仅主机模式,也称host-only模式,在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。

tips:在仅主机模式中,默认使用的是VMnet1网卡;主机和虚拟机是通的,但是虚拟机和主机不是通的

在host-only模式下,虚拟系统的TCP/IP配置信息(如IP地址、网关地址、DNS服务器等),都是由VMnet1(host-only)虚拟网络的DHCP服务器来动态分配的。  如果你想利用VMWare创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择host-only模式。


三、客户端工具

在实际开发中,Linux服务器都在其他的地方,我们要通过windows客户端工具远程去连接Linux并操作它;市面上有许多的Linux客户端连接工具,让我们可以更便捷的操作Linux;连接 Linux的windows客户端工具有很多,企业中常用的有Xshell、Putty、secureCRT、SSH Secure等。

1.Xshell连接工具

2. XFTP文件上传工具


 四、Linux的目录结构

我们启动Linux操作系统时,默认所在的目录是root目录,简称:~,如图所示:

cd命令为切换目录

但root目录并不是Linux的根目录,linux的目录结构如下:

 系统目录的解释:

  • /boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
  • /etc:存放所有的系统需要的配置文件子目录列表,更改目录下的文件可能会导致系统不能启动。
  • /lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
  • /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中

指令集合:

  • /bin:存放着最常用的程序和指令
  • /sbin:只有系统管理员能使用的程序和指令。

外部文件管理:

  • /dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
  • /media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
  • /mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

临时文件:

  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
  • /lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
  • /tmp:这个目录是用来存放一些临时文件的。

账户:

  • /root:系统管理员的用户主目录。
  • /home:用户的主目录,以用户的账号命名的。
  • /usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • /usr/bin:系统用户使用的应用程序与指令。
  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src:内核源代码默认的放置目录。

运行过程中要用:

  • /var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。

  • /proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改

扩展用的:

  • /opt:默认是空的,我们安装额外软件可以放在这个里面。
  • /srv:存放服务启动后需要提取的数据(不用服务器就是空)

进入根目录:


 五、Linux基本命令

目录操作

创建

语法:

mkdir 目录名

示例:

mkdir aaa		# 在当前目录下创建aaa目录
mkdir ./bbb		# 在当前目录下创建bbb目录
mkdir /ccc		# 在根目录下创建ccc目录
mkdir /root/ddd		# 在root目录下创建ddd目录

 剪切

语法:

mv 原来的目录 新的目录

示例:

mv aaa /aaa			# 将当前目录下的aaa文件夹移动到根命令下,文件夹名称还是叫aaa

修改

在Linux中,没有专门修改文件夹目录的命令,但是我们可以借助mv命令(剪切)来实现

语法:

mv 原来的目录 新的目录

示例:

mv bbb abc		# 将aaa目录移动到当前目录,目录名还是叫abc

拷贝

语法:

cp [参数] 目录 目录的新位置
  • 参数:
    • -r:递归拷贝,拷贝目录下的文件及子目录、子目录下的文件、孙目录等...

示例:

cp -r bbb b1

删除

语法:

rm [参数] 目录
  • 参数:
    • -r:递归删除,将目录下的所有文件夹及子目录等全部删除(删除文件夹必须加-r参数,即使空目录)
    • -f:强制删除目录,不会进行展示

示例:

rm -r b1

示例2:

rm -rf bbb

 查看

语法:

ls [参数]
  • 参数:
    • -l:以详细形式查询当前目录下所有文件和目录,不包括隐藏文件和目录
    • -a:以精简形式查询当前目录下所有文件和目录,包括隐藏文件和目录

示例1:

ls			# 以精简形式查看当前目录下的文件和目录,不包括隐藏内容

 示例2:

ls -l		# 以详细形式查询当前目录下所有文件和目录,不包括隐藏文件和目录

 示例3:

ls -a	# 以精简形式查询当前目录下所有文件和目录,包括隐藏文件和目录

 示例4:

ls -al		# 以详细形式查询当前目录下所有文件和目录,包括隐藏文件和目录

 搜索

语法:

find [目录] -name '条件'

示例:

find /root -name 'a'		# 在root目录(包含子目录)下查询目录名为a的目录

find /root -name 'a*'		# 在root目录(包含子目录)下查询目录名包含a的目录

 如果目录太多,想要停止查看可以按住ctrl+c强行终止程序执行

# 从当前目录查询查询目录名包含a的目录或文件
find -name 'a*'

 文件操作

创建

语法:

touch 文件

示例:

touch a.java			# 在当前目录创建.java文件
touch /root/b.html		# 在/root目录下创建b.html文件
touch /c.xml			# 根目录下创建c.xml文件

 

 

查看

rm [参数] 文件

语法:

cat /more/head/tail 文件名

准备一篇文章:article.txt;使用XFTP工具,上传article.txt到linux系统中

示例:

cat article.txt				# 查询的是最后一页的内容
more article.txt			# 从第一页开始查看文件内容,按回车键一行一行的看,按空格健一页一页的看
head article.txt			# 查看文件的前10行内容
tail article.txt			# 查看文件的后10行内容
head -n 18 article.txt		# 查看文件的前18行内容
head -n 18  article.txt		# 查看文件的后18行内容

查看文本过程中,按q键退出查看

删除

语法:

rm [参数] 文件

参数:

  • -r:递归删除,将目录下的所有文件夹及子目录等全部删除(删除文件夹必须加-r参数,即使是空目录)
  • f:强制删除目录,不会进行提示

示例:

rm -f a.java			# 删除a.java
rm -f a.*				# 删除a开头的所有文件
mkdir abc
touch a.java
touch a2.java
touch a3.java
touch abc.java
touch bc.java
rm -f ./*				# 删除当前目录下的所有文件

拷贝

语法:

cp 文件名 新文件名

示例:

cp aa.java aaa.java

vi编辑器

vi 编辑器是linux下的vi 是一种文字编辑器,后来的升级版本是vim。vi 分为三种模式:命令模式、编辑模式、末行模式

所有的 Linux 系统都会内建 vi 文本编辑器。Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

  • 命令模式:

当执行vi/vim指令后,将会进入命令模式;该模式是进入 vi 编辑器后的默认模式。任何时候,不管用户处于何种模式,按下Esc键即可进入命令模式。在命令模式下,用户可以输入 vi 命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释。若输入的字符是合法的 vi 命令,则 vi 在接受用户命令之后完成相应的动作。

tips:命令模式下,所输入的命令并不回显在屏幕上。若输入的字符不是 vi 的合法命令,vi 会响铃报警。

  • 编辑模式

在命令模式下输入iaors等命令都可以进入编辑模式。在该模式下,用户输入的任何字符都被 vi 当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按下Esc键即可。

  • 末行模式:

在编辑模式下,用户按下ESC键退出编辑模式(进入了命令模式),按:键即可进入末行模式,此时 vi 会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个:作为末行模式的说明符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。

末行模式的指令执行完后,vi 自动回到命令模式。

语法:

vi/vim 文件名

命令模式

vi a.java			# 回车进入命令模式

命令模式的指令如下:

  • i:插入数据,进行数据的插入
  • a:数据的追加
  • o:打开文件,插入空白行
  • s:删除当前光标指向的数据,功能和i一致
  • r:替换文件,进行数据的替换

通过上面的参数我们可以知道,大部分指令和i功能一致,都是插入,一般来说,我们使用i的频率较多

 编辑模式

输入完命令模式的命令之后,vi编辑器进入编辑模式

 末行模式

在编辑模式下,输入esc键退出编辑模式,输入:进入末行模式

 末行模式的命令如下:

  • wq:保存并且退出

在末行模式下,输入命令如下:

:wq

vi将先保存文件,然后退出vi返回到shell命令行。

  • q:代表退出

在末行模式下,输入命令如下:

:q

 如果退出时当前编辑文件尚未保存,则vi并不退出,而是继续等待用户的命令,并且会在显示窗口的最末行说明如下信息:

 输入回车键,在输入i,继续编辑

  • q!:代表强制退出

在末行模式下,输入命令如下:

:q!

该命令不论文件是否改变都会强行退出vi编辑器,刚刚编辑的内容将丢失,文件也不会被保存下来,对于此命令用户应当慎用

  • w!:将此文件的内容另存为一份新的内容

在末行模式下,输入命令如下:

:w! 新文件名

该命令与:w命令相同,所不同的是,即使指定的新文件存在,vi编辑器也会用当前编辑文件对其进行替换,而不再询问用户。因此,此命令同样要慎用

  • x:

在末行模式下,输入命令如下:

:X

若当前编辑文件曾被修改过,则vi会保存该文件。否则vi直接退出,不保存该文件。

压缩与解压

我们都知道在windows操作系统下,压缩文件的扩展名为.zip、.rar等,在Linux操作系统下,为.tar、.gz、.tar.gz等

压缩

语法:

tar [参数] 打包压缩后的文件名 要打包压缩的文件
  • 参数:
    • -c:创建新的文件(必选项)
    • -v:输出文件清单(可选项)
    • -f:设置压缩包的文件名(必选项)

示例:

tar -cvf test.tar a.java abc.java

 解压

语法:

tar [参数] 压缩文件
  • 参数:
    • -x:取出压缩包中文件中的内容(必选项)
    • -v:输出文件清单(可选项)
    • -f:设置要操作的文件名(必选项)
    • -C:设置解压的路径(可选项),默认解压到压缩包所在的目录
mkdir hello
tar -xvf test.tar -C ./hello				# 解压test.tar压缩包,压缩包中的文件存放到hello文件夹中

 其他命令

关机与重启

shutdown			# 1分钟后关机
shutdown -h 10 		# 10分钟后关机
shutdown -h now		# 立即关机
shutdown now		# 立即关机
shutdown -r now		# 立即重启
reboot				# 立即重启
halt				# 立即关机
sync				# 把内存中的数据同步到磁盘

日期相关命令

1.日期命令

命令:data

  • 参数:
    • %F:年月日
    • %T:时分秒
    • %Y:获取年
    • %m:获取月
    • %d:获取日
    • %H:获取小时
    • %M:获取分钟
    • %S:获取秒
    • %s:1970年01月01日到现在的秒数

 2.日历命令

语法:

cal [参数] [[月份]年份]
  • 参数:
    • -1 输出显示当前月(默认)
    • -3 输出显示前一个/当前/下一个月
    • -s 输出显示星期天作为一周的第一天(默认)
    • -m 输出显示星期一作为一周的第一天
    • -j 输出显示Julian日历(从一月1号计数为1起,每一天计数加1)
    • -y 显示当前日历

 查询2021年3月份的日历,并且以周一作为一周的第一天:

cal 3 2021 -m

查看帮助文档

当我们对某个指令不熟悉时,我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法

man [命令]

man shutdown		# 查看shutdown命令的用法
man tar				# 查看tar命令的用法
man ls				# 查看ls命令的用法

同时也可以使用help进行帮助文档的查询:

cal --help 			# 查看cal命令的帮助文档

 less命令

less命令与more命令类似,都是用于浏览文件的,不同的是使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动;而且 less 在查看之前不会加载整个文件。在浏览超大型文本文件时具有较高的效率;

语法:

less [参数] 文件
  • 参数:
    • -m:显示查看的进度百分比
    • -N:显示每行的行号
    • +/pattern:在文档中搜索字符串(pattern),并从这一行开始显示
    • -i:忽略搜索时的大小写

示例:

less -article.txt
[输入参数]
  • 输入参数:
    • Q:退出less 命令
    • w:向上滚动半页
    • d:向下滚动半页
    • 上光标:向上滚动一行
    • 下光标:向下滚动一行
    • 空格键:向下滚动一页
    • 回车键:向下滚动一行
    • [pagedown]: 向下翻动一页
    • [pageup]: 向上翻动一页
    • G:跳到文件尾部
    • g:跳到文件头部

示例2:

less -mNi +/user UserServlet.java

>指令和>>指令

>和>>指令功能一致,不同的是>>的可以追加内容;>只是将命令的结果集写入到文件,并不会产生追加效果;

语法:

ll > info.txt		# 将ll命令的结果写入info.txt文件中

cat abc/a.java > test.java

cal -y > cal.txt


 六、用户管理

Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

在Linux中,用户是属于某个组的,创建用户首先得让用户属于某个组

关于用户和组的相关命令

  • cat /etc/shadow:密码和登录信息(加密的)
  • cat /etc/group:查看组信息

解释:

root:x:0:

组名:x:组ID:

 tips:x并无其他特殊含义

  • cat /etc/passwd:用户账户信息

 解释:

root:x:0:0:root:/root:/bin/bash

用户名:x:用户ID:组ID:该用户的组目录:命令解释程序

添加用户

useradd 参数 用户名
  • 参数:
  • -g:用户组,指定用户所属的用户组,如省略该参数,则会建立和新用户名同名的组。

示例1:创建zhangsan用户:

useradd zhangsan			# 创建zhangsan用户,默认创建同名组

 示例2:创建lisi用户,属于zhangsan组

useradd lisi -g zhangsan

查看组:

cat /etc/group

 查看用户:

cat /etc/passwd

tips: 发现和zhangsan用户同属于1000组

分配密码

语法:

passwd 用户名

 切换zhangsan用户登录:

logout/exit:退出当前用户

Tips:如果使用xshell连接工具会直接退出

修改xshell连接工具参数:

 使用whoami可以查看当前登录的用户:

 切换登录用户

语法:

su 要切换的用户名

示例:

su lisi

 修改用户

usermod -l 新登录名 原登录名

示例:

usermod -l zs zhangsan

修改用户名时,必须当前用户处于退出登录状态,如果正在登录的用户则会出现如下信息:

 注意:修改了用户名之后,用户所属的组名以及家目录不变:

 组名:

 删除用户

语法:

userdel	用户名

示例1:删除用户wangwu,保留家目录

useradd wangwu		# 创建wangwu账号,wangwu组,wangwu家目录

userdel wangwu		# 删除wangwu账号,wangwu组(家目录还在)

 默认情况下,删除用户时,用户所在的同名的组也会被删除;所以查看/etc/group时,发现wagnwu组不见了,但wangwu的家目录还在,可以删除家目录:

rm -rf wangwu

Tips:一般来说,我们判断当前linux有多少用户直接查看home下的家目录,因此一般删除用户时,会顺带删除家目录;

示例2:删除用户lisi,以及家目录

Tisp:lisi是属于zhangsan组的,用户和组不同名,不会删除组

userdel -r lisi

 查看用户信息:

cat /etc/passwd

发现lisi用户不见了

查看组信息:

cat /etc/group

发现zhangsan组还在

示例3:删除zs用户,以及家目录

userdel -r zs

Tips:即使家目录的名称不是叫zs也会被删除

查看组信息:

cat /etc/group

 

 发现zhangsan组依旧存在;删除用户时(不管是否加上-r参数),只会删除同名的组,不同名的组不会被删除;

用户组操作

用户组简介:类似于角色,系统可以对有共性的多个用户进行统一的管理;

添加组

语法:

groupadd 组名

示例;

groupadd g1

查看组信息:

cat /etc/group

 修改组

修改组名称

语法:

groupmod -n 新组名 组名

示例:

groupmod -n g2 g1

再次查看组信息:

cat /etc/group

 移动用户到新租

useradd lisi		# 创建lisi用户,lisi组,lisi家目录

usermod lisi -g g2	# 将lisi移动到g1组

删除组

语法:

groupdel 组名

删除组的时候必须保证组中没有用户

示例:

groupdel zhangsan   # 删除zhangsan组(此时zhangsan组没有用户)

groupdel g2 		# 删除g2组(删除失败)

groupadd g1

usermod lisi -g g1	# 将lisi用户移动到g1组

groupdel g2			# 再次删除g2组

总结:

  • 1)创建用户的时候,如果没有指定该用户的所属的组,那么会创建一个同名组
  • 2)删除用户的时候,同名组也会被删除(前提是组里面没有其他用户了),并且删除组的时候要求组中不能有用户存在
  • 3)删除用户的时候加-r代表删除家目录(即使家目录和用户名不一样)

权限管理

Linux中对每个目录和文件都做了规定,只能由满足条件的用户才能操作;

查看文件的操作权限:

 

每个文件和文件夹的最前面都有类似于drwxr-xr-x这样的字母,这些字母的含有就代表具体的操作权限;

具体含义如下:

 

  • r:只读,权限等级为4
  • w:只写,权限等级为2
  • x:只执行,权限等级为1,对于文件夹来说就是能否进入该文件夹
  • -:不具备权限

  •  主权限(u):当前用户的权限
  • 组权限(g):整个组的权限
  • 其他权限(o):其他用户的权限(除当前登录用户外)

分配权限

语法:

chmod [权限] [操作] [文件/目录]
  • 权限:
    • 文字设定法:
      • u:主权限
      • g:组权限
      • o:其他用户权限
      • a:同时设置u、g、o三者的权限
  • 数字设定法:
    • 1:执行权限(x)
    • 7:读权限+写权限+执行权限(r+w+x)
    • 6:读权限+写权限(r+w)
    • 5:读权限+执行权限(r+x)
    • 4:读权限(r)
    • 3:写权限+执行权限(w+x)
    • 2:写权限(w)
  • 操作
    • +:赋予某个权限
    • -:剔除某个权限
    • =:替换权限

示例:

cd /						# 切换到根目录

vi aaa.txt					# 创建并编辑aaa.txt文件

 权限为-rw-r--r--

文字设定法

chmod u+x aaa.txt				# 增加主的执行权限(-rwxr--r--)	
chmod g-r aaa.txt				# 剔除组的读权限(-rwx---r--)	 
chmod o-r aaa.txt				# 剔除其他用户的读权限(-rwx------)
chmod u-x,g+r,o+r aaa.txt		# 剔除主的执行权限,增加组合其他用户的读权限(-rw-r--r--)
chmod u=rwx,g=rw,o=rw aaa.txt	# 主具有可读可写可执行权限,组和其他用户具有读写权限(-rwxrw-rw-)
chmod a-r aaa.txt				# 剔除u、g、o的读权限
chmod a+r,a-w aaa.txt			# 增加u、g、o的读权限,剔除u、g、o的写权限

数字设定法

chmod [参数1|参数2|参数3] 文件/目录

参数1:代表u(主用户)

参数2:代表g(组用户)

参数3:代表o(其他用户)

如果只设置参数1,那么代表的是o

如果只设置参数1和参数2,那么代表的是g、o

# 只设置o
chmod 0 aaa.txt			# ----------	
chmod 1 aaa.txt			# ---------x
chmod 2 aaa.txt			# --------w-
chmod 3 aaa.txt			# --------wx
chmod 4 aaa.txt			# -------r--

# 设置g、o
chmod 42 aaa.txt		# ----r---w-

# 设置u、g、o
chmod 660 aaa.txt		# -rw-rw----
chmod 744 aaa.txt		# -rwxr--r--
chmod 777 aaa.txt		# -rwxrwxrwx

修改文件的属主和组

语法:

chown [-R] 用户名 文件			# 修改文件所属的用户
chown [-R] .组名 文件		 	# 修改文件所属的组		
chown [-R] 用户名:组名 文件  		# 同时修改文件所属的用户和组

示例1:修改文件的所属主

# 创建一个用户(会创建同名组)
useradd zhangsan

# 创建一个文件
vi aaa.txt

# 修改文件所属主
chown -R zhangsan aaa.txt			# 修改aaa.txt文件为zhangsan用户

 示例2:修改文件的所属组:

chown -R .zhangsan aaa.txt

 示例3:修改文件的所属主和所属组:

chown -R root:zhangsan aaa.txt

关于修改文件的所属组还有一个命令:

chgrp 组名 文件/目录

示例:将aaa.txt修改为root组:

chgrp root aaa.txt

权限操作

当权限分配好了之后,其他用户在操作文件/目录时就得具备对应的权限,否则不可操作;

查看aaa.txt文件的权限:

chmod 777 aaa.txt		# -rwxrwxrwx

 创建zhangsan用户,并分配密码admin:

useradd zhangsan

passwd zhangsan

Tips:创建了一个zhangsan用户和一个zhangsan

使用xshell新建zhangsan用户连接,进入/目录,查看aaa.txt

 使用root账号修改权限:

chmod o-r aaa.txt

再次使用zhangsan用户查看aaa.txt,发现权限不足:

 虽然读不了,但是还是可以编辑(写)的:

vi aaa.txt

 编辑结束后输入:

:wq!  #保存并强制退出

 权限优先级

如果u没有r权限,但是g有r权限,那么该文件到底可不可以读取呢?

答:u > g > o

测试g>o

准备环境:

删除其他所有的用户

useradd zhangsan			# 创建zhangsan用户,zhangsan组,zhangsan用户所属组是zhangsan组
useradd lisi -g zhangsan	# 创建lisi用户,lisi用户所属组是zhangsan组

passwd zhangsan				# 分配密码
passwd lisi					# 分配密码

chmod 004 aa.txt			# 只给o赋予r权限(-------r--)

chown -R lisi:zhangsan aa.txt		# 切换aa.txt所有者为lisi,并且所有组为zhangsan

 测试1:登录zhangsan用户

cat aa.txt			# 权限不足

 zhangsan对于aa.txt来说是其他用户,我们看到o是具有r的权限的,按道理来说zhangsan应该是可以读取aa.txt文件的,那为什么读取不了呢?

答:虽然o是具备r权限的,但是由于zhangsan和lisi是一个组的,aa.txt的组权限没有r,因此读取不了aa.txt

建立新组g1,将zhangsan移动到g1组(此时才能体现o的权限),再次查看aa.txt文件,发现可以查看

groupadd g1			# 添加g1组

usermod zhangsan -g g1		# 将zhangsan用户移动到g1组

重新登录,刷新权限

cat aa.txt			# 发现可以查询

Tips:记得重新登录;

测试u>g

aa.txt的权限如下:

 注意:lisi用户是在zhangsan组的

chmod g+r aa.txt			# 给g赋予r权限

 登录lisi用户,查看aa.txt,发现权限不足

 很奇怪,lisi不是属于zhangsan组的吗?zhangsan组不是对aa.txt有r权限吗?为什么lisi不能读取aa.txt文件呢?

答:虽然整个zhangsan组具有r权限,但是lisi用户并不具备r权限,换句话说lisi的-(什么都没有)权限比zhangsan组的r权限要大;

我们把u的权限设为r:

chmod u+r aa.txt

再次查看aa.txt,发现可以查看


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值