目录
五 用户和用户组
1 切换 root用户
1.1 设置root密码
在 Ubuntu 系统中, root 用户没有设置默认密码
sudo passwd root 可以更改 root 用户的密码,即设置密码
输入zhang用户的密码,输入root用户密码,再次输入root用户密码即可设置成功
su - root
将当前用户临时切换到 root 用户 [su:switch user]
exit
退出当前的 shell 环境或终端
(可以跳过)退出当前的 shell 环境: 结束当前Shell进程并返回到上一级的Shell环境或用户桌面
可以类比为打开了多个程序窗口, 当你关闭一个窗口时, 并没有关闭电脑或者操作系统, 而是回到了之前的工作空间
注:shell 是一个命令行解释器, 负责接收和解析用户通过终端输入的命令,每当用户在终端中输入一条命令, shell 会立即将其 "翻译" 成操作系统可以理解的指令
终端 是一个提供命令输入和输出环境的程序, 可以把它看作是一个窗口, 让用户可以看到操作系统的反馈,而 shell 则是这个窗口中的工具, 帮助用户向操作系统发出指令
su root
将当前用户临时切换到 root 用户, 但不会切换当前用户的环境变量和工作目录,就是说你终端开头显示的还是 zhang 这个用户下
当前用户的环境并不完全适合作为 root 用户来运行, 因为可能会出现一些权限问题
su - root
将当前用户临时切换到 root 用户, 同时切换当前用户的环境变量和工作目录
就是终端开头显示的是 root 这个路径
建议使用 su - root 命令来切换到 root 用户, 以确保当前用户的环境变量和工作目录 与 root 用户的环境变量和工作目录保持一致, 避免出现不必要的问题
(可以跳过) 在 linux 系统中, 用户的系统设置通常是独立的, 每个用户都有自己的配置文件和环境变量
当使用 su - root 命令临时切换到 root 用户后, 可以执行一些需要 root 权限的操作, 比如:修改系统设置
修改的设置只会影响当前 root 的用户环境, 不会影响其他用户的系统设置
当你退出 root 用户环境后, 这些操作将不会对其他用户或会话产生影响
1.2 添加删除用户
su - root 切换到root用户
*当创建一个新用户账户时, 系统都会在 /home 目录下自动创建与该用户账户同名的文件夹
adduser xiao 创建xiao用户 ls /home 查看该系统上所有已创建用户的主目录,可以发现home 目录下是 zhang xiao
deluser xiao 删除xiao用户 但没删除home目录下的xiao文件 rm -r /home/luna 可以删除luna用户的主目录
deluser --remove-home xiao 删除xiao用户及其相关文件,一步删除到位
passwd xiao 更改用户密码 这里已经是最高权限了,不用加sudo了
注: 可以跳过,我这里就没有报错,根据报错的进程4857 使用 kill -9 4857结束进程
报错 userdel: user xiao is currently used by process 4857
解决
ps -f 显示当前终端会话中运行的进程的详细信息
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:29 ? 00:00:03 /sbin/init splash
root 2 0 0 17:29 ? 00:00:00 [kthreadd]
......
UID (User ID) 进程用户ID
PID (Process ID) 进程ID
PPID (Parent Process ID) 父进程ID
C(CPU) 进程占用 CPU 的百分比
STIME (Start Time) 进程启动的具体时间
TTY (Teletypewriter) 与进程交互的终端设备
TIME 启动进程花费的 CPU 时间
CMD 启动进程的命令
ps -ef 显示系统中所有正在运行的进程的详细信息
ps -ef | grep xiao 显示系统中所有名称包含 luna 的进程的详细信息
ps[process status 进程状态]
-e[every 每个] 表示显示所有进程, 包括其他用户的进程
-f[full format 完整格式] 表示以完整格式显示进程信息
| 管道符号 将前一个命令的 "输出" 作为后一个命令的 "输入"
grep luna 会在 ps -ef 命令的 "输出" 中查找包含 luna 的进程信息
强制结束 id=4857 的进程
kill -9 4857
-9 表示发送 SIGKILL[signal kill] 信号给进程 id 为 4857 的进程
SIGKILL 信号是一种强制停止进程的信号
2 用户组
2.1 查看用户的所属组信息
groups 未指定用户,查看当前用户的所属组信息
zhang adm cdrom sudo dip plugdev users lpadmin
zhang : 组名为 zhang 的用户组 [zhang 用户隶属于和自己同名用户组]
adm(Administrator) : 管理员用户组, 具有系统管理权限
cdrom(CD-ROM) : 光盘用户组, 具有读取光盘的权限
sudo(Super User Do) : 超级用户组, 具有执行系统管理任务的权限
dip(Device Interface) : 接口用户组, 具有配置网络接口的权限
plugdev(Plug-in Device) : 设备插件用户组, 具有管理设备插件(如声卡、显卡等)的权限
users(Users) : 普通用户组, 不具有系统管理权限
lpadmin(Local Printer Administration) : 打印机管理用户组, 具有管理打印机的权限
groups zhang 指定了用户, 查看 zhang 这个指定用户的所属组信息
zhang : zhang adm cdrom sudo dip plugdev users lpadmin
:左边第一个 zhang 指的是用户 当前登录用户的用户名是 zhang
:右边第二个 zhang 指的是所属组 组名为 zhang 的用户组
groups root
root : root
root 用户隶属于 root 组, root 组被赋予了最高的权限, 允许其成员访问系统中的所有资源
2.2 查看所有用户组的信息
需要找到存放用户组的文件,文件在etc目录下
使用 cat /etc/group
使用grep zhang /etc/group 只查找zhang 这个字符串
adm:x:4:syslog,zhang 表示名为adm的组, 组密码是x, 组ID是4, 组成员包括syslog和zhang
cdrom:x:24:david [表示名为cdrom的组, 组密码是x, 组ID是24, 组成员包括zhang]
sudo:x:27:david [表示名为sudo的组, 组密码是x, 组ID是27, 组成员包括zhang]
dip:x:30:david [表示名为dip的组, 组密码是x, 组ID是30, 组成员包括zhang]
plugdev:x:46:david [表示名为plugdev的组, 组密码是x, 组ID是46, 组成员包括zhang]
users:x:100:david [表示名为users的组, 组密码是x, 组ID是100, 组成员包括zhang]
lpadmin:x:118:david [表示名为lpadmin的组, 组密码是x, 组ID是118, 组成员包括zhang]
david:x:1000: [表示名为zhang的组, 组密码是x, 组ID是1000, 没有其他组成员]
/etc/group 文件的每行格式是 group_name:x:GID:group members
group_name 表示用户组的名称
x 表示密码占位符, 密码是存储在/etc/shadow文件中
GID 表示组ID(GID), 用于唯一标识用户组
group members 表示该用户组的成员, 每个成员用逗号分隔
查看用户 zhang 的用户ID和组ID (不查看zhang的组成员,只需要用户id,组id使用)
id david
uid=1000(zhang) gid=1000(zhang)
组=1000(zhang),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),118(lpadmin)
3 创建、删除用户组
3.1创建测试环境
创建 xiao 测试用户
su - root 切换到root用户 ls /home/查看当前有哪些用户,这里只有zhang 用户
adduser xiao 创建xiao用户 输入两次密码,5下回车跳过 选择y 回车即可完成
创建一个名为 test 的用户组
groupadd test 回车,即可完成创建
grep test /etc/group 可以查看test用户组的信息,可以看见目前是没有组成员的
test:x:1002:
groups xiao 可以看见xiao是属于 xiao users 用户组,还不属于test
3.2 添加用户
将 xiao 用户添加到 test 用户组
usermod -a -G test xiao
注 [-a:append -G:group] 追加的意思
-a 表示以追加方式 将用户 xiao 添加到 test 组中, 不影响其原有所属组
若省略了 -a, 用户 xiao 将从其原有组中删除,再被添加到名为 test 的新组中
-G group 表示组
test 表示将用户添加到名为 test 的组中
查看用户 xiao 所属的所有用户组
groups xiao 可以看见后面加了一个test组
xiao : xiao users test
grep test /etc/group 可以看见test里只有一个xiao成员信息
test:x:1002:xiao
3.3 删除用户xiao以及用户组test
将用户 xiao 从 test 用户组中删除
deluser xiao test
使用grep test /etc/group 可以看到已经没有xiao用户了
当然 是把xiao从test用户组中删除了,但xiao用户还是存在的
删除 test 的用户组
groupdel test 可以看见grep 已经查询不到test的信息了
六 文件和文件目录权限
1 组管理与权限管理
在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其他组的概念。
1.1、文件/目录 所有者

1.2.1 查看文件的所有者和权限
ls -ahl 可以查看隐藏文件切换算好文件大小,以长格式形式列出文件,查看的比较全

ls -l 以长格式形式列出文件
1.3 权限的基本介绍
-rw-rw-r-- 0-9说明:
第 0 位确定文件类型
- 是普通文件
l 是链接,相当于 windows 的快捷方式
d 是目录,相当于 windows 的文件夹
c 是字符设备文件,鼠标键盘等
b 是块设备,比如硬盘
以第一行1.txt.文件这行为例 rw- rw- r--
第1-3位确定所有者(该文件的所有者)拥有该文件的权限。 User rw-
第4-6位确定所属组(同用户组的)拥有该文件的权限。 Group rw-
第7-9位确定其他用户拥有该文件的权限。 Other r--
1 是文件的硬链接数, 表示该文件有一个硬链接
在默认情况下, 创建一个文件时, 系统通常会创建一个硬链接
创建软链接(符号链接) 的命令
ln -s /home/david/test.txt /home/david/symbolicLink.txt
创建硬链接
ln /home/david/test2.txt /home/david/hardLink.txt
实现方式:
硬链接是指向文件索引节点的引用, 类似原始文件的别名,
硬链接与原始文件共享同一个索引节点,在系统中可以被视为同一个文件.
软链接是指向另一个文件或目录的路径, 类似Windows的快捷方式,
软链接有自己的索引节点
删除原始文件时:
硬链接仍然存在, 因为它指向的是文件的索引节点
软链接则会失效, 因为它指向的文件已不存在
第一个zhang 是文件的所有者, 即创建该文件的用户
第二个zhang 是文件的所属组, 即该文件所属的用户组
0 59这些是 是文件的大小, 0就表示该文件目前没有数据
11 月 07:33 是该文件最后一次被修改的日期和时间
1.txt. 创建的文件
(直接放我之前学centos的笔记图片,有点懒得一点点码字了,感觉确实挺费时间的,主要是没办法转换成可编写pdf,弄得挺麻烦的,学习两个小时,一个多小时全在搞笔记了,本末倒置了属于是,这要啥时候能学完,用这个是为了可以复习,直接放笔记图片也可以很好的展示)
1.3.1 rwx权限讲解
2 修改所属组和文件权限
2.1 修改文件权限
使用 chmod u=rwx, g=rx,o=rx 和 chmod 751这两种方式都是可以直接进行修改文件权限。 即无论之前是什么权限,直接赋予新的权限,751
如果在特定情况下,你只需要增加一个权限,就需要使用第一种方式,写清楚是谁,比如u+x
假如想清空其他组的权限, chmod o= 1.txt 只需要空格就行
假如移除所有者和所属组的rw权限, chmod ug-rw 1.txt
递归地将目录demo及其子目录下的所有文件的权限设置为777 [-R:recursive 递归]
sudo chmod -R 777 demo
2.2 修改所有者和所属组
2.1、修改文件所有者
- 查看文件/目录所在组,可以看见text.txt的所有者是root 所属组是root

- 查看有哪些用户,这里有xiao用户,没有可以创建一个,我们准备更改为xiao为所有者

-
命令: chown 新用户 文件/目录名,可以看到,所有者是xiao用户

2.2、修改目录所有者
- 新建一个多级目录,2目录下有1目录
命令: mkdir -p 2/1 ls -l
- 修改2目录的所有者
命令:chown xiao 2 ls -l 成功修改
- cd 到2目录可以看到1目录未受到影响
- 使用chmod -R xiao /root/2/ 就可以递归修改2目录下所有目录所有者,注意用绝对路径
2.3、修改文件/目录所在的组
-
先查看 test.txt 是在root 组

- chgrp xiao test.txt 修改为xiao组
更改目录的所属组一样的操作,chown命令可以同时修改所有者和所属组
注
将目录 2 的所有者更改为 yan 用户,所属组更改为 root 组
chown yan:root 2