声明:以下资料全部摘自实验楼

常用快捷键

按键 作用
Table   补全命令
Ctrl+c 强制结束
Ctrl+d 键盘输入结束或退出终端
Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行
Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a 将光标移至输入行头,相当于Home
Ctrl+e 将光标移至输入行末,相当于End
Ctrl+k 删除从光标所在位置到行末
Alt+Backspace 向前删除一个单词
Shift+PgUp 将终端显示向上滚动
Shift+PgDn 将终端显示向下滚动

一、shell通配符

通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名、参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正字符。

字符 含义
* 匹配 0 或多个字符
? 匹配任意一个字符
[list] 匹配 list 中的任意单一字符
[^list] 匹配 除list 中的任意单一字符以外的字符
[c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]
{string1,string2,...} 匹配 string1 或 string2 (或更多)其一字符串
{c1..c2} 匹配 c1-c2 中全部字符 如{1..10}

实验:

使用 touch 命令创建 2 个文件,后缀都为 txt:

touch a.txt b.txt

可以给文件随意命名,假如过了很长时间,你已经忘了这两个文件的文件名,现在你想在一大堆文件中找到这两个文件,就可以使用通配符:

ls *.txt

ls ?.txt

  

在创建文件的时候,如果需要一次性创建多个文件,比如:1.txt,2.txt,... 10.txt。在 Linux 中十分方便:

touch {1..10}.txt

比如:“test-a.txt,test-b.txt,... test-z.txt” 

touch test-{a..z}.txt

删除也同理

使用通配符删除(rm -rf)要慎用哦

man man

二、用户管理

Linux 是一个可以实现多用户登录的操作系统,比如“李雷”和“韩梅梅”都可以同时登录同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件。但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理权限机制,不同用户不可以轻易地查看、修改彼此的文件。

伪终端查看

who am i

who mom likes

who -m

 

2.1、创建用户

su,su- 与 sudo

需要注意 Linux 环境下输入密码是不会显示的。

su <user> 可以切换到用户 user,执行时需要输入目标用户的密码。

sudo <cmd> 可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码。

su - <user> 命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。

实验:

现在我们新建一个叫 lilei 的用户:

这个命令不但可以添加用户到系统,同时也会默认为新用户创建 home 目录:

ls /home

现在你已经创建好一个用户,并且你可以使用你创建的用户登录了,使用如下命令切换登录用户:

 su -l lilei

输入刚刚设置的 lilei 的密码,然后输入如下命令并查看输出

who am i
whoami
pwd //查看当前所在目录

退出当前用户跟退出终端一样可以使用 exit 命令或者使用快捷键 Ctrl+d

2.2、用户组

查看自己属于哪些用户组

方法一:使用groups命令

groups shiyanlou

其中冒号之前表示用户,后面表示该用户所属的用户组。这里可以看到 shiyanlou 用户属于 shiyanlou 用户组,每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组(差不多就相当于家长的意思,或者说是老总)。默认情况下在 sudo 用户组里的可以使用 sudo 命令获得 root 权限。shiyanlou 用户也可以使用 sudo 命令,为什么这里没有显示在 sudo 用户组里呢?可以查看下 /etc/sudoers.d/shiyanlou 文件,我们在 /etc/sudoers.d 目录下创建了这个文件,从而给 shiyanlou 用户赋予了 sudo 权限:

 方法二:查看 /etc/group 文件

cat /etc/group | sort

这里 cat 命令用于读取指定文件的内容并打印到终端输出,后面会详细讲它的使用。 | sort 表示将读取的文本进行一个字典排序再输出,然后你将看到如下一堆输出,你可以在下面看到 shiyanlou 的用户组信息:

没找到,没关系,你可以使用命令过滤掉一些你不想看到的结果:

cat /etc/group | grep -E "shiyanlou"

/etc/group 文件格式说明

/etc/group 的内容包括用户组(Group)、用户组口令、GID 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:

group_name:password:GID:user_list

你看到上面的 password 字段为一个 x 并不是说密码就是它,只是表示密码不可见而已

将其它用户加入 sudo 用户组

默认情况下新创建的用户是不具有 root 权限的,也不在 sudo 用户组,可以让其加入 sudo 用户组从而获取 root 权限:

# 注意 Linux 上输入密码是不会显示的
$ su -l lilei
$ sudo ls

会提示 lilei 不在 sudoers 文件中,意思就是 lilei 不在 sudo 用户组中,至于 sudoers 文件(/etc/sudoers)你现在最好不要动它,操作不慎会导致比较麻烦的后果。

使用 usermod 命令可以为用户添加用户组,同样使用该命令你必需有 root 权限,你可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。

这里我用 shiyanlou 用户执行 sudo 命令将 lilei 添加到 sudo 用户组,让它也可以使用 sudo 命令获得 root 权限:

$ su shiyanlou # 此处需要输入 shiyanlou 用户密码,shiyanlou 的密码可以通过 `sudo passwd shiyanlou` 进行设置。
$ groups lilei
$ sudo usermod -G sudo lilei
$ groups lilei

然后你再切换回 lilei 用户,现在就可以使用 sudo 获取 root 权限了。

删除用户

sudo deluser lilei --remove-home

 三、文件权限

文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。

Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。

在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。

3.1、查看文件权限

ls -l #使用较长格式列出文件

你可能除了知道最后面那一项是文件名之外,其它项就不太清楚了,那么到底是什么意思呢:

可能你还是不太明白,比如第一项文件类型和权限那一堆东西具体指什么,链接又是什么,何为最后修改时间,下面一一道来:

  • 文件类型

关于文件类型,这里有一点你必需时刻牢记 Linux 里面一切皆文件,正因为这一点才有了设备文件( /dev 目录下有各种设备文件,大都跟具体的硬件设备相关)这一说。 socket:网络套接字,具体是什么,感兴趣的用户可以自己去了解或期待实验楼的后续相关课程。pipe 管道,这个东西很重要,我们以后将会讨论到,这里你先知道有它的存在即可。软链接文件:链接文件是分为两种的,另一种当然是“硬链接”(硬链接不常用,具体内容不作为本课程讨论重点,而软链接等同于 Windows 上的快捷方式,你记住这一点就够了)。

  • 文件权限

读权限,表示你可以使用 cat <file name> 之类的命令来读取某个文件的内容;写权限,表示你可以编辑和修改某个文件; 执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 Windows 上的 exe 后缀的文件,不过 Linux 上不是通过文件后缀名来区分文件的类型。你需要注意的一点是,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。

所有者权限,这一点相信你应该明白了,至于所属用户组权限,是指你所在的用户组中的所有其它用户对于该文件的权限,比如,你有一个 iPad,那么这个用户组权限就决定了你的兄弟姐妹有没有权限使用它破坏它和占有它。

  • 链接数

链接到该文件所在的 inode 结点的文件名数目(关于这个概念涉及到 Linux 文件系统的相关概念知识,不在本课程的讨论范围,感兴趣的用户可以自己去了解)。

  • 文件大小

以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上 -lh 参数来更直观的查看文件的大小。

明白了文件权限的一些概念,我们顺带补充一下关于 ls 命令的一些其它常用的用法:

  • 显示除了 .(当前目录)和 ..(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以 . 开头的文件为隐藏文件)。
ls -A

当然,你可以同时使用 -A-l 参数:

ls -Al

查看某一个目录的完整属性,而不是显示目录里面的文件属性:

ls -dl <目录名>
  • 显示所有文件大小,并以普通人类能看懂的方式呈现:
ls -AsSh  # 小 s 为显示文件大小,大 S 为按文件大小排序,若需要知道如何按其它方式排序,请使用“man”命令查询。

3.2、变更文件所有者

若前面已经执行删除lilei用户的命令,这里重新创建一下。

假设目前是 lilei 用户登录,新建一个文件,命名为 “ iphone6 ”:

# 注意当前的用户必须是 lilei
# 如果是 shiyanlou 用户需要切换到 lilei(如果之前已经删除需要重新创建下)
su lilei
cd /home/lilei
touch iphone6

可见文件所有者是 lilei :

现在,换回到 shiyanlou 用户身份,使用以下命令变更文件所有者为 shiyanlou :

# 需要切换到 shiyanlou 用户执行以下操作(sudo shiyanlou)
cd /home/lilei
ls iphone6
sudo chown shiyanlou iphone6

现在查看,发现 文件所有者成功修改为 shiyanlou :

3.3、修改文件权限

方法一、二进制数字表示

chmod 777 iphone6

方法二、加减赋值操作

gou 分别表示 group、others 和 user,+- 分别表示增加和去掉相应的权限。

chmod go-rw iphone6

3.4、更多

adduseruseradd 的区别是什么?

答:useradd 只创建用户,创建完了用 passwd lilei 去设置新用户的密码。

adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。

其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。

而 adduser 更像是一种程序,需要你输入、确定等一系列操作。

Linux 还有一些关于隐藏权限和特殊权限的内容,想全面了解 Linux 权限管理这部分内容的用户可以通过其它方式学习。

3.5、作业

添加一个用户 loutest,使用 sudo 创建文件 /opt/forloutest,设置成用户 loutest 可以读写。截图并把操作过程写入实验报告。

提示: 如何创建一个文件呢?可以考虑 touch 命令,执行 sudo touch /opt/forloutest 这个命令可以创建一个空文件,但前提是执行这个命令的 loutest 用户具备 sudo 权限。

liunx命令二的更多相关文章

  1. liunx命令之whereis、which、find的区别和联系

    liunx命令之whereis.which.find的区别和联系

  2. 50条常用liunx命令整理

    1.pwd命令 :确定自己在那个目录 使用方法:在liunx命令输入框里面输入pwd,自动就会显示出自己现在在那个目录下 操作截图: 此时正处在root目录里面 2.cd命令:切换目录的意思 使用方法 ...

  3. 运维 04 Shell基础命令(二)

    Shell基础命令(二)   查看Linux的发行版 cat /etc/redhat-release cat /etc/os-release 查看系统用户的id信息 id 用户名 id root id ...

  4. linux基础之进阶命令二

    本节内容 基础命令二: 1.      alias:查看和设置别名(alias:别名) alias 'ren=ls -ld' \ren 可不取消别名,执行ren原本的命令 2.      unalia ...

  5. Liunx - 命令整理

    ## Liunx 常用命令 ## ## 注意,在Linux中,文件没有创建时间. 1. ls : 查看当前文件夹下的所有文件 2. mkdir -- 创建一个新的文件夹 - mkdir 参数 文件名 ...

  6. ,2,liunx命令格式

    一.命令基本格式 ~用户的初始登录位置   /root  这个叫root用户的家目录,每个用户都有自己的家 超级用户的家是根目录,普通用户的家是home下的二级目录   :/home/uer1 pwd ...

  7. liunx命令3

    liunx系统目录结构 / /home /root /dev /usr /etc/ /boot /lib /var /tmp /proc /bin /sbin / 通常称为根分区,所有的文件和目录的起 ...

  8. liunx命令1

    单词整理 terminal:终端 network-scripts:网络脚本 passwd:密码文件 nologin:禁止登陆 shutdown:关机 reboot:重启 poweroff:关机 gre ...

  9. linux(三)之linux常用命令二

    今天就是星期五了,又可以休息两天了.有点小激动,开心.不过还是要加油,因为还有很多东西等着我去学习呢! 七.chmod 作用:修改文件的权限 7.1.命令格式:chmod mode filename ...

随机推荐

  1. 2V升3V芯片,输入2V输出3V可达1A

    PW5328B是一个恒定频率, 6引脚 SOT23电流模式升压转换器,用于小型低功耗应用. PW5328B的开关频率为 1.2MHz,允许使用微小的.低成本的电容器和电感器.内部软启动导致小涌流和延长 ...

  2. ABP vNext 实现租户Id自动赋值插入

    背景 在使用ABP vNext过程中,因为我们的用户体系庞大,所以一直与其他业务同时开发,在开发其他业务模块时,我们一直存在着误区:认为ABP vNext 自动处理了数据新增时的租户Id(Tenant ...

  3. Linux系统使用lvm扩展根分区

    Linux系统使用lvm扩展根分区 背景:买的云主机虚拟机封装镜像是40G的系统盘,后期适用不规范或者其他需求需要扩展系统盘,而非挂载在一个盘至新建目录. 1.原本目录磁盘等信息: 2.使用vgdis ...

  4. Vue3 源码之 reactivity

    注: 为了直观的看到 Vue3 的实现逻辑, 本文移除了边缘情况处理.兼容处理.DEV环境的特殊逻辑等, 只保留了核心逻辑 vue-next/reactivity 实现了 Vue3 的响应性, rea ...

  5. 第一个 Maven 应用程序

    概述 使用 Maven 创建一个 Java Web 应用程序 创建 Maven 项目 选择 File -> New -> Project... 选择 Maven 项目 填写项目信息 选择工 ...

  6. Go 和 Syscall

    曹春晖:谈一谈 Go 和 Syscall https://juejin.im/post/6844903845475139597

  7. 【网络安全】IOC概念浅析

    OpenIOC(Open Indicator of Compromise,开放威胁指标) MANDIANT 公司发布的情报共享规范,是开源.灵活的框架.OpenIOC是一个记录.定义以及共享威胁情报的 ...

  8. 用RabbitMQ了好几年之后,我总结出来5点RabbitMQ的使用心得

    大概从 2013 年开始,我就开始了自己和 RabbitMQ 的接触,到现在已经有七年多了. 在这七年中,既有一些对 RabbitMQ 的深度体验,更有无数的血泪史. 而根据我这么多年的使用经验,我将 ...

  9. MySql命令,吐血整理的Mysql,实话,真的吐血

    MySql命令,吐血整理的Mysql,实话,真的吐血 1.基本操作 2.数据库操作 3.表的操作 4.数据操作 5.字符集编码 6.数据类型(列类型) 7.列属性(列约束) 8.建表规范 9.SELE ...

  10. Spring Security原理分析:系列集合

    Spring Security 工作原理概览:https://blog.csdn.net/u012702547/article/details/89629415 spring security执行原理 ...