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. ⽂件类型和访问权限(事物属性)
- ⽂件类型:
- d:⽂件夹
- -:普通⽂件
- l:软链接(类似Windows的快捷⽅式)
- b:块设备⽂件(例如硬盘、光驱等)
- p:管道⽂件 ◦ c:字符设备⽂件(例如屏幕等串⼝设备)
- s:套接⼝⽂件
- 基本权限:
- 读(r/4):Read对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息 的权限
- 写(w/2):Write对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除移动⽬录内 ⽂件的权限
- 执⾏(x/1):execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权 限 ◦ “—”表⽰不具有该项权限
⽂件权限值的表⽰⽅法
- 字符表⽰⽅法
- 8进制数值表⽰⽅法
⽂件访问权限的相关设置⽅法
1. chmod
功能:设置⽂件的访问权限
格式:chmod[参数]权限⽂件名
常⽤选项:
- R->递归修改⽬录⽂件的权限
- 说明:只有⽂件的拥有者和root才可以改变⽂件的权限
chmod命令权限值的格式:
- ⽤⼾表⽰符+/-=权限字符
- +:向权限范围增加权限代号所表⽰的权限
- -:向权限范围取消权限代号所表⽰的权限
- =:向权限范围赋予权限代号所表⽰的权限 ◦ ⽤⼾符号:
- u:拥有者
- g:拥有者同组⽤
- o:其它⽤⼾
- 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的内容和示例
点赞加关注,学习不迷路,好,本次的学习就到这里啦!!!
我们下次再见!