当前位置: 首页 > article >正文

Linux--基本指令4(完结)和权限

今天我们来讲解linux剩下的几个常见指令和权限

which命令

功能:搜索系统指定的命令

举例:

[whb@bite-alicloud test]$ which ls
alias ls='ls --color=auto'
        /usr/bin/ls
[whb@bite-alicloud test]$ which pwd
/usr/bin/pwd

whereis 指令

功能:⽤于找到程序的源、⼆进制⽂件或⼿册

举例:

[whb@bite-alicloud test]$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[whb@bite-alicloud test]$ whereis libc.so
libc: /usr/lib64/libc.so /usr/lib64/libc.a /usr/share/man/man7/libc.7.gz

指令就是一个可执行程序,就是文件!!!

指令、可执行程序、命令是一回事。

alias指令

别名,内存级的存储,关机重启后不显示原有别名

alias给指定命令起别名 ll 就是 ls -l

功能:设置命令的别名

举例:

[whb@bite-alicloud test]$ alias hello='ls -a -l -n'
[whb@bite-alicloud test]$ which hello
alias hello='ls -a -l -n'
/usr/bin/ls
[whb@bite-alicloud test]$ hello
total 36
drwxrwxr-x  2 1003 1003  4096 Jan 11 17:59 .
drwx------ 22 1003 1003  4096 Jan 11 17:57 ..
-rw-rw-r--  1 1003 1003 28667 Jan 11 18:29 temp.txt

grep命令

语法: grep [ 选项 ]  搜寻字符串  ⽂件

功能:在⽂件中搜索字符串,将找到的⾏打印出来 常⽤选项:

  • -i:忽略⼤⼩写的不同,所以⼤⼩写视为相同
  • -n:顺便输出⾏号
  • -v:反向选择,亦即显⽰出没有'搜寻字符串'内容的那⼀⾏

举例:

#文件内容
[whb@bite-alicloud test]$ cat temp.txt 
abcd
ABCD
hello
bite
1234
#基本查找
 
[whb@bite-alicloud test]$ grep "abcd" temp.txt 
abcd

# 忽略⼤⼩写的不同,所以⼤⼩写视为相同 
[whb@bite-alicloud test]$ grep -i "abcd" temp.txt
abcd
ABCD

# 顺便输出⾏号
[whb@bite-alicloud test]$ grep -n "abcd" temp.txt
1:abcd
[whb@bite-alicloud test]$ grep -ni "abcd" temp.txt
1:abcd
2:ABCD

# 反向选择,亦即显⽰出没有'搜寻字符串' 内容的那⼀⾏
[whb@bite-alicloud test]$ grep -v "abcd" temp.txt
 ABCD
 hello
 bite
 1234
 [whb@bite-alicloud test]$ grep -vn "abcd" temp.txt
 2:ABCD
 3:hello
 4:bite
 5:1234
 [whb@bite-alicloud test]$ grep -vni "abcd" temp.txt
 3:hello
 4:bite
 5:1234

zip/unzip 指令

语法: zip  压缩⽂件.zip  ⽬录或⽂件

功能:将⽬录或⽂件压缩成zip格式

常⽤选项

  • -r:递归处理,将指定⽬录下的所有⽂件和⼦⽬录⼀并处理

举例:

将test2⽬录压缩: zip  test2.zip  test2/*

解压到tmp⽬录: unzip  test2.zip  -d  /tmp

tar命令

打包/解包,不打开它,直接看内容

语法: tar [ -c x t z j v f ]  ⽂件与⽬录 ....

参数:

  • -c:建⽴⼀个压缩⽂件的参数指令(create的意思);
  • -x:解开⼀个压缩⽂件的参数指令!
  • -t:查看tarfile⾥⾯的⽂件!
  • -z:是否同时具有gzip的属性?亦即是否需要⽤gzip压缩?
  • -j:是否同时具有bzip2的属性?亦即是否需要⽤bzip2压缩?
  • -v:压缩的过程中显⽰⽂件!这个常⽤,但不建议⽤在背景执⾏过程!
  • -f:使⽤档名,请留意,在f之后要⽴即接档名喔!不要再加参数!
  • -C:解压到指定⽬录

案例:

范例⼀:将整个/etc⽬录下的⽂件全部打包成为`/tmp/etc.tar`

[root@linux ~]$ tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
[root@linux ~]$ tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以gzip 压缩
[root@linux ~]$ tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以bzip2 压缩

特别注意,在参数f之后的⽂件档名是⾃⼰取的,我们习惯上都⽤.tar来作为辨识。

如果加 z 参数,则以 . tar . gz 或 .tgz 来代表 gzip 压缩过的 tar file~

如果加 j 参数,则以.tar.bz2 来作为附档名啊~

上述指令在执⾏的时候,会显⽰⼀个警告讯息:

『`tar: Removingleading`/"frommembernames`』那是关於绝对路径的特殊设定。

范例⼆:查阅上述/tmp/etc.tar.gz⽂件内有哪些⽂件?


 [root@linux ~]$ tar -ztvf /tmp/etc.tar.gz

由於我们使⽤gzip压缩,所以要查阅该tarfile内的⽂件时,就得要加上z这个参数了!这很重要的!

范例三:将/tmp/etc.tar.gz⽂件解压缩在/usr/local/src底下

[root@linux ~]$ cd /usr/local/src
[root@linux src]$ tar -zxvf /tmp/etc.tar.gz

在预设的情况下,我们可以将压缩档在任何地⽅解开的!以这个范例来说,我先将⼯作⽬录变换到 /usr/local/src 底下,并且解开/tmp/etc.tar.gz,则解开的⽬录会在/usr/local/src/etc呢!另外,如果您进⼊/usr/local/src/etc

则会发现,该⽬录下的⽂件属性与/etc/可能会有所不同喔!

范例四:在/tmp底下,我只想要将/tmp/etc.tar.gz内的etc/passwd解开⽽已

 [root@linux ~]$ cd /tmp
 [root@linux tmp]$ tar -zxvf /tmp/etc.tar.gz etc/passwd

我可以透过tar-ztvf来查阅tarfile内的⽂件名称,如果单只要⼀个⽂件,就可以透过这个⽅式来下 达!注意到!etc.tar.gz内的根⽬录/是被拿掉了!

范例五:将/etc/内的所有⽂件备份下来,并且保存其权限!

 [root@linux ~]$ tar -zxvpf /tmp/etc.tar.gz /etc
 # 这个 -p 的属性是很重要的,尤其是当您要保留原本⽂件的属性时!

范例六:在/home当中,⽐2005/06/01新的⽂件才备份

[root@linux ~]$ tar -N "2005/06/01" -zcvf home.tar.gz /home

范例七:我要备份/home,/etc,但不要/home/dmtsai

[root@linux ~]$ tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

范例⼋:将/etc/打包后直接解开在/tmp底下,⽽不产⽣⽂件!

[root@linux ~]$ cd /tmp
[root@linux tmp]$ tar -cvf - /etc | tar -xvf -

这个动作有点像是 cp-r / etc / tmp 啦〜依旧是有其有⽤途的!

要注意的地⽅在於输出档变成 - ⽽输⼊档也变成 - ,⼜有⼀个|存在

这分别代表standardoutput,standardinput与管线命令啦!

演⽰如何在Linux和Linux之间互传压缩包

bc指令

bc命令可以很⽅便的进⾏浮点运算

uname‒r指令

语法:uname [选项]

功能:uname⽤来获取电脑和操作系统的相关信息。

补充说明:uname可显⽰linux主机所⽤的操作系统的版本、硬件的名称等基本信息。

常⽤选项: 

  • -a或‒all详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理 器类型,硬件平台类型,操作系统名称

重要的⼏个热键[Tab],[ctrl]-c,[ctrl]-d

  • [Tab]按键---具有『命令补全』和『档案补⻬』的功能
  •  [Ctrl]-c按键---让当前的程序『停掉』
  • [Ctrl]-d按键---通常代表着:『键盘输⼊结束(EndOfFile,EOF戒EndOfInput)』的意思;另外, 他也可以⽤来取代exit

体系结构

x86 ---32位

x86_64  64位 x64

关机

语法:shutdown[选项]

常⻅选项

  • -h:将系统的服务停掉后,⽴即关机。
  • -r:在将系统的服务停掉之后就重新启动
  • -tsec:-t后⾯加秒数,亦即『过⼏秒后关机』的意思

云服务器,永远不关机

以下命令作为扩展

  • 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、 exit、last;
  • ⽂件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
  • 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
  • ⽹络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、 mail、nslookup;
  • 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudops、 who;
  • 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。

shell命令以及运⾏原理

Linux严格意义上说的是⼀个操作系统,我们称之为“核⼼(kernel)“,但我们⼀般⽤⼾,不能直接 使⽤kernel。⽽是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?

为 什么不能直接使⽤kernel?

从技术⻆度,Shell的最简单定义:命令⾏解释器(commandInterpreter)主要包含:

  • 将使⽤者的命令翻译给核⼼(kernel)处理。
  • 同时,将核⼼的处理结果翻译给使⽤者。

对⽐windowsGUI,我们操作windows不是直接操作windows内核,⽽是通过图形接⼝,点击,从 ⽽完成我们的操作(⽐如进⼊D盘的操作,我们通常是双击D盘盘符.或者运⾏起来⼀个应⽤程序)。

shell 对于Linux,有相同的作⽤,主要是对我们的指令进⾏解析,解析指令给Linux内核。反馈结果在 通过内核运⾏出结果,通过shell解析给⽤⼾。

  • 帮助理解:如果说你是⼀个害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头 漂亮的且有让你⼼动的MM⼩花。你看上了⼩花,但是有不好意思直接表⽩,那就让你你家⼈找 媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给⼩花,⽽我们找到媒婆 姓王,所以我们叫它王婆,它对应我们常使⽤的bash。

Linux权限的概念

Linux下有两种⽤⼾:超级⽤⼾(root)、普通⽤⼾。

  • 超级⽤⼾:可以再linux系统下做任何事情,不受限制
  • 普通⽤⼾:在linux下做有限的事情。
  • 超级⽤⼾的命令提⽰符是“#”,普通⽤⼾的命令提⽰符是“$”。

命令:su [⽤⼾名]

功能:切换⽤⼾。

例如,要从root⽤⼾切换到普通⽤⼾user,则使⽤suuser。 要从普通⽤⼾user切换到root⽤⼾则使⽤suroot(root可以省略),此时系统会提⽰输⼊root⽤⼾的 ⼝令。

Linux权限管理

1. ⽂件访问者的分类(⼈)

  • ⽂件和⽂件⽬录的所有者:u---User(中国平⺠法律问题)
  • ⽂件和⽂件⽬录的所有者所在的组的⽤⼾:g---Group(不多说)
  • 其它⽤⼾:o---Others(外国⼈)

2. ⽂件类型和访问权限(事物属性)

  • ⽂件类型:
  1.   d:⽂件夹
  2.   -:普通⽂件
  3.   l:软链接(类似Windows的快捷⽅式)
  4.   b:块设备⽂件(例如硬盘、光驱等)
  5.   p:管道⽂件 ◦ c:字符设备⽂件(例如屏幕等串⼝设备)
  6.   s:套接⼝⽂件
  • 基本权限: 
  1. 读(r/4):Read对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息 的权限 
  2. 写(w/2):Write对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除移动⽬录内 ⽂件的权限 
  3. 执⾏(x/1):execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权 限 ◦ “—”表⽰不具有该项权限

⽂件权限值的表⽰⽅法

  •  字符表⽰⽅法
  •  8进制数值表⽰⽅法

⽂件访问权限的相关设置⽅法

1. chmod

功能:设置⽂件的访问权限

格式:chmod[参数]权限⽂件名

常⽤选项

  • R->递归修改⽬录⽂件的权限
  • 说明:只有⽂件的拥有者和root才可以改变⽂件的权限

chmod命令权限值的格式:

  • ⽤⼾表⽰符+/-=权限字符 
  1. +:向权限范围增加权限代号所表⽰的权限 
  2. -:向权限范围取消权限代号所表⽰的权限 
  3. =:向权限范围赋予权限代号所表⽰的权限 ◦ ⽤⼾符号: 
  4. u:拥有者 
  5. g:拥有者同组⽤ 
  6. o:其它⽤⼾ 
  7. a:所有⽤⼾ 

        实例:

        ▪ chmod u+w /home/abc.txt

        ▪ c hmod o-x /home/abc.txt

        ▪ c hmod a=x /home/abc.txt

  •  三位8进制数字

        实例:

        ▪c hmod 664 /home/abc.txt

        ▪ c hmod 640 /home/abc.txt

2. chown

功能:修改⽂件的拥有者

格式:chown[参数] ⽤⼾名 ⽂件名 

实例:

• chown user1 f1

• c hown -R user1 filegroup1

3. chgrp

功能:修改⽂件或⽬录的所属组

格式:chgrp[参数]⽤⼾组名⽂件名

常⽤选项:

-R递归修改⽂件或⽬录的所属组

实例: chgrp users /abc/f2

4. umask

功能:

  • 查看或修改⽂件掩码
  • 新建⽂件夹默认权限=0666
  • 新建⽬录默认权限=0777
  • 但实际上你所创建的⽂件和⽬录,看到的权限往往不是上⾯这个值。原因就是创建⽂件或⽬录的 时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的⽂件权限是:mask& ~umask

格式:umask权限值

说明:将现有的存取权限减去权限掩码后,即可产⽣建⽴⽂件时预设权限。超级⽤⼾默认掩码值为 0022,普通⽤⼾默认为0002。

实例

• umask 755

• u mask // 查看

• u mask 044// 设置

file 指令

功能说明:辨识⽂件类型。

语法: file [ 选项 ] ⽂件或⽬录 ...

常⽤选项

  • -c:详细显⽰指令执⾏过程,便于排错或分析程序执⾏的情形。
  • -z:尝试去解读压缩⽂件的内容。

使⽤sudo分配权限

(1)修改/etc/sudoers⽂件分配⽂件

 # chmod 740 /etc/sudoers
 # vi /etc/sudoer

格式:接受权限的⽤⼾登陆的主机=(执⾏命令的⽤⼾)命令

(2)使⽤sudo调⽤授权的命令

$ sudo –u ⽤⼾名 命令

实例:

$ sudo -u root /usr/sbin/useradd u2

目录的权限

  •  可执⾏权限:如果⽬录没有可执⾏权限,则⽆法cd到⽬录中.
  •  可读权限:如果⽬录没有可读权限,则⽆法⽤ls等命令查看⽬录中的⽂件内容.
  •  可写权限:如果⽬录没有可写权限,则⽆法在⽬录中创建⽂件,也⽆法在⽬录中删除⽂件.

于是,问题来了~~换句话来讲,就是只要⽤⼾具有⽬录的写权限,⽤⼾就可以删除⽬录中的⽂件,⽽不论 这个⽤⼾是否有这个⽂件的写权限. 这好像不太科学啊,我张三创建的⼀个⽂件,凭什么被你李四可以删掉?我们⽤下⾯的过程印证⼀下.

[root@localhost ~]$ chmod 0777 /home/
[root@localhost ~]$ ls /home/ -ld  
drwxrwxrwx. 3 root root 4096 9⽉ 19 15:58 /home/
[root@localhost ~]$ touch /home/root.c
[root@localhost ~]$ ls -l /home/
总⽤量4
-rw-r--r--.  1 root  root     0 9⽉19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9⽉ 19 15:53 litao
-rw-r--r--.  1 root  root     0 9⽉19 15:59 root.c

[root@localhost ~]$ su - litao
[litao@localhost ~]$ rm /home/root.c  #litao可以删除root创建的⽂件
 
rm:是否删除有写保护的普通空⽂件 "/home/root.c"?y
[litao@localhost ~]$ exit 
logout

为了解决这个不科学的问题,Linux引⼊了粘滞位的概念.

关于权限的总结

  •  ⽬录的可执⾏权限是表⽰你可否在⽬录下执⾏命令。
  •  如果⽬录没有-x权限,则⽆法对⽬录执⾏任何命令,甚⾄⽆法cd进⼊⽬,即使⽬录仍然有-r读 权限(这个地⽅很容易犯错,认为有读权限就可以进⼊⽬录读取⽬录下的⽂件)
  •  ⽽如果⽬录具有-x权限,但没有-r权限,则⽤⼾可以执⾏命令,可以cd进⼊⽬录。但由于没有 ⽬录的读权限
  •  所以在⽬录下,即使可以执⾏ls命令,但仍然没有权限读出⽬录下的⽂档。

粘滞位[选学]

[root@localhost ~]$ chmod +t /home/  # 加上粘滞位 
[root@localhost ~]$ ls -ld /home/
drwxrwxrwt. 3 root root 4096 9⽉19 16:00 /home/
[root@localhost ~]$ su - litao
[litao@localhost ~]$ rm /home/abc.c  #litao不能删除别⼈的⽂件 
rm:是否删除有写保护的普通空⽂件 "/home/abc.c"?y
rm: ⽆法删除"/home/abc.c": 不允许的操作

当⼀个⽬录被设置为"粘滞位"(⽤chmod+t),则该⽬录下的⽂件只能由

  • 1. 超级管理员删除
  • 2. 该⽬录的所有者删除
  • 3. 该⽂件的所有者删除

少年没有乌托邦,心向远方自明朗!

如果这个博客对你有帮助,给博主一个免费的点赞就是最大的帮助
欢迎各位点赞,收藏关注
如果有疑问或有不同见解,欢迎在评论区留言
后续会继续更新大连理工大学相关课程和有关Linux的内容和示例
点赞加关注,学习不迷路,好,本次的学习就到这里啦!!!

我们下次再见!


http://www.kler.cn/a/573141.html

相关文章:

  • 基于Windows11的DockerDesktop安装和布署方法简介
  • C# Unity 面向对象补全计划 之 索引器与迭代器
  • Go语言select的高级玩法
  • Vue的简单入门 三
  • OCPP扩展机制与自定义功能开发:协议灵活性设计与实践 - 慧知开源充电桩平台
  • 确定信号分析:从傅里叶级数到信号带宽的Matlab实践
  • Zookeeper 的 Node(Znode) 是什么?Zookeeper 监听机制的特点是什么?
  • Mybatis控制台打印SQL执行信息(执行方法、执行SQL、执行时间)
  • ShareExpert SparseMoE的学习
  • Sass 模块化革命:深入解析 @use 语法,打造高效 CSS 架构
  • 如何在 WebSocketHandler 中控制连接的断开
  • 016.3月夏令营:数理类
  • js 之 lodash函数库 的下载与基础使用
  • 深圳区域、人口、地铁线
  • Amorphous Data如何在DigitalOcean上构建智能、经济的AI Agent
  • Matlab实现车牌识别
  • 【AI神经网络与人脑神经系统的关联及借鉴分析】
  • 数据结构(四)栈和队列
  • python代码注释方式
  • (数据结构)双向链表