【Linux基本命令2】

本文介绍了Linux系统下的文件压缩与解压,包括tar命令的使用,如创建和提取.tar、.gz等格式的压缩文件。此外,还详细讲解了Linux系统的用户管理,包括添加、修改和删除用户,以及用户组的管理。同时,提到了系统关机、重启命令和查看当前日期、日历的方法。最后,讨论了文件权限的概念和如何使用chmod、chown等命令进行权限分配和文件属主属组的修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5.3 压缩与解压

我们都知道在windows操作系统下,压缩文件的扩展名为.zip、.rar等,在Linux操作系统下,为.tar、.gz、.tar.gz等

5.3.1 压缩

语法:

tar [参数] 打包压缩后的文件名 要打包压缩的文件
  • 参数:
    • -c:创建新的文件(必选项)
    • -v:输出文件清单(可选项)
    • -f:设置压缩包的文件名(必选项)
      示例:
tar -cvf test.tar a.java abc.java

5.3.2 解压
语法:

tar [参数] 压缩文件
  • 参数:
    • -x:取出压缩包中文件中的内容(必选项)
    • -v:输出文件清单(可选项)
    • -f:设置要操作的文件名(必选项)
    • -C:设置解压的路径(可选项),默认解压到压缩包所在的目录
      示例:
mkdir hello
tar -xvf test.tar -C ./hello				# 解压test.tar压缩包,压缩包中的文件存放到hello文件夹中

注意:./代表是当前目录下的hello目录

5.4 其他命令

5.4.1 关机与重启

shutdown			# 1分钟后关机
shutdown -h 10 		# 10分钟后关机
shutdown -h now		# 立即关机
shutdown now		# 立即关机
shutdown -r now		# 立即重启
reboot				# 立即重启
halt				# 立即关机
sync				# 把内存中的数据同步到磁盘

5.4.2 查看当前目录

pwd

在这里插入图片描述

5.4.3 日期相关命令

1)日期命令
命令:date

  • 参数:
    • %F:年月日
    • %T:时分秒
    • %Y:获取年
    • %m:获取月
    • %d:获取日
    • %H:获取小时
    • %M:获取分钟
    • %S:获取秒
    • %s:1970年01月01日到现在的秒数
      在这里插入图片描述
      2)日历命令
      语法:
  • 参数:
    • -1 输出显示当前月(默认)
    • -3 输出显示前一个/当前/下一个月
    • -s 输出显示星期天作为一周的第一天(默认)
    • -m 输出显示星期一作为一周的第一天
    • -j 输出显示Julian日历(从一月1号计数为1起,每一天计数加1)
    • -y 显示当前日历

在这里插入图片描述
在这里插入图片描述

查询2021年3月份的日历:

cal 3 2021

查询2021年3月份的日历,并且以周一作为一周的第一天:

cal 3 2021 -m

在这里插入图片描述

5.4.4 查看帮助文档

当我们对某个指令不熟悉时,我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法。

man [命令]

man shutdown		# 查看shutdown命令的用法
man tar				# 查看tar命令的用法
man ls				# 查看ls命令的用法
同时也可以使用help进行帮助文档的查询:
cal --help 			# 查看cal命令的帮助文档

在这里插入图片描述

5.4.5 less命令

less命令与more命令类似,都是用于浏览文件的,不同的是使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动;而且 less 在查看之前不会加载整个文件。在浏览超大型文本文件时具有较高的效率;
语法:

less [参数] 文件
  • 参数:
    • -m:显示查看的进度百分比
    • -N:显示每行的行号
    • +/pattern:在文档中搜索字符串(pattern),并从这一行开始显示
    • -i:忽略搜索时的大小写
      示例:
less -article.txt
[输入参数]
  • 输入参数:
    • Q:退出less 命令
    • w:向上滚动半页
    • d:向下滚动半页
    • 上光标:向上滚动一行
    • 下光标:向下滚动一行
    • 空格键:向下滚动一页
    • 回车键:向下滚动一行
    • [pagedown]: 向下翻动一页
    • [pageup]: 向上翻动一页
    • G:跳到文件尾部
    • g:跳到文件头部
      示例2:
less -mNi +/user UserServlet.java

5.4.6 > 指令 和 >> 指令

和>>指令功能一致,不同的是>>的可以追加内容;>只是将命令的结果集写入到文件,并不会产生追加效果;

语法:

ll > info.txt		# 将ll命令的结果写入info.txt文件中

在这里插入图片描述

cat abc/a.java > test.java # 将abc/a.java里的内容写入info.txt文件中并查看

在这里插入图片描述

cal -y > cal.txt

在这里插入图片描述

六、用户管理

6.1 用户管理

Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
在Linux中,用户是属于某个组的,创建用户首先得让用户属于某个组

6.1.1 关于用户和组的相关命令

  • cat /etc/shadow:密码和登录信息(加密的)
  • cat /etc/group:查看组信息
    在这里插入图片描述
    解释:
root:x:0:

组名:x:组ID:

tips:x并无其他特殊含义

  • cat /etc/passwd:用户账户信息
    在这里插入图片描述

解释:

root:x:0:0:root:/root:/bin/bash
用户名:x:用户ID:组ID:该用户的组目录:命令解释程序

6.1.2 添加用户

语法:

useradd 参数 用户名
  • 参数:
    • -g:用户组,指定用户所属的用户组,如省略该参数,则会建立和新用户名同名的组。

示例1:创建zhangsan用户:

useradd zhangsan			# 创建zhangsan用户,默认创建同名组

进入/home目录查看:
在这里插入图片描述

示例2:创建lisi用户,属于zhangsan组

useradd lisi -g zhangsan

查看组:]

cat /etc/group

在这里插入图片描述
查看用户:

cat /etc/passwd

在这里插入图片描述

Tips:发现和zhangsan用户同属于1000组

6.1.3 分配密码

语法:

passwd 用户名

在这里插入图片描述

切换zhangsan用户登录:
logout/exit:退出当前用户
Tips:如果使用xshell连接工具会直接退出
修改xshell连接工具参数:

使用whoami可以查看当前登录的用户:
在这里插入图片描述

6.1.5 切换登录用户

  • 语法:
su 要切换的用户名
  • 示例:
su lisi

6.1.4 修改用户

语法:

usermod -l 新登录名 原登录名

示例:

usermod -l zs zhangsan

修改用户名时,必须当前用户处于退出登录状态,如果正在登录的用户则会出现如下信息:

usermod: user zhangsan is currently used by process 进程号

注意:修改了用户名之后,用户所属的组名以及家目录不变

6.1.5 删除用户

语法:

userdel	用户名

示例1:删除用户wangwu,保留家目录

useradd wangwu		# 创建wangwu账号,wangwu组,wangwu家目录

userdel wangwu		# 删除wangwu账号,wangwu组(家目录还在)

默认情况下,删除用户时,用户所在的同名的组也会被删除;所以查看/etc/group时,发现wagnwu组不见了,但wangwu的家目录还在,可以删除家目录:

rm -rf wangwu

Tips:一般来说,我们判断当前linux有多少用户直接查看home下的家目录,因此一般删除用户时,会顺带删除家目录;

示例2:删除用户lisi,以及家目录

Tisp:lisi是属于zhangsan组的,用户和组不同名,不会删除组

userdel -r lisi

在这里插入图片描述

查看用户信息:

cat /etc/passwd

发现lisi用户不见了
查看组信息:

cat /etc/group

发现zhangsan组还在
示例3:删除zs用户,以及家目录

userdel -r zs

Tips:即使家目录的名称不是叫zs也会被删除

查看组信息:

cat /etc/group

发现zhangsan组依旧存在;删除用户时(不管是否加上-r参数),只会删除同名的组,不同名的组不会被删除;

6.2 用户组操作

用户组简介:类似于角色,系统可以对有共性的多个用户进行统一的管理;

6.2.1 添加组

语法:

groupadd 组名

示例:

groupadd g1

查看组信息:

cat /etc/group

6.2.2 修改组

1)修改组名称
语法:

groupmod -n 新组名 组名

示例:

groupmod -n g2 g1

再次查看组信息:

cat /etc/group

2)移动用户到新组

useradd lisi		# 创建lisi用户,lisi组,lisi家目录

usermod lisi -g g2	# 将lisi移动到g1组

6.2.3 删除组

语法:

groupdel 组名

删除组的时候必须保证组中没有用户
示例:

groupdel zhangsan   # 删除zhangsan组(此时zhangsan组没有用户)

groupdel g2 		# 删除g2组(删除失败)

groupadd g1

usermod lisi -g g1	# 将lisi用户移动到g1组

groupdel g2			# 再次删除g2组

总结:

  • 1)创建用户的时候,如果没有指定该用户的所属的组,那么会创建一个同名组
  • 2)删除用户的时候,同名组也会被删除(前提是组里面没有其他用户了),并且删除组的时候要求组中不能有用户存在
  • 3)删除用户的时候加-r代表删除家目录(即使家目录和用户名不一样)

6.3 权限管理

6.3.1 权限介绍

Linux中对每个目录和文件都做了规定,只能由满足条件的用户才能操作;
查看文件的操作权限:
在这里插入图片描述
每个文件和文件夹的最前面都有类似于drwxr-xr-x这样的字母,这些字母的含有就代表具体的操作权限;
具体含义如下:
在这里插入图片描述

  • r:只读,权限等级为4
  • w:只写,权限等级为2
  • x:只执行,权限等级为1,对于文件夹来说就是能否进入该文件夹
  • -:不具备权限
    在这里插入图片描述
  • 主权限(u):当前用户的权限
  • 组权限(g):整个组的权限
  • 其他权限(o):其他用户的权限(除当前登录用户外)

6.3.2 分配权限

语法:

chmod [权限] [操作] [文件/目录]
  • 权限:
    • 文字设定法:
      • u:主权限
      • g:组权限
      • o:其他用户权限
      • a:同时设置u、g、o三者的权限
    • 数字设定法:
      • 1:执行权限(x)
      • 2:写权限(w)
      • 3:写权限+执行权限(w+x)
      • 4:读权限(r)
      • 5:读权限+执行权限(r+x)
      • 6:读权限+写权限(r+w)
      • 7:读权限+写权限+执行权限(r+w+x)
  • 操作
    • +:赋予某个权限
    • -:剔除某个权限
    • =:替换权限
      示例:
cd /						# 切换到根目录

vi aaa.txt					# 创建并编辑aaa.txt文件

在这里插入图片描述

权限为-rw-r–r–
1)文字设定法:

chmod u+x aaa.txt				# 增加主的执行权限(-rwxr--r--)	
chmod g-r aaa.txt				# 剔除组的读权限(-rwx---r--)	 
chmod o-r aaa.txt				# 剔除其他用户的读权限(-rwx------)
chmod u-x,g+r,o+r aaa.txt		# 剔除主的执行权限,增加组合其他用户的读权限(-rw-r--r--)
chmod u=rwx,g=rw,o=rw aaa.txt	# 主具有可读可写可执行权限,组和其他用户具有读写权限(-rwxrw-rw-)
chmod a-r aaa.txt				# 剔除u、g、o的读权限
chmod a+r,a-w aaa.txt			# 增加u、g、o的读权限,剔除u、g、o的写权限

2)数字设定法
语法:

chmod [参数1|参数2|参数3] 文件/目录

参数1:代表u(主用户)
参数2:代表g(组用户)
参数3:代表o(其他用户)
如果只设置参数1,那么代表的是o
如果只设置参数1和参数2,那么代表的是g、o

只设置o

chmod 0 aaa.txt			# ----------	
chmod 1 aaa.txt			# ---------x
chmod 2 aaa.txt			# --------w-
chmod 3 aaa.txt			# --------wx
chmod 4 aaa.txt			# -------r--


设置g、o

chmod 42 aaa.txt		# ----r---w-


设置u、g、o

chmod 660 aaa.txt		# -rw-rw----
chmod 744 aaa.txt		# -rwxr--r--
chmod 777 aaa.txt		# -rwxrwxrwx

3)修改文件的属主和组
语法:

chown [-R] 用户名 文件			# 修改文件所属的用户
chown [-R] .组名 文件		 	# 修改文件所属的组		
chown [-R] 用户名:组名 文件  		# 同时修改文件所属的用户和组

示例1:修改文件的所属主

创建一个用户(会创建同名组)
useradd zhangsan

创建一个文件
vi aaa.txt

 修改文件所属主
chown -R zhangsan aaa.txt			# 修改aaa.txt文件为zhangsan用户

在这里插入图片描述

示例2:修改文件的所属组:

chown -R .zhangsan aaa.txt

在这里插入图片描述

示例3:修改文件的所属主和所属组:

chown -R root:zhangsan aaa.txt

在这里插入图片描述

关于修改文件的所属组还有一个命令:

chgrp 组名 文件/目录
示例:将aaa.txt修改为root组:
chgrp root aaa.txt

在这里插入图片描述

6.3.3 权限操作
当权限分配好了之后,其他用户在操作文件/目录时就得具备对应的权限,否则不可操作;
查看aaa.txt文件的权限:

chmod 777 aaa.txt		# -rwxrwxrwx

创建zhangsan用户,并分配密码admin:
useradd zhangsan
passwd zhangsan

Tips:创建了一个zhangsan用户和一个zhangsan组
使用xshell新建zhangsan用户连接,进入/目录,查看aaa.txt

使用root账号修改权限:

chmod o-r aaa.txt

再次使用zhangsan用户查看aaa.txt,发现权限不足:

虽然读不了,但是还是可以编辑(写)的:

vi aaa.txt

编辑结束后输入:

:wq!  #保存并强制退出

6.3.4 权限优先级

如果u没有r权限,但是g有r权限,那么该文件到底可不可以读取呢?
答:u > g > o
1)测试g>o
准备环境:

删除其他所有的用户

useradd zhangsan			# 创建zhangsan用户,zhangsan组,zhangsan用户所属组是zhangsan组
useradd lisi -g zhangsan	# 创建lisi用户,lisi用户所属组是zhangsan组

passwd zhangsan				# 分配密码
passwd lisi					# 分配密码

chmod 004 aa.txt			# 只给o赋予r权限(-------r--)

chown -R lisi:zhangsan aa.txt		# 切换aa.txt所有者为lisi,并且所有组为zhangsan

测试1:登录zhangsan用户

cat aa.txt			# 权限不足 

zhangsan对于aa.txt来说是其他用户,我们看到o是具有r的权限的,按道理来说zhangsan应该是可以读取aa.txt文件的,那为什么读取不了呢?
答:虽然o是具备r权限的,但是由于zhangsan和lisi是一个组的,aa.txt的组权限没有r,因此读取不了aa.txt
建立新组g1,将zhangsan移动到g1组(此时才能体现o的权限),再次查看aa.txt文件,发现可以查看
groupadd g1 # 添加g1组

usermod zhangsan -g g1		# 将zhangsan用户移动到g1组

重新登录,刷新权限

cat aa.txt			# 发现可以查询

Tips:记得重新登录;

2)测试u>g
aa.txt的权限如下:

注意:lisi用户是在zhangsan组的

chmod g+r aa.txt			# 给g赋予r权限

登录lisi用户,查看aa.txt,发现权限不足

很奇怪,lisi不是属于zhangsan组的吗?zhangsan组不是对aa.txt有r权限吗?为什么lisi不能读取aa.txt文件呢?
答:虽然整个zhangsan组具有r权限,但是lisi用户并不具备r权限,换句话说lisi的-(什么都没有)权限比zhangsan组的r权限要大;
我们把u的权限设为r:

chmod u+r aa.txt

再次查看aa.txt,发现可以查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易拉罐е

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值