一、用户管理
先了解系统的用户信息配置文件所在位置
/etc/passwd 存储用户的关键信息
/etc/group 存储用户组的关键信息
/etc/shadow 存储用户的密码信息
1、添加用户
useradd 参数 用户名
# 参数
-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,
如果不想使用系统分配的,可以通过该选项自定义
-c comment:添加注释
补充:
- 组有什么作用?
组,类似生活里的小组。系统的多个用户可以同属一个组,也可以不在一个组内。
假如组B的用户创建了一个文件txt,那么txt属于组B的文件,txt对B组内用户的权限和组外用户的权限有所不同。
- 什么是主组和附加组?
主组:
-
- 用户的初始组
- 用户有且只能属于一个主组
- 用户只能更换主组而不能删除主组(若主组为空,则系统会自动删除)
- 用户创建的文件属于该用户的主组
附加组:
-
- 用户可以属于零个或多个附加组
- 附加组可以直接被删除而无需关心是否所属于用户
- 附加组可以新增和移除任意个所属用户
- 用户被删除时所属附属组不会受影响
示例:
1. 不带参数
useradd test1
验证:查看/etc/passwd/文件最后一行
tail /etc/passwd
test1:x:1000:1000::/home/test:/bin/bash
用户名:密码占位符:用户id:所属主组id:用户家目录
# 注意:在不添加选项的时候,执行useradd之后会执行一系列的操作
a. 创建同名的家目录;
b. 创建同名的用户组;
2. 带参数
# 创建用户test2,让 test2 属于附加组1001(test1的组id),设置用户id为666,主组由系统创建。
useradd test2 -G 1000 -u 666
验证:
tail /etc/group
test1:x:1000:test2 # 组名:密码占位符:组id:该组成员
test2:x:1001:
可以看到 test2 有自己的主组,也属于test1的组内
2、修改用户
usermod 参数 用户名(usermod: user modify, 用户修改)
参数:
-g:表示修改用户的用户主组,选项的值可以是用户组的id,也可以是组名
-G:表示修改用户的用户附加组,选项的值可以是用户组的id,也可以是组名
-u:uid,用户的id(用户的标识符)
-l: 修改用户名
示例:
1. 修改test1用户主组为500,附加组改为501
#usermod -g 1000 -G 1001 test1
2. 修改test1用户用户名,改为test11
#usermod -l test11 test1
3、设置密码
**Linux不允许没有密码的用户登录到系统,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机。**
passwd 用户名
示例:
passwd test1
4、删除用户
userdel 参数 用户名 (userdel: user delete 用户删除)
参数:
-r: 表示删除用户的同时,删除其家目录;
示例:
# 删除test1用户
userdel -r test1
注意:所有跟用户操作的命令(除passwd外)只有root超级管理员有权限执行。
5、切换用户
su [用户名] (switch user)
# 注意的事项:
a. 从root往普通用户切换不需要密码,但是反之则需要root密码;
b. 切换用户之后前后的工作路径是不变的;
c. 普通用户没有办法访问root用户家目录,但是反之则可以;
二、用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
不同Linux 系统对用户组的规定有所不同,如Linux下的用户默认属于与它同名的用户组,这个用户组在创建用户时同时创建。(如果在创建用户时,使用 -g 选项设定主组了,那以选项设定为主)
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就对/etc/group文件的更新。
[root@ntp_server ~]# tail /etc/group
dbus:x:81:
polkitd:x:998:
ssh_keys:x:997:
sshd:x:74:
postdrop:x:90:
postfix:x:89:
chrony:x:996:
ntp:x:38:
test:x:1000:test2
test2:x:1001:
### 文件结构:用户组名:密码占位符:用户组ID:组内用户的用户名
1、用户组添加
groupadd 参数 用户组名
参数:
-g: 表示选择自己设置一个自定义的用户组ID数字,如果自己不指定,则默认从500之后递增;
示例:
# 使用groupadd指令创建一个新的用户组,命名为AdminUser
groupadd AdminsUser
2、用户组编辑
groupmod 参数 用户组名
参数:
-g:表示选择自己设置一个自定义的用户组ID数字
-n:表示设置新的用户组的名称
示例:
# 修改AdminUser用户组,将组ID从502改成520,将名称改为admins
groupmod -g 520 -n admins AdminUser
tail /etc/group
3、用户组删除
groupdel 用户组名
注意:
当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移出所有用户。
三、权限管理
1、概述
Linux系统一般将文件可存/取访问的身份分为3个类别:owner、group、others,且3种身份各有read(读)、write(写)、execute(执行)等权限。
在多用户(可以不同时)计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权力,像是文件夹、特定系统指令的使用。
2、权限介绍
1.读权限:
对于文件夹来说,读权限影响用户是否能够列出目录结构
对于文件来说,读权限影响用户是否可以查看文件内容
2.写权限:
对文件夹来说,写权限影响用户是否可以在文件夹下“创建/删除/复制到/移动到”文档
对于文件来说,写权限影响用户是否可以编辑文件内容
3.执行权限:
一般都是对于文件来说,特别脚本文件。
3、身份介绍
Owner身份:文件所有者,默认为文档的创建者
Group身份:与文件所有者同组的用户
Others身份:其他人,相对于所有者所在组
Root用户:超级用户,管理着普通用户,具有所有权限
4、查看文件权限
到文件所在目录输入 ll
[root@ntp_server ~]# ll
总用量 7214744
-rw-------. 1 root root 1595 9月 28 03:13 anaconda-ks.cfg
-rw-r--r-- 1 root root 4712300544 6月 7 2022 CentOS-7-x86_64-DVD-2009.iso
-rw-r--r-- 1 root root 2652577792 6月 7 2022 chinaskills_cloud_iaas_v2.0.3.iso
drwxr-xr-x 6 root root 56 11月 9 10:01 python3.6.8
drwxr-xr-x 18 501 501 4096 11月 9 10:00 Python-3.6.8
-rw-r--r-- 1 root root 23010188 7月 1 20:25 Python-3.6.8.tgz
-rw------- 1 root root 983 Oct 26 00:07 anaconda-ks.cfg
文件权限 连接数 属主 属组 大小 日期 时间 文件名
每一行的第一个字符一般用来区分文件的类型,一般取值为d、-、l、b、c、s、p。具体含义如下:
d:表示是一个目录,在ext文件系统中目录也是一种特殊的文件。
-:表示该文件是一个普通的文件。
l: 表示该文件是一个符号链接文件,实际上它指向另一个文件。
b、c:分别表示该文件为区块设备或其他的外围设备,是特殊类型的文件。
s、p:这些文件关系到系统的数据结构和管道,通常很少见到。
属主的权限 属组的权限 其他用户的权限
rwx rwx r-x
剩下的这9个字符根据权限种类的不同,也分为3种类型。
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(execute,执行):对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
-:表示不具有该项权限。
# 权限分配方式:
+:表示给具体的用户新增权限(相对当前)
-:表示删除用户的权限(相对当前)
=:表示将权限设置成具体的值(注重结果)【赋值】
5、权限设置
1. chown命令
(1)chown示例一——改变文件的属主
[root@localhost ~]# chown user1 hello.txt 功能:将指定文件hello.txt的属主(所有者)改为user1。
(2)chown示例二——递归改变文件的属主
[root@localhost ~]# chown -R user1 mydir 功能:参数-R,表示递归,即可以深入到指定目录中的每一层,将所有子目录和文件的属主(所有者)改为指定的用户; 本例中会将mydir目录中所有子目录和文件的属主设定为user1。
2. chgrp命令
1)chgrp示例一——改变文件的属组
[root@localhost mydir]# chgrp mygroup1 hello.txt
功能:将指定文件hello.txt的属组改为mygroup1。
2)chgrp示例二——递归改变文件的属组
[root@localhost ~]# chgrp -R mygroup1 mydir
功能:参数-R,表示递归,即可以深入到指定目录中的每一层,将所有子目录和文件的属组改为指
定的组;本例中会将mydir目录中所有子目录和文件的属组设定为mygroup1。
3. chmod命令
(1)chmod示例一——字母方式
字母u针对属主、g针对属组、o针对其他用户、a针对所有用户;
=表示赋予(设置)指定权限,要注意它会覆盖原权限
+表示在原有权限的基础上增加指定权限
-表示在原有权限的基础上去掉指定权限;
r、w、x三种权限,既可以单独使用也可以组合使用
[root@localhost ~]# chmod u+x host.conf
功能:为文件host.conf的属主增加执行权限。
[root@localhost ~]# chmod g-w,o=x host.conf
功能:将文件host.conf的属组去掉写权限,同时将其他用户设置为只有执行权限,而文件属主的
权限不变。
(2)chmod示例二——数字方式
chmod的数字使用方式,使用起来也是很方便的,关键是一个数制转换的问题。
这种方式是先将每个权限位化成二进制数,其中如果某权限位是“-”则用0来表示,否则用1来表示;接
着,将这9列权限分为三组(每三位一组),再将每组化成一个八进制数。
例如,某文件有如下权限rwxrw-r–,则转换为二进制数为111110100,再化为八进制数则为764;反
之,当看到八进制数764时也应该很快转化为相应权限。
[root@localhost ~]# chmod 764 host.conf
功能:将文件host.conf的权限设置为:
属主拥有全部权限;
属组拥有读写权限;
其他用户拥有只读权限