linux(3)
一、用户和组的管理
Linux/Unix是多用户系统:
root是超级用户,拥有最高权限。其它用户及权限由root来管理。对比Windows系统:
控制面板 -> 管理工具 -> 计算机管理 -> 本地用户和组
-> 右击某用户 -> 属性 -> 隶属于(哪个组)
用户和组是从属关系
1、添加用户:useradd 用户名 (只能由root操作)
# id 为root
# useradd xiaohong
规律:不写组,会自动创建一个组,组名同于用户名xiaohong;
创建用户后,会在/home目录下,自动生成一个目录,就是该用户的主目录,目录名也同于用户名 xiaohong
# cd /home
# ls -l
属主 属组
drwx------ 2 xiaohong xiaohong 4096 4月 27 09:32 xiaohong 主目录名
2、设置密码:passwd 用户名
# passwd xiaohong 输入密码:123 123
清密码:passwd -d 用户名
# passwd xiaohong 输入密码:123 123
3、改变身份: su 用户名
su 不写用户名,默认就是root
目的:获取某用户的权限进行管理
注意:从root切换到普通用户不需要密码,但从普通用户切换到root或其他用户需要密码。
练习:从root切换到xiaohong,从xiaohong切换到root
再返回身份 exit su也会启动一个子进程
查看最初登录身份:who am i
查看当前用户名:whoami
查看当前用户详细身份:id (用户id 用户名 组id 组名)
二、案例:
1、添加boys组: groupadd 组名
# id 是root
# groupadd boys
2、添加girls组:
# groupadd girls
3、查看组信息: /etc/group 组管理配置文件
# cat /etc/group 重点查看组id和组名
每一行就是一个组的记录,每一列就是不同的属性
组名 组id(gid)
root:x:0:root
...
xiaohong:x:500:
boys:x:501:
girls:x:502:
4、添加用户tom到boys组:useradd -g 组名 用户名
# useradd -g boys tom
# passwd tom 密码:123
5、同理,添加用户alice和rose到girls组:
# useradd -g girls alice
# useradd -g girls rose
# passwd alice 密码:123
# passwd rose 密码:123
6、查看用户账户信息: /etc/passwd
# cat /etc/passwd
每一行就是一条账户的信息,具有多个属性:
用户名:口令占位符:uid:gid:描述:用户主目录:登录shell
root:x:0:0:root:/root:/bin/bash
...
xiaohong:x:500:500::/home/xiaohong:/bin/bash
tom:x:501:501::/home/tom:/bin/bash
alice:x:502:502::/home/alice:/bin/bash
rose:x:503:502::/home/rose:/bin/bash
uid: 用户id
gid: 组id
补充:用户口令文件 /etc/shadow
分别使用root和xiaohong身份查看
$ cat /etc/shadow 权限不够
# cat /etc/shadow 可以查看,但是密码都经过加密MD5
7、用alice的身份,在其主目录下创建1.txt文件
# id 是root
# su alice 不用密码
$ cd 回alice主目录 /home/alice
$ pwd
$ ls
$ touch 1.txt 创建空文件
$ ls -l
-rw-r--r-- 1 alice girls 0 7月 12 10:39 1.txt
(编辑纯文本)
8、使用vi编辑器,编辑1.txt文本 (vi基本使用)
1)vi 1.txt 启动vi 编辑1.txt 纯字符界面
默认处于:命令模式 可敲大量命令
2)敲i键,切换到:输入模式 (左下角:插入 INSERT)
3)输入 I am alice!
4)敲Esc键,由输入模式 -> 命令模式
5)敲 : 键(Shift ;)-> 底行模式(冒号模式)
6)在冒号后输入: wq 回车 保存并退出(Write Quit)
7)补充:如果保存时出现问题,可以不存盘强制退出
Esc 冒号模式 shift ; q! 回车
9、尝试让tom进入alice主目录中,查看并修改1.txt文件。
$ id 是xiaohong
$ su tom 密码123
$ cd /home
$ cd alice 权限不够
$ ls -l
drwx------ 2 alice girls 4096 4月 27 10:50 alice
drwx------ 2 rose girls 4096 4月 27 10:23 rose
drwx------ 2 tom boys 4096 4月 27 10:22 tom
三、文件/目录的权限:
1、user 所有者(属主 owner 文件的创建人) u
2、group 所有者所在的组 g
比如:root用户 在 root组
xiaohong用户 在 xiaohong组
tom用户 在 boys组
alice和rose 在girls组
3、other 其他 o 既不是自己的,也不是同组的
ls -l 开始的10个字符: d rwx --- ---
文件类型 文件/目录的权限
- --- --- ---
- 文件 所有者 同组人 其他人
d 目录
4、三种访问权限:可读r 可写w 可执行x
Read Write eXcute
rwx------ 出现的位置固定 rwx 缺失使用-代替
可读r r--
可写w -w-
可执行x --x
- rw- r-- r-- 普通文件:权限 644
自己:可读、可写 同组:只读 其他:只读
d rwx r-x r-x 目录:权限 755
自己:可读、可写、可执行
同组:可读、可执行 其他:可读、可执行
- rwx rwx rwx 可执行文件:777
对所有人:可读、可写、可执行
权 权限数字表达法
421 (使用八进制)
000 0 ---
001 1 --x
010 2 -w-
011 3 -wx
100 4 r--
101 5 r-x
110 6 rw-
111 7 rwx
权
128 64 32 16 8 4 2 1
01100001
97 = 64 + 32 + 1
将十进制数97 -> 二进制数:01100001
-> 十六进制:0110 0001
61
-> 八进制:01 100 001
141
权
128 64 32 16 8 4 2 1
11101101
237 = 128 + 64 + 32 + 8 + 4 + 1
将十进制数237 -> 二进制数:11101101
十六进制:1110 1101
0~9 A B C D E F ED 程序猿更方便表示二进制
某文件具有如下权限,对于用户自己拥有可读、可写、可执行,对于同组人可读、可执行,对于其他人可读,请写出该权限的八进制数形式____. 754
- rwx r-x r--
7 5 4
5、归纳文件和目录的各种权限的规律:
1)文件的权限:
r 可读:可以使用vi、cat等查看文件的内容 Disk I 输入
w 可写:可以修改后保持磁盘 Disk O 输出
x 可执行:可以直接运行 命令就是可执行文件
2)目录的权限:
r 可读:通过ls 查看目录下的内容
w 可写:可以改变目录下的内容,比如新建、删除资源
x 可执行:可以cd进去
为何tom无法进入alice的主目录?
$ ls -ld
drwx------ 2 alice girls 4096 4月 27 10:50 .
700
修改为:
drwx-----x
701
6、修改文件/目录的权限:chmod 规则 文件/目录名
规则:
角色:u 自己人 user
g 同组人 group
o 其他人 other
a 所有人 all
操作:+ - 权限:r w x
数字:644 755 ...
举例: rw- r-- r--
u g o
# chmod u+x 1.txt 针对自己增加可执行权限
# chmod u-x 1.txt 针对自己去除可执行权限
# chmod g+w 1.txt 针对同组人增加可写权限
# chmod a+rx, g+w 1.txt
所有人都可读,可执行;同组的可写
# chmod 777 1.txt 数字表达法
# chmod 644 1.txt
前提:只有文件的拥有者、root用户可以修改权限
案例:由root或alice修改alice主目录的权限,让tom能进入其中,并且查看目录下内容,查看1.txt的内容,修改1.txt内容。
由alice修改:让tom能cd进入
$ id 是alice
$ cd 在主目录中
$ ls -ld 权限 700 rwx --- ---
$ chmod o+x . 701 rwx --- --x
或 chmod 701 .
由alice修改:让tom能查看其主目录下内容
$ chmod o+r . 705 rwx --- r-x
或 chmod 705 .
$ ls -l
-rw-r--r-- 1 alice girls 12 4月 27 10:50 1.txt
644
目前tom可读,但不可写
-rw-r--rw-
646
由alice修改:让tom可以改写1.txt
$ chmod o+w 1.txt
chmod 646 1.txt
练习:让alice或root改变权限,让tom和rose都能进入alice主目录,查看目录下内容,查看1.txt内容,修改1.txt
$ ls -ld drwx---r-x 705
drwxr-xr-x 755
$ chmod 755 .
或 chmod a+rx .
$ ls -l -rw-r--rw- 646
-rw-rw-rw- 666
$ chmod 666 1.txt
或 chmod a+rw 1.txt
准备一个可执行文件:f1 改为可执行,可直接运行
由alice操作:
$ id 是alice
$ pwd 在/home/alice
$ vi f1
编辑:date
sleep 10
cal
保存退出
$ f1 命令找不到 和PATH有关 没有改命令所在路径
$ /home/alice/f1
$ ./f1 权限不够
-rw-r--r-- 644
-rwxr--r-- 744
-rwxr-xr-x 755
$ chmod u+x f1
$ chmod a+x f1
举例:写一个shell脚本,求出1~100的累加和
$ id 是alice
$ vi sum.sh
#!/bin/bash
sum=0
i=1
while (($i<=100))
do
sum=$(($sum +$i))
i=$(($i+1))
done
echo "Sum=$sum"
保存退出后
$ chmod a+x *.sh 针对所有.sh文件,针对所有用户都可执行
四、查看文件内容的方式:cat more vi head tail
1、cat 适合看小文件,不可翻页,不可编辑
可以将多个文件合并成一个文件
$ date > t1
$ echo Hello > t2
$ cal > t3
$ cat t1 t2 t3 > newfile
2、more 适合看大文件,可以翻页,不可编辑
控制命令: 空格 -- 翻页
回车 -- 跳行
b -- 向前一屏
f -- 向后
h -- 求助
q -- 退出
/ -- 查找
n -- 继续查找
将/etc/passwd文件拷贝到alice的主目录下:
$ id 是alice
$ cp /etc/passwd ~
$ cat passwd
$ more passwd
3、vi 功能强大文本编辑器(Unix/Linux) vim等都是对vi的加强版
关注三种模式:如何切换
回车 i a o O
底行模式 ----> 命令模式 ----> 输入模式
<---- (初始模式) <----
: / ? Esc
常用的操作命令:
O
i 光标 a
o 变为输入模式,光标停留位置不同
向上 k
向下 j
向左 h
向右 l 用小键盘方向键也可
到行首 ^
到行尾 $
到第5行 5G
屏首 H
屏尾 L
屏中央 M
前翻页 ctrl + b backward
后翻页 ctrl + f forward
x 删除一个字符
dw 删除当前词
3dw 删除3个单词
dd 删除当前行
5dd 删除5行 (当前行开始)
:5, 10d 冒号模式,删除5~10行
r 替换一个字符
cw 替换一个单词
cc 替换一行
C 替换从光标到行尾
yw 拷贝词
yy 拷贝行 (Y) 5yy 拷贝5行
p 粘贴
:1,2co3 拷贝行1,行2到行3之后
:4,5m6 移动行4,行5到行6之后 剪切
:w 存盘 write (类似Windows中 ctrl + s)
:w 新文件名 另存为新文件
:wq 存盘退出 或 ZZ (shift + z + z) 或:x
:q! 强制退出不存盘
其它命令:
~ 大小写转换
J 把当前行和下一行连起来
u 撤销上一步 undo
:set number 显示行号 :set nu
:set nonumber 取消行号 :set nonu
:21 光标跳到指定行
21G 到21行 G表示文件为 1G第一行
/字符串 从当前行往下查找
?字符串 从当前行往上查找
n 继续向下查找
N 反方向继续查找
:r file2 在光标所在位置插入另一个文件 (合并)
:1,$s/旧串/新串/g 替换全文
说明:s表示替换 g表示全部替换 global
将所有: 换成@
:1,$s/:/@/g
练习:将文本中所有home都替换成 192.168.0.2
:1,$s/home/192.168.0.2/g
4、head 和 tail
查看文件的头几行: head -3 文件名 头3行
查看文件的后几行: tail -5 文件名 后5行
技巧:使用tail -f 文件名 动态刷新实时监控文件
用途:常用于查看系统的日志文件;
日志文件经常被更新,追加新的内容,需要监控。
$ tail -f 1.txt
$ ctrl + c 结束监控进程
select * from emp
where id=1;
select 列名, 表达式, 函数, ... 列的投影
from 表名, ...
where 记录的匹配条件 行的选择
五、常用技巧
1、过滤:grep 过滤出n行
2、统计:wc 统计:行、单词、字符 的数量
3、排序:sort
4、管道: |
管道符:用于连接两个命令,前一个命令的输出,作为后一个命令的输入。(前一个命令的输出,作为后一个命令传入的参数)
例子1:将/etc/passwd的头10行,写入文件f2中
$ head -10 /etc/passwd > f2
例子2:将/etc/passwd的头10行排序后,写入文件f3中
$ head -10 /etc/passwd | sort > f3
例子3:将/etc/passwd排序后的头10行,写入文件f4中
$ sort /etc/passwd | head -10 > f4
5、常见用法
1)管道more: 分屏显示
对比:ls -l /etc
ls -l /etc | more 空格 回车 q
2)管道grep: 过滤
对比:ls -l /etc
ls -l /etc | grep ssh 找到含有ssh的行
drwxr-xr-x 2 root root 4096 4月 25 11:20 ssh
练习:查找出tom的账户信息
cat /etc/passwd | grep tom
tom:x:501:501::/home/tom:/bin/bash
练习:找出girls组的所有用户的账户信息,按照用户名排序
/etc/group 组 girls:x:502:
/etc/passwd 用户
cat /etc/passwd | grep 502 | sort
3)管道wc:统计
cat f1 | wc
3 行 4 单词 18 字符
练习:统计出girls组有多少账户
cat /etc/passwd | grep 502 | wc 行数就是账户数
六、进程管理
1、查看当前所有进程 ps -ef
以全格式显示当前系统所有进程
每一行就是一个进程的信息
-e 所有进程
-f 全格式
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:07 ? 00:00:03 init
Uid: 用户名 该进程由哪个用户发起的 (重要)
Pid: 进程id 进程的唯一标识 (重要)
PPid: 父进程id
C: cpu占有率
Stime: 开始的时间 (重要)
TTY: 开始该进程的终端号
Time: 运行时间
CMD: 启动该进程的命令名 (重要)
启动sleep进程: sleep 3000
其它窗口:ps -ef | grep sleep
alice 3421 3212 0 17:49 pts/0 00:00:00 sleep 3000
进程id: 3421
2、根据pid杀进程:kill 进程id
前提:只有进程的发起者、root才可杀进程
和权限有关
$ kill 3421 没有权限
$ su 密码:123456
# kill 3421
3、根据进程命令名批量杀进程:pkill 命令名
# pkill sleep
关机:halt halt: must be superuser.
重启:reboot reboot: must be superuser.
必须是root才有权限操作!
linux(3)的更多相关文章
- Linux(Ubuntu)下安装NodeJs
用以下命令来升级系统,并且安装一些Node.JS必要的包. Linux(Ubuntu)下安装NodeJs 安装nodeJS之前,如果没有安装g++ make libssl-dev等, 1.更新系统和依 ...
- 对Linux(Unix)的基础知识归纳
前言,不论是原生APP(Android&IOS),还是大型架构级基础环境(.NET&J2EE,或LAMP阵营等), 基本都不可避免的涉及到Linux(Unix),故还是觉得有必要把自己 ...
- Linux(Ubuntu)安装并破解 SecureFX
根据Linux(Ubuntu)下面SecureCRT 完全破解(地址:http://www.boll.me/archives/680) 添加了Linux(Ubuntu)下面SecureFX 完全破解, ...
- 零基础学习Linux(三)linux与windows文件共享
上次的博文零基础学习Linux(一)环境搭建中我们已经将linux环境部署完毕了,接下来我们就可以在linux上进行软件的安装和环境的配置.但在进行这些操作之前,我们还需要解决一个问题——Linux与 ...
- 零基础学习Linux(二)网页乱码问题
上次的博文零基础学习Linux(一)环境搭建中我们已经将Linux环境搭建完毕了,接下来我们就可以进行相关的操作了,在进行操作之前,我们先来看一下大家可能遇到的中文网页乱码问题. 1.问题演示 a)输 ...
- 学习Linux(一)环境搭建
零基础学习Linux(一)环境搭建 从本文开始我会为大家介绍一下linux环境下详细的集群环境安装.配置.部署到实例演示的整个过程.在此过程中会给大家详细介绍一下Linux的操作技巧和一些工具的使用. ...
- linux(centos7)下SVN服务器如何搭建
linux(centos)下SVN服务器如何搭建?说到SVN服务器,想必大家都知道,可以是在LINUX下如何搭建SVN服务器呢?那么今天给大家分享一下linux(centos)搭建SVN服务器的思路! ...
- 配置SQL Server on Linux(2)
1. 前言 前一篇配置SQL Server on Linux(1),地址:http://www.cnblogs.com/fishparadise/p/8125203.html ,是关于更改数据库排序规 ...
- 如何设置Linux(Centos)系统定期任务(corntab详细用法)
如何设置Linux(Centos)系统定期任务(crontab详细用法) 1.Crontab简介 Linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非 ...
- linux(centos)上安装mysql教程,为需要远程登录的用户赋予权限
最近把之前学生时代的win server换成了linux(centos)系统,因为win对于部署一些项目时候比较麻烦,直接入正题 1.准备阶段 我使用xshell工具管理服务器,相应下载和安装自行百度 ...
随机推荐
- 生成count位随机数工具类
工具类 import java.util.Random; /** * 生成6位随机数字 */ public class GeneratorCode { /** * * @Title: getCode ...
- Docker 镜像的推送(六)
目录 一.为镜像命名 二.推送到官方 Docker Hub 1.首先得在 Docker Hub 上注册一个账号. 2.在 Docker Host 上登录 3.修改镜像命名 4.镜像上传 5.登录查看上 ...
- MyBatis框架总结
一. MyBatis简介 MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBati ...
- python 使用 RabbitMQ
一.RabbitMQ消息队列介绍 RabbitMQ是在两个独立得python程序,或其他语言交互时使用. RabbitMQ:erlang语言 开发的. Python中连接RabbitMQ的模块:pik ...
- 乐字节Java学习01-Java语言概述,Java发展前景,Java的特点
从这篇文章开始,小乐准备写一整系列的Java学习文章,一步一步带您进入Java的神奇世界! 这是第一篇:Java语言概述以及Java的发展前景 1.SUN公司介绍 SUN公司全称是Stanford U ...
- xmind常用快捷键
1-新建导图Ctrl+shift+N2-编辑文字空格键3-插入图片Ctrl+i4-插入主题Enter键5-插入主题之前Shift+Enter键6-插入子主题Tab键7-放大导图“Ctrl”+“+”,先 ...
- pgsql常用操作
pgsql备份: --进入pgsql容器docker exec -it 容器ID bash --备份pgsql /opt/rh/rh-postgresql95/root/usr/bin/pg_dump ...
- [转帖]java的编译器,解释器和即时编译器概念
java的编译器,解释器和即时编译器概念 置顶 2019-04-20 13:18:55 菠萝科技 阅读数 268更多 分类专栏: java jvm虚拟机 操作系统/linux 版权声明:本文为博主 ...
- 【Docker】:使用docker安装redis,挂载外部配置和数据
普通安装 1.拉取镜像,redis:4.0 docker pull redis:4.0 2.创建redis容器名"redistest1",并开启持久化 docker run -d ...
- Linux "yin"才们的奇"yin"小技巧 --请用东北发音夸他们
1. include/linux/bits.h GENMASK(h, l) /* * Create a contiguous bitmask starting at bit position @l a ...