Linux 实验 [Day 01]

戏子无情 提交于 2019-12-15 22:01:26

记录一下学习 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 权限管理这部分内容的用户可以通过其它方式学习。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!