1.用户和组管理
1.1历史命令
bash通过历史命令文件保存了一定数目的已经在Shell里输入过的命令,这个数目取决于环境变量HISTSIZE(默认1000可以修改)不过bash执行命令不会立刻将命令写入历史命令文件,而是先存放在缓冲区中,等bash退出时再将缓冲区写入历史命令文件 也可以执行history -w 要求bash立即保存
root:/root/.bash_history
user:/home/user/.bash_history
history [n] 显示n条历史命令
-a 把当前的历史命令记录追加到历史命令文件中
-c 清空历史命令列表
-w 把当前缓冲区内存写入历史命令文件,并且覆盖原来内容
ehco可查看当前HISTSIZE的值
!n 重新执行第n条命令
!ping 执行最近用到的以ping 开头的命令
!! 重新执行上一条命令
[root@localhost /]# echo $HISTSIZE
1000
由此可知,默认存储1000条历史指令。
1.2.用户管理
Linux 是一个多用户,多任务的操作系统,可以让多个用户同时使用系统,为了保证用户之间的独立性,允许用户保护自己的资源不受非法访问,为了使用户之间共享信息和文件,允许用户分组工作。
Linux 操作系统中存在三种用户:
root用户:uid 是区分用户的唯一标志0;
系统用户:大多数无法登陆1-999 /sbin/nologin
普通用户:普通用户1000-60000。
1.3.新增用户
使用 useradd 命令
命令格式:useradd 选项… 用户名
常用选项:
- u 指定用户id号
- d 指定用户家目录位置
- g 指定用户基本组
- G 指定用户附加组
- s 指定用户使用的shell解释器
用户的基本信息放在/etc/passwd中。
[root@localhost ~]# id txy
uid=1001(txy) gid=1001(txy) groups=1001(txy)
新增用户txy,并查看用户。
[root@localhost ~]# useradd -u 9999 -d /home/txy1 -g txy -G txy -s /sbin/nologin txy1
[root@localhost ~]# id txy1
uid=9999(txy1) gid=1001(txy) groups=1001(txy)
指定txy1的uid为9999,gid为txy的gid,指定目录,指定用户使用的解释器。
1.4.用户信息介绍
用户的基本信息存放在 /etc/passwd 文件
[root@rhel8 ~]# cat -n /etc/passwd
1 root❌0:0:root:/root:/bin/bash
2 bin❌1:1:bin:/bin:/sbin/nologin
3 daemon❌2:2:daemon:/sbin:/sbin/nologin
用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器程序
用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等
组标识号(GID):字段记录的是用户所属的用户组。它对应
着/etc/group文件中的一条记录。
注释性描述(users):字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger
1.5.设置用户密码
使用passwd命令
命令格式:passwd 选项用户名
常用选项
-s查看密码信息
-1锁定用户密码
-u解锁用户密码
-d删除密码
非交互式设置密码:echo 密码 |passwd–stdin用户名
1.6.修改用户属性
使用 usermod 修改以存在的用户属性
命令格式:usermod 选项… 用户名
常用选项
-u 修改用户uid
-d 修改用户家目录
-g 修改用户基本组
-G 修改用户附加组
-s 修改用户登录的解释器
1.7.删除用户
userdel命令用于删除用户帐号
userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户
帐号,而不删除相关文件。
命令格式:userdel 选项 用户名
选项
-r //删除用户家目录和用户所有文件
1.8.用户租
用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时会自动创建和用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组用户的附加组(supplementary group): 一个用户可以属于零个或多个辅助组,附属组
1.9.添加组
groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中
/etc/group 文件存放组账户信息
[root@rhel8 ~]# cat /etc/group
root❌0:
组名:密码占位符:GID:该组中的用户列表
命令格式:groupadd 选项 组名 选项 -g GID(组id)
/etc/gshadow文件存放组密码信息
1.10.添加组成员
gpasswd 是 Linux 下工作组文件 /etc/group 和/etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除。
命令格式:gpasswd 选项 用户名 组名
选项
-a 添加
-d 删除
1.11.修改组属性
groupmod命令用于更改组ID和组名称命令格式:groupmod 选项 组名选项
-g 修改组ID
-n 修改组名
groupmod -g 组ID 组名
groupmod -n 新组名 原组名
1.12.删除组
groupdel命令用于删除群组,若该组中仍有某户存在,必须先删除这些用户后,才能删除组。
命令格式:groupdel 组名
[root@rhel8 ~]# groupdel student //删除组
[root@rhel8 ~]# grep student /etc/group //确认结果
2.tar备份与恢复
2.1.tar压缩工具
tar 即 Tape ARchive 磁带归档,可以对目录和多个文件打包一个文件,并且可以压缩,保留文件属性不丢失,常用于备份功能,推荐使用
压缩与解压缩源文件均不会消失
归档及压缩: 1.减小占用的空间 2.将零散的文件归成一个压缩包
Linux独有压缩格式及命令工具:
gzip—> .gz
bzip2—> .bz2
xz—> .xz
tar 命令格式:tar 选项 /路径/压缩包名字 被压缩文件
常用选项
-c 创建打包文件
-f 指定打包后的文件名称
-z 调用 .gz压缩工具 -J 调用 .xz压缩工具-j 调用 .bz2压缩工具
-t 列出打包文档内容
-x 释放打包文件
-C 指定解压路径
-v 显示详细信息
这里上传文本进行压缩:
选定需要上传的文本。
下载工具rz;并输入rz弹出窗口下载(这里使用的是xshell),mv改成全英文。
[root@localhost tanxy]#yum install lrzsz -y
[root@localhost tanxy]# cd /data
[root@localhost data]# rz
[root@localhost data]# mv 报文202101041705.txt text20210104.txt
[root@localhost data]# ll
total 126820
-rw-r--r--. 1 root root 129860050 Jan 11 14:47 text20210104.txt
分别压缩成三种格式:
[root@localhost data]# ll
total 12
-rw-r--r--. 1 root root 10240 Jan 11 23:05 text20210104.txt
[root@localhost data]# tar -zcf /data/text01.tar.gz /data/text20210104.txt
tar: Removing leading `/' from member names
[root@localhost data]# tar -jcf /data/text01.tar.bz2 /data/text20210104.txt
tar: Removing leading `/' from member names
[root@localhost data]# tar -Jcf /data/text01.tar.xz /data/text20210104.txt
tar: Removing leading `/' from member names
[root@localhost data]# ll -h
total 24K
-rw-r--r--. 1 root root 128 Jan 11 23:11 text01.tar.bz2
-rw-r--r--. 1 root root 131 Jan 11 23:10 text01.tar.gz
-rw-r--r--. 1 root root 196 Jan 11 23:11 text01.tar.xz
-rw-r--r--. 1 root root 10K Jan 11 23:05 text20210104.txt
可以发现文本压缩过后,缩小了9倍,从压缩文本的情况来看,gz压缩工具强于xz小于bz2。
3.find文本查找
find工具用于查找文件或目录,根据预设的条件递归查找对应的文
件
命令格式:find 目录 条件1 选项 条件2 …
常用条件
-type 类型(f文件 d目录 l快捷方式)
-name “文档名”
-iname 按名称查找忽略大小写
-size 文件大小(k、M、G)+10k 大于10k的文件 -10k 小于10k
-user 用户名
-mtime 按日期查找(+ 代表多少天之前 - 代表多少天之内)
— find /root/ -mtime +10 //10天之前
— find /root/ -mtime -10 //10天之内
find命令提供了一个单独的处理结果命令 –exec
——命令格式:find … … -exec 处理命令 {}\;
以 {} 代替每一个结果,逐个处理,遇 ;结束
find /var/log/ -mtime +10 -type f -exec cp {}/opt/ ; #拷贝
find /var/log/ -mtime +10 -type f -exec mv {}/opt/ ; #移动
find /var/log/ -mtime +10 -type f -exec rm {}; #删除
4.权限管理
4.1.基本权限
—— 访问方式(权限)
读取:允许查看内容 r ( read )
写入:允许修改内容 w ( write )
可执行:允许运行和切换 x ( execute )
目录的 r 权限:可以 ls 查看此目录内容
目录的 w 权限:可以对目录执行增删改查等操作如 cp mv touch mkdir rm 等
目录的 x 权限:可以 cd 到此目录
4.2.设置基本权限
• 使用 chmod 命令
——命令格式: chmod 选项 归属关系±=权限类别 文档…
——命令选项
u 所有者
g 所属组
o 其他人
- 添加
-
去除
= 重新定义
-R 递归设置权限
将c.txt文件赋予所有权限
[root@localhost data1]# ll
total 0
-rw-r--r--. 1 root root 0 Jan 13 03:43 c.txt
[root@localhost data1]# chmod 777 c.txt
[root@localhost data1]# ll
total 0
-rwxrwxrwx. 1 root root 0 Jan 13 03:43 c.txt
取消c.txt的执行权限。
[root@localhost data1]# chmod u-x c.txt
[root@localhost data1]# ll
total 0
-rw-rwxrwx. 1 root root 0 Jan 13 03:43 c.txt
[root@localhost data1]#
4.3.设置文档归属
• 使用 chown 命令
– chown 属主 文档…
– chown :属组 文档…
– chown 属主:属组 文档…
——命令选项
-R 递归设置
设置test文件为tanxy的组内
[root@localhost data]# ll -d test
drwxr-xr-x. 3 tanxy tanxy 32 Jan 13 18:02 test
[root@localhost data]# chown tanxy:tanxy test/
4.4.设置特殊权限
附加权限(特殊权限)
Set GID
• 附加在属组的 x 位上
– 属组的权限标识会变为 s
– 适用于目录,Set GID可以使目录下新增的文档自动设置与父目录相同的属组
– 让目录下新增的子文档,自动继承父目录的所属组身份
创建user客户,并在/home下赋予user目录755权限
[root@localhost home]# useradd user
[root@localhost home]# ll -d user/
drwx------. 3 txy txy 78 Jan 8 22:12 user/
[root@localhost home]# chmod 755 user/
[root@localhost home]# ll -d user/
drwxr-xr-x. 4 user user 102 Jan 13 19:31 user/
赋予user目录特殊权限
[root@localhost home]# chmod g+s user/
[root@localhost home]# ll -d user/
drwxr-sr-x. 4 user user 102 Jan 13 19:31 user/
在user目录中创建文件test1和目录mulu
[root@localhost home]# cd user/
[root@localhost user]# ll
total 0
drwxr-sr-x. 2 root user 6 Jan 13 19:31 mulu
-rw-r--r--. 1 root user 0 Jan 13 19:24 test
[root@localhost user]# mkdir mulu
[root@localhost user]# touch test
[root@localhost user]# ll
total 0
drwxr-sr-x. 2 root user 6 Jan 13 19:31 mulu
-rw-r--r--. 1 root user 0 Jan 13 22:24 test
可以观察到文件和目录的组已归属user,目录继承上一级目录的权限。
4.5.ACL权限
ACL访问控制策略的作用:能够对个别用户,个别组设置独立的权限
——命令:getfacl 查看权限 setfacl 设置权限
——命令选项
-m 设置权限
-x 删除指定权限
-b 删除所有权限
-R 递归设置
getfacl 文档 //查看权限
setfacl -m u:用户名:权限 文档 //为用户设置权限
setfacl -m g:组名:权限 文档 //为组设置权限
setfacl -x
setfacl -b 文档 //清空所有权限
查看user权限
[root@localhost home]# getfacl user/
# file: user/
# owner: user
# group: user
# flags: -s-
user::rwx
group::r-x
other::r-x
给user目录的tanxy组的user赋予w权限
[root@localhost home]# setfacl -m u:tanxy:w user/
[root@localhost home]# getfacl user/
# file: user/
# owner: user
# group: user
# flags: -s-
user::rwx
user:tanxy:-w-
group::r-x
mask::rwx
other::r-x
删除tanxy赋予的w权限
[root@localhost home]# setfacl -x u:tanxy user/
[root@localhost home]# getfacl user/
# file: user/
# owner: user
# group: user
# flags: -s-
user::rwx
group::r-x
mask::r-x
other::r-x
删除所有权限
[root@localhost home]# setfacl -b user/
[root@localhost home]# getfacl user/
# file: user/
# owner: user
# group: user
# flags: -s-
user::rwx
group::r-x
other::r-x
5.附加练习
5.1.问题
创建一个公用目录/home/admins,要求如下:
1、此目录的组所有权是adminuser
2、adminuser组的成员对此目录有读写和执行的权限
除此以外的其他所有用户没有任何权限(root用户能够访问系统中的所有文件和目录)
3、在此目录中创建的文件,其组的所有权会自动设置为属于adminuser组
5.2.答案
5.1.创建用户
[root@localhost ~]# useradd admin1
[root@localhost ~]# groupadd adminuser
[root@localhost ~]# gpasswd -a admin1 adminuser
Adding user admin1 to group adminuser
5.2.赋予权限
[root@localhost ~]# getfacl /home
getfacl: Removing leading '/' from absolute path names
# file: home
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@localhost ~]# setfacl -m g:adminuser:rwx /home/
[root@localhost home]# getfacl /home/
getfacl: Removing leading '/' from absolute path names
# file: home/
# owner: root
# group: root
user::rwx
group::r-x
group:adminuser:rwx
mask::rwx
other::r-x
5.3.创建文件
创建文件,查阅是否属于adminuser组
[root@localhost home]# cd adminuser1/
[root@localhost adminuser1]# ll
total 0
-rw-r--r--. 1 root admin1 0 Jan 14 19:17 aa