八、用户管理命令 && 文件系统 && 连接文件 && 系统知识

一、用户管理命令

(一)3个存储用户信息的文件

Linux是多用户的操作系统,对于用户和系统的管理一般都是root最高权限的管理员来管理,我们首先了解一下用户的信息都是在哪里存放的,三个文件:
我们先进入cd /etc,进入etc,它包含了存放系统的配置文件,包括vim,网络配置等。

1. vim passwd:存储用户UID,GID详细信息
文件里面的内容每一行代表一个账号,有几行就代表系统中有几个用户,里面也存在系统正常运行所必须的账号,我们成为系统称号,例如bin,adm等。

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识
参数说明:每一个参数用【:】分隔

  • 用户名(账户名称):对应UID,如root的UID就是0。
  • 密码占位符:因为这个文件可以被所有用户读取,所以把密码在/etc/shadow存储,这只显示一个【x】。
  • 用户ID(UID):用户标识符
ID范围 含义
0 系统管理员,所以当你要让普通用户具有管理员的权限时,将该账号的UID改为0即可
1~999 系统账号,又分为:1~200:由Linux发行版本自行建立的系统账号,一般用来运行网络服务和后台服务;201~999:若用户由系统账号需求时,进行分配
1000~6000 给一般用户使用,目前Linux3.10可以支持到2^32-1
  • 用户组ID(GID):这个和/etc/group有关,是用户主组ID。
  • 用户信息说明栏:解释账号含义,无实际作用。
  • 默认进入的目录即家目录。
  • 默认使用的终端程序

2. vim group:用户组信息

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识
数字是组名,密码占位符,组ID,后面可以自己添加组用户,称为附加组。
所以我们要看一个用户属于哪个组,需要先在passwd中看一下组ID,还需要在group根据GID看一下包含在哪个组下。
3. vim shadow:用户密码信息
一定是在root下打开shadow文件,否则无法打开。我们用ls -l shadow查看文件属性:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识
无任何权限文件,所以任何用户都无法访问,但是root超级管理员可以,这就保证了安全想,这里面存储的是用户密码。

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识
参数信息:用户名,密码(密码用密文加密了)
密码组成:$ 加密算法ID$加***$密文

(二)添加用户

我们要对用户进行管理:先cd /home 到家目录,可以用ls查看用户目录,就代表有几个用户。
添加用户的指令是useradd,后面可以加不同的参数:

命令 含义
useradd newname 新建一个用户同时新建一个组
useradd -g 组名称 newname 将新用户添加到指定用户主组里
useradd -G group1 newname 将新用户添加到副组里,可以有多个副组,用“,"隔开
useradd -s newname shell终端 指定新用户默认使用的shell终端,若没有指定,默认为/bin/bash
useradd -d newname 绝对路径 指定新用户登录默认进入的目录

那么当不加参数执行指令【useradd 账号】后,系统会默认帮我们处理:

  • 在etc/passwd里面建立一行于账号相关的数据,包括建立UID/GID/家目录等。
  • 在etc/shadow里面将此账号的密码和相关参数写入,此时没有密码。
  • 在etc/group里面加入一个和账号名称一模一样的组名。
  • 在/home下面建立一个与账号同名的目录作为用户家目录,权限为700,即所有者拥有读写执行,其他人无权限。

那我们演示一下,我们添加用户stu,指定添加到Gripure中去,再进行密码设置。

  • 我们先查看用户:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识

  • 进行添加用户stu:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识

  • 我们通过cat命令在终端上显示passwd和shadow中stu的信息:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识
可以看到stu在组Gripure中,还没有设置密码。

(三)修改密码

上面我们看到stu的/etc/shadow内仅会有密码参数而不会有加密过的密码数据:
所以我们通过指令

passwd 账号

修改设置密码:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识

(四)删除用户

删除用户指令:

userdel username

只会删除用户信息,不会删除/home下的同名目录
所以我们可以

userdel -r username //同步删除家目录

我们现在删除stu这个用户,我们使用不能删除家目录的方法删:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识
那么此时我们需要删除这个家目录,我们可以:

rm -r stu //但是需要你一直确认,很麻烦

所以我们采用第二种:

rm -rf stu //直接删除,不需要我确认

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识
当然我们也可以从一开始就使用userdel -r一次性删除。

二、文件系统

常见的文件系统:

系统 操作系统
EXT Linux
NTFS windows
FAT32 U盘,文件不能超过4G

那我们今天主要讲Linux的EXT4文件系统,它是一种索引式的文件系统。

  1. EXT4将磁盘划分为3个区域:
  • superblock:记录文件系统的整体信息,包括inode/block的总量,使用量,剩余量,以及文件系统的格式与相关信息等。
  • inode:n个,文件属性信息,一个文件占用一个inode,同时记录此文件的数据所在的block号码。
  • block:m个,记录文件的内容,若文件过大,会占用多个block,一个block大概4k。
  1. 索引式的文件系统:
    假如一个文件的属性和权限存储在inode4号,这个inode记录了文件数据所在的2,7,13,15这四个block号码,此时我们的操作系统能够根据块号来排列磁盘阅读顺序,可以一口气将四个块内容读出:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识这种数据存取方法称为索引式的文件系统。

三、连接文件

无法对目录创建硬连接,但可以创建软连接

(一)软连接(类似快捷方式)

  1. 创建:

ln -s 源文件 连接文件

  1. 查看:

ls -i查看在哪个inode,

它和源文件使用不同的文件节点,在不同的inode中,连接文件指向源文件,和源文件同步,因为在修改连接文件时,找到连接文件inode,会再找到源文件,所以对连接文件修改就是对源文件进行修改。
3. 如果把源文件移动位置,那么连接文件会失效,因为路径变了,移动连接文件如果当前目录下有路径上的文件,那么有效,会指向这个新文件,如果没有就失效,如果连接文件的路径是绝对路径,那么移动后绝对路径错了,它根据路径找到文件也会失效。
4. 特点:类似于快捷方式。
5. 我们进行演示:

  • 我们先创建一个main.c,随便写点东西,然后创建它的软连接test.c:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识

  • 我们修改test.c,就可以看到main.c也随之变化:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识

  • 可以看到显示的和我们上述阐述的一样,我们将main.c移动到上一个目录:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识
我们可以看到test.c失效了,如果我们给test.c是绝对路径,那么就没问题。

  • 所以我们重新创建一个link.c,将main.c的绝对路径给它,它会根据绝对路径去找,试着移动main.c,它还是会因为绝对路径错误而失效,所以绝对路径和相对路径相比的好处就是,相对路径必须保证此目录下有mian.c,但是绝对路径只需要保证绝对路径下有:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识

(二)硬连接(类似别名)

  1. 创建:

ln 源文件 连接文件

也是个普通文件,和源文件指向一个inode,那么内容肯定一样,属性都一样,同步修改,那么硬连接就相当于是源文件的别名。

  1. 特点:再创建两个,可以看到连接数变了,删除时,连接数会减少,不会删除文件,直至连接数为1时,会删除文件。

  2. 我们演示一下:

  • 创建两个main.c的硬连接,test.c,link.c:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识

  • 删除硬连接,连接数会变少,直到为1时删除文件:
    八、用户管理命令 && 文件系统 && 连接文件 && 系统知识

四、系统知识

(一)系统运行级别

root下可以修改,在/etc/inittab文件里面配置:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识

运行级别 含义
0 关机,不能设置为默认的,刚开机就关机了
1 单用户模式,在修复系统时
2 不带网络的多用户
3 带网络的多用户,指令界面,只能用命令,鼠标完全没用
4 留给用户自定义的
5 带图形化界面的模式,默认的运行级别
6 重启,不能设置为默认的

我们可以通过:

runlevel //查看运行级别

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识
当前为5,即界面化视图。
通过:

init 运行级别 //切换运行级别

我们切换为3级别:

八、用户管理命令 && 文件系统 && 连接文件 && 系统知识
这个就是一个黑框框,只能用命令去操作

(二)关机 && 重启

含义 指令
关机 shutdown -h now 立刻关机
halt 关机
init 0 关机
重启 shutdown -r now 立即重启
reboot 重启
init 6 重启

加油哦!????。