记录一下学习 Linux 以及动手实验的内容。

图片来源:实验楼

1. Linux 简介(略过)

2. Linux 基本概念及操作:命令、快捷键与通配符

2.1 基础命令

ls, pwd, cd, cat, touch等

2.2 终端快捷键

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

2.3 通配符

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

假设当前目录底下有asd.txtfgh.txt两个文件:

ls *.txt

输出:

asd.txt fgh.txt
ls as?.txt

输出:

asd.txt

一次性创建多个类似文件:

touch file_{1..10}.txt

Shell 常用通配符

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

2.4 帮助命令

在Linux环境中,如果你遇到困难,可以使用man命令,它是Manua1pages的缩写。

Manual pages是UNIX或类UNIX操作系统中在线软件文档的一种普遍的形式,内容包括计算机程序(包括库和系统调用)、正式的标准和惯例,甚至是抽象的概念。用户可以通过执行man命令调用手册页。

你可以使用如下方式来获得某个命令的说明和使用方式的详细介绍:

man <command_name>

比如你想查看 man 命令本身的使用方式,你可以输入:

man man

通常情况下,man 手册里面的内容都是英文的,这就要求你有一定的英文基础。man 手册的内容很多,涉及了 Linux 使用过程中的方方面面。为了便于查找,man 手册被进行了分册(分区段)处理,在 > Research UNIX、BSD、OS X 和 Linux 中,手册通常被分为8个区段,安排如下:

区段 说明
1 一般命令
2 系统调用
3 库函数,涵盖了C标准库
4 特殊文件(通常是/dev中的设备)和驱动程序
5 文件格式和约定
6 游戏和屏保
7 杂项
8 系统管理命令和守护进程

要查看相应区段的内容,就在 man 后面加上相应区段的数字即可,如:

man 1 ls

想要获得更详细的帮助,你还可以使用info命令,不过通常使用man就足够了。如果你知道某个命令的作用,只是想快速查看一些它的某个具体参数的作用,那么你可以使用--help参数,大部分命令都会带> 有这个参数,如:

ls --help

3. 用户及文件权限管理

  1. 实验内容

    1. Linux 中创建、删除用户,及用户组操作
    2. Linux 中的文件权限设置
  2. 实验知识点
    1. Linux 用户管理
    2. Linux 权限管理

3.1 Linux 用户管理

3.1.1 查看用户

打开终端,输入:

who am i

输出的第一列表示打开当前伪终端的用户的用户名(要查看当前登录用户的用户名,去掉空格直接使用 whoami 即可),第二列的 pts/0 中 pts 表示伪终端,所谓伪是相对于 /dev/tty 设备而言的,伪终端就是当你在图形用户界面使用 /dev/tty7 时每打开一个终端就会产生一个伪终端, pts/0 后面那个数字就表示打开的伪终端序号,你可以尝试再打开一个终端,然后在里面输入 who am i ,看第二列是不是就变成 pts/1 了,第三列则表示当前伪终端的启动时间。

who命令及其他参数:

|参数|说明|

|-a|打印能打印的全部|

|-d|打印死掉的进程|

|-m|同am i,mom likes|

|-q|打印当前用户数及用户名|

|-u|打印当前登录用户登录信息|

|-r|打印运行等级|

3.1.2 创建用户

新建一个叫 lilei 的用户:

sudo adduser lilei

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

ls /home

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

su -l lilei

3.1.3 用户组

在 Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,就跟家的形式差不多,你的兄弟姐妹(不同的用户)属于同一个家(用户组),你们可以共同拥有这个家(共享资源),爸妈对待你们都一样(共享权限),你偶尔写写日记,其他人未经允许不能查看(私有资源和权限)。当然一个用户是可以属于多个用户组的,正如你既属于家庭,又属于学校或公司。

在 Linux 中如何查看一个用户属于哪些用户组呢?

方法一:使用groups命令:

lilei

输出:

lilei : lilei

其中冒号之前表示用户,后面表示该用户所属的用户组。这里可以看到 shiyanlou 用户属于 shiyanlou 用户组,每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组(差不多就相当于家长的意思)。

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

cat /etc/group | sort

这里 cat 命令用于读取指定文件的内容并打印到终端输出。 | sort 表示将读取的文本进行一个字典排序再输出。

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

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

将其他用户加到 sudo 用户组

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

sudo usermod -G sudo lilei

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

3.1.4 删除用户

删除用户并移除其 home 目录:

sudo deluser lilei --remove-home

删除用户但不移除其 home 目录:

sudo deluser lilei --remove-home

3.2 文件权限

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

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

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

3.2.1 查看文件权限

使用ls -l查看文件权限

ls -l

输出:

总用量24
drwxr-xr-x4 hadoop hadoop 4096 9月29 07:45 hadoop
drwxr-xr-x9 labex labex 4096 9月29 07:41 labex
drwxr-xr-x 2 1001 1001 409612月1520:22 lilei
drwxr-xr-x 2 lilwi lilwi 4096 12月1520:22 lilwi
drwxr-xr-x 2 shiyanlou shiyanlou 4096 9月29 07:36 project

图片来源:实验楼

图片来源:实验楼

3.2.2 变更文件所有者

先创建一个文件如file,然后使用ls -l查看该文件属性:

总用量0
-rw-rw-r-- 1 lilei lilei 0 12月15 20:47 file

换回到原用户,使用以下命令变更文件所有者为原用户:

sudo chown usr1 file

再查看属性:

总用量0
-rw-rw-r-- 1 usr1 lilei 0 12月15 20:47 file

3.2.3 修改文件权限

如果你有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改,这里有两种方式:

方法一:二进制数字表示

图片来源:实验楼

每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)对应一个 " rwx ",也就是一个 “ 7 ” ,所以如果我要将文件file的权限改为只有我自己可以用那么就这样:

chmod 600 file

方法二:加减赋值操作

chmod [obj][+/=][r/w/x] file
  • [obj]表示用户,g/o/u 分别表示 group/others/user,写的时候顺序无所谓
  • [+/-]分别表示增加和去掉相应的权限
  • [r/w/x]对应三种权限,写的时候顺序无所谓

例子:

chmod go-rw file

↑表示去掉 group 和 others 的 rw 权限。

chmod uog+rwx file

↑表示给三种对象都加上 rwx 权限。

chmod ug-wxr file

↑表示去掉 user 和 group 的 rwx 权限。

3.3 其他

adduser 和 useradd 的区别是什么?

答:useradd 只创建用户,创建完了用 passwd lilei 去设置新用户的密码。adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。

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

Linux 实验 [Day 01]的更多相关文章

  1. Linux网络服务01——Linux网络基础设置

    Linux网络服务01--Linux网络基础设置 一.查看及测试网络 1.使用ifconfig命令查看网络接口 (1)查看活动的网络接口 ifconfig命令 [root@crushlinux ~]# ...

  2. Linux 生产实习01

    Linux 生产实习01 标签(空格分隔): Linux 2018.07.02 相关软件下载地址:Linux Study 0x01. 安装 VMware Workstation VMware Work ...

  3. BlackArch Linux 2019.06.01 宣布发布

    导读 BlackArch Linux是一个基于Arch Linux的发行版,专为渗透测试人员和安全研究人员设计,并包含大量渗透测试和安全实用程序,已宣布发布2019.06.01版本. BlackArc ...

  4. Linux实验二报告

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础                     班级: 201352 姓名:池彬宁 贺邦 学号:2013521 ...

  5. Linux实验四报告

    张文俊 + 原创作品转载请注明出处+ <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.学习内容 系统 ...

  6. 《Linux实验要求》

    实验 1:登录和使用基本的 Linux 命令 实验环境: 安装了 Red Hat Enterprise Linux 6.0 可运行系统,并且是成功验证系统. 有另外一个无特权用户 student,密码 ...

  7. Linux实验二

    一        第一个实验 Linux基础 1 通过娄老师关于分析学霸学渣的前言 明白了真正的学习一门功课应该是思考本质 而不是纯属记忆 2 全部的命令如下 Linux命令格式:command [o ...

  8. Linux实验:hdfs shell基本命令操作(一)

    [实验目的] 1)熟练hdfs shell命令操作 2)理解hdfs shell和linux shell命令 [实验原理] 安装好hadoop环境之后,可以执行hdfs shell命令对hdfs 的空 ...

  9. Linux实验:hdfs shell基本命令操作(二)

    [实验目的]    1)熟练hdfs shell命令操作    2)理解hdfs shell和linux shell命令[实验原理]    安装好hadoop环境之后,可以执行hdfs shell命令 ...

随机推荐

  1. 【JavaEE】之MyBatis插入数据后获取自增主键

    很多时候,我们都需要在插入一条数据后回过头来获取到这条数据在数据表中的自增主键,便于后续操作.针对这个问题,有两种解决方案: 先插入,后查询.我们可以先插入一条数据,然后根据插入的数据的各个字段值,再 ...

  2. PowerMock学习(十一)之Mock private methods的使用

    Mock  private methods 就是mock私有方法啦,学到这不难发现,我们其实大部分都是通过反射去完成单元测试的,但是在实际中,某个类中的私有方法,个人不建议使用反射来测试,因为有时候会 ...

  3. Djangoday1 入门及第一个apphelloworld

    1 Django基础指令新建一个django project新建app创建数据库表,更新数据库表或字段使用开发服务器清空数据库创建超级管理员导出数据 导入数据Django 项目环境终端数据库命令行更多 ...

  4. 面试官:JVM锁优化都优化了啥?

    从JDK1.6开始,JVM对锁进行了各种优化,目的就是为了在线程间更高效的共享数据和解决互斥同步的问题.从锁优化的话题开始,可以引申出很多考点面试题,比如锁优化的技术.各优化技术的细节.CAS实现原理 ...

  5. CMSdede后台登陆界面设计

    1 在这里我就公布 css 和jq  也就是dede文件下templets的login.htm页面:代码如下      $(function () {             $(".tex ...

  6. Python使用psutil模块,做你的电脑管家

    电脑管家 也许大家都有这样的感觉,优化完美的电脑系统,你把电脑借给一个电脑小白使用上几天,等你拿回来的时候会发现,开机各种慢,乱七八糟的软件装了一大堆.那么我们如何使用Python来获取电脑的相关数据 ...

  7. 17.Django学习之django自带的contentType表

    通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/aaronthon/article/details/81714496 ...

  8. iOS app反编译

    对于APP store 上的应用都是加密的了,反编译起来有难度. 对于自己用xcode 编译的ipa 或者是其他渠道下载的ipa包都可以使用反编译工具进行反编译. https://cnbin.gith ...

  9. [TimLinux] JavaScript AJAX如何重定向页面

    1. AJAX 异步JavaScript + XML,用于不通过页面from表单,来发送数据到后端服务器中 2. 如何重定向 服务器后端无法直接将页面重定向,因为服务器后端传回的任何数据,都将被XML ...

  10. nitacm20317 来自张司机的挑战书

    题目:让你求从x到y中(1<=x<=y<=10^18),二进制一的个数最多的数是哪个,如果有多个相同的答案,输出最小的. 题目链接:https://www.nitacm.com/pr ...