用户与权限
用户及用户组
Linux操作系统允许多用户同时登陆。用户可以形成用户组,每个用户组可以有多个用户,每个用户可以属于多个用户组。通常用户与用户之间、用户组与用户组之间未经允许不能访问或修改其他人的文件或目录。但root用户可以。
用户标识符:在用户创建账号时,Linux会给该账号分配唯一一个数字ID,称UID;UID和用户名一一对应。(存放在/etc/passwd
文件中)
用户组标识符:每个用户组也有ID,称GID(Gruop ID)。(存储在/etc/group
文件中)
在终端中查看用户标识符和用户组标识符:
-
使用
ls -l
显示出的文件信息中包含用户和用户组名。 实际上,保存文件时存储的是UID和GID,而不是用户名和用户组名。在显示属性时,系统会查询
/etc/passwd
和/etc/group
两个文件,将名字翻译为对应的UID和GID。 -
为了安全,以上内容密码部分都为
X
。- 用户密码存放在
/ect/shadow
文件 - 用户组密码存放在
/etc/gshadow
文件(用户组密码通常是给用户组管理员使用的)
查看
/etc/shadow
文件中的用户密码在
/etc/shadow
文件中存储的密码是一般都是通过算法加密过得,很难破解。查看
/etc/gshadow
文件中的用户组信息 - 用户密码存放在
用户切换
对于一些修改系统配置文件和信息的操作,需要有系统管理员权限,就需要将用户切换为系统管理员。
两个常见的切换命令:
sudo
-
sudo
命令通常用来执行需要系统管理员权限的指令或操作。 -
sudo命令只需用户知道自己的账户密码
-
为了防止
sudo
被滥用,并非所有用户都可以使用sudo
,只有在/etc/sudoers
文件中指定德育用户才可以执行该命令。-
这个文件由特定的语法和变量组成,不推荐直接编辑sudoers文件。
-
如果想要某用户可以执行
sudo
命令,可以将其加入到sudo用户组中。 -
也可以用
visudo
命令编辑sudoers文件。
-
-
sudo命令在**在只登陆当前普通用户**的情况下,执行拥有root权限才可以执行的命令。
root账户首次设置密码,就需要使用此种方式。(没有密码root用户无法登陆,就无法使用。设置密码来启动root用户)
su
与sudo命令相比,su命令功能更强大。
su可以将用户切换为root账户,还可以进行任何身份切换。root用户的用户主目录为/root目录
su命令常用选项
-c 后接命令,执行该命令后退出登录的账户
-l 后接要切换到的用户
-m 保持当前用户的shell环境
-
su命令直接切换到root用户
-
su命令 -l 选项切换到root用户
-
exit命令退出当前登录用户
-
su切换root账户后查看gshadow文件
等价于 sudo cat /etc/gshadow
-
su命令 -c选项执行一次命令
-C 选项后需要紧跟执行的命令,如果命令有空格隔开,则需要将整个命令用英文引号括起来;最后是执行该命令的用户的用户名
用户管理
如果想成为一个合格的系统管理员,用户关系是必须掌握的一项技能。本节主要讲述如下内容:用户的增删改查、用户初始用户组和有效用户组。
新增用户
useradd命令,常用选项
-u 指定新建用户的UID,为一串数字
-g 用户属于的用户组GID;用户组的GID会添加到passwd文件的第4个字段
-G 用户可以加入的用户组;该用户名会添加到指定用户组group文件的第4个字段
-M 不创建用户主目录
-m 创建用户主目录
-c 用户信息说明;该内容会添加到passwd的第5个字段
-d 指定用户主文件夹
-r 创建系统账户
-s 指定新建用户的默认Shell,而不是默认指定为/bin/bash
-e 指定账户过期日期;该内容添加到shadow的第8个字段
-
useradd默认值添加用户
-
passwd
文件中UID为1001,GID为1001。普通用户的ID是从1000开始的,本机安装时创建的os用户UID为1000,所以新创建的用户为1001。依次递增
-
shadow
文件中密码为!,未设置密码代表账号未启动。 -
group
文件中添加了一行和账户名同名的用户组信息。(使用默认选项会创建和新账号相同的用户组,很多时候是没必要的,可以通过-g命令设置新建账号所属的用户组)
-
-
添加新用户,并将该用户添加到某个用户组-g
- 使用-g指定用户组时,用户组必须是已经存在的,否则会创建失败
passwd
文件中tedu_1的用户组id为1001gruop
文件中,第4个字段不会添加tedu_1的用户名
-
使用useradd 命令-m创建用户及主目录
查看用户信息
id命令,常用选项
-g 显示初始用户组GID
-G 显示所有用户组GID
-u 显示用户UID
-n 和u,g,G配合,将ID转换为名称
修改用户信息
-
更改用户密码
新创建的账户是封锁的,需要设置用户的密码才可以使用。
-
登录新创建用户
设置新用户的密码后,用户就可以登录
会提示没有主目录。
除了修改用户密码外,passwd还提供一些其他的选项。
-l 将shadow文件中相应用户的面前加上!,达到锁定账户的作用 -u 将shadow文件中相应用户密码签的!去掉,达到解锁账户的作用 -n 接天数,修改shadow的第4个字段 -x 接天数,修改shadow的第5个字段 -w 接天数,修改shadow的第6个字段 -i 接日期,修改shadow的第7个字段
-
锁定解锁用户
-
修改用户信息
用户信息更改使用的命令有两种,分别是
-
root管理员使用的命令
-
用户自行修改信息使用的命令
usermod命令,常用选项 -c 修改passwd文件第5个字段内容 -d 修改passwd文件第6个字段内容 -e 修改shadow文件第8个字段内容 -f 修改shadow文件第7个字段内容 -g 修改passwd文件第4个字段内容,即GID编号 -G 修改gruop文件第4个字段内容,将该用户添加到对应的用户组 -l 修改passwd文件第1个字段内容,即用户名称 -s 修改passwd文件第7个字段内容,即默认的用户Shell -u 修改passwd文件第3个字段内容,即用户UID -L 修改passwd文件第2个字段内容,即用户密码,达到暂时冻结用户的目的 -U 修改shadow文件第2个字段内容,取消用户密码冻结,使用户恢复使用
-
-
chfn进行用户信息修改
以上的用户信息修改,需要管理员权限
sudo
才可以运行,Linux系统本身也提供了一些普通用户可以使用的命令,如chfn
,可以用来修改用户信息,而且采用了交互的方式进行修改,方便便捷。 -
删除用户
命令userdel
-
有效用户组和初始用户组
前面的内容提到不同的用户组可以包含同一个账户,但是查看每个用户的信息只会出现一个GID。对每个用户而言,其所属的用户组是有区别的,分为初始用户组和有效用户组。
passwd
文件第4个字段填写的GID为初始用户组,其余包含用户的用户组就是有效用户组。通常,用户登录后会自动获取初始用户组的所有权限,所以不需要将该用户添加到group
文件中初始用户组的第4个字段。
用户组管理
添加用户组
groupadd 命令创建用户组
通常使用gruopadd
命令的默认选项创建用户组即可,如果需要创建系统用户组,可以使用-r选项,这一点和useradd相同。
删除用户组
文件权限
文件权限是Linux操作系统中相当重要的一个概念,对Linux操作系统中文件安全、系统安全、隐私保护起了相当重要的作用。本节主要结合第3张和本章前述用户部分的内容介绍文件权限的相关操作。
文件属性
使用ls -l
查看文件属性
-
文件权限
-
10个字符组成
- 第1个字符代表文件类型;‘-‘表示普通文件
- 第2-4个字符,文件所属用户权限。常见的为rwx三个权限,分别对应可读、可写、可执行
- 第5-7个字符,文件所属用户组权限
- 第8-10个字符,除了所属用户和用户组外,其他用户所拥有的权限
-
-
所属用户
通常是该文件的创建用户
-
所属用户组
文件所属用户组是该文件拥有者所在的用户组的名称
权限的意义
-
权限对文件的意义
文件是存储数据的地方,可以存储文本、二进制、数据库等内容。对于文件,rwx三个权限意义如下:
- r:读取文本文件内容
- w:对文件进行编辑、修改、新增、删除内容;但不一定能够删除该文件。
- x:如果该文件是应用程序、脚本等文件,当前用户拥有执行权限,就可以实现该程序的执行。和Windows系统不同, 在Windows系统中,可以使用拓展名区分文件是否可执行,如exe/bat/cmd等都是可执行文件,但txt不可执行。而在Linux系统中,无论该文件的名称是什么,只要拥有可执行权限,就是可执行文件,当然,最终能否输出执行结果,则需要看文件的内容是什么。
-
权限对目录的意义
- r:读取目录结构
- w:更改目录结构
- x:访问目录权限。常见的cd命令
修改文件所属用户
常用的更改文件所属用户/用户组的命令有以下两个:
chwon:change owner 改变文件所属用户
chgrp:change group 改变文件所属用户组
-
chown改变文件所属用户
原来tedu_nano.txt文件所属的用户组为pp,现在变成了tedu_os
除了修改文件所属用户,chown还可以同时修改用户、用户组,操作方法如下:
注意pp:pp 冒号左右两端没有空格
-
chgrp改变文件所属用户组
原来tedu_nano.txt文件所属的用户为pp,现在变成了tedu_os
修改文件权限
一般文件都有读写执行等权限,修改这些权限,常使用的命令如下
chmod,使用方法
数字方式
符号方式(推荐)
-
数字方式
典型文件权限是类似‘’rwx rwx rwx‘’等9个字符。用二进制的思维单独看每三个字符,将由权限的数字记1,无权限计为0,就将权限问题转换为了数字问题。数字0-7分别代表了不同的权限,7=rwx,6=rw-,…,0=—
【注意】使用数字方式对文件权限进行修改,需要知道原来的权限,不然可能会修改错误。(比如想增加一个权限,那么需要根据原来的数字,计算新的数字是几)
-
符号方式
符号方式修改文件权限更加灵活与高校,甚至可以再不知道原来文件权限的基础上进行修改。学习符号方式修改文件权限之前,首先需要了解需要用到的几个符号。
用户符号 u:user 文件所属用户 g:gruop 文件所属用户组 o:other 其他用户 a:all 所有用户 设置符号 +: 文件增加权限 -: 文件移除权限 =: 给文件设置权限(注意,等号右两边需要为3个字符,不然会权限丢失) 权限负号: r: 可读 w: 可写 x: 可执行
使用-设置文件权限
使用+设置文件权限
使用=设置文件权限
=权限指示不全,造成权限丢失
从上述示例可以看出,对某一用户来说,使用=时,必须完整指明需要的权限。在原本文件的权限不明确时,使用=需要注意。
新增用户创建主目录
前面的事例中创建的tedu_1用户没有创建主目录,本节详细说明手动创建用户主目录的过程。
-
/etc/skel 目录
默认的用户主目录都已/etc/skel目录为模板进行创建,所以只需要将该目录复制到用户指定的位置即可。
-
查看用户主目录默认路径
创建用户时候,用户的信息中会包含该用户的默认用户主目录的路径信息,但是该路径不一定存在。
-
复制模板
创建用户主目录可以直接在home目录下创建tedu_1目录;也可以直接复制/etc/skel到指定位置。这里采用复制模板目录的方法进行进行创建。
-
修改文件权限
上述步骤之后,已经为用户tedu_1创建了主目录,但是该主目录的所有人还不是tedu_1用户。所以接下来就修改文件权限,将所属用户、用户组修改为tedu_1。