目录
- 1. Linux 简介(略过)
- 2. Linux 基本概念及操作:命令、快捷键与通配符
- 2.1 基础命令
- 2.2 终端快捷键
- 2.3 通配符
- 2.4 帮助命令
- 3. 用户及文件权限管理
- 3.1 Linux 用户管理
- 3.1.1 查看用户
- 3.1.2 创建用户
- 3.1.3 用户组
- 3.1.4 删除用户
- 3.2 文件权限
- 3.2.1 查看文件权限
- 3.2.2 变更文件所有者
- 3.2.3 修改文件权限
- 3.3 其他
- 3.1 Linux 用户管理
记录一下学习 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.txt
和fgh.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
比如你想查看 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. 用户及文件权限管理
- 实验内容
- Linux 中创建、删除用户,及用户组操作
- Linux 中的文件权限设置
- 实验知识点
- Linux 用户管理
- 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 权限管理这部分内容的用户可以通过其它方式学习。