一、用户和组的管理
  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)的更多相关文章

  1. Linux(Ubuntu)下安装NodeJs

    用以下命令来升级系统,并且安装一些Node.JS必要的包. Linux(Ubuntu)下安装NodeJs 安装nodeJS之前,如果没有安装g++ make libssl-dev等, 1.更新系统和依 ...

  2. 对Linux(Unix)的基础知识归纳

    前言,不论是原生APP(Android&IOS),还是大型架构级基础环境(.NET&J2EE,或LAMP阵营等), 基本都不可避免的涉及到Linux(Unix),故还是觉得有必要把自己 ...

  3. Linux(Ubuntu)安装并破解 SecureFX

    根据Linux(Ubuntu)下面SecureCRT 完全破解(地址:http://www.boll.me/archives/680) 添加了Linux(Ubuntu)下面SecureFX 完全破解, ...

  4. 零基础学习Linux(三)linux与windows文件共享

    上次的博文零基础学习Linux(一)环境搭建中我们已经将linux环境部署完毕了,接下来我们就可以在linux上进行软件的安装和环境的配置.但在进行这些操作之前,我们还需要解决一个问题——Linux与 ...

  5. 零基础学习Linux(二)网页乱码问题

    上次的博文零基础学习Linux(一)环境搭建中我们已经将Linux环境搭建完毕了,接下来我们就可以进行相关的操作了,在进行操作之前,我们先来看一下大家可能遇到的中文网页乱码问题. 1.问题演示 a)输 ...

  6. 学习Linux(一)环境搭建

    零基础学习Linux(一)环境搭建 从本文开始我会为大家介绍一下linux环境下详细的集群环境安装.配置.部署到实例演示的整个过程.在此过程中会给大家详细介绍一下Linux的操作技巧和一些工具的使用. ...

  7. linux(centos7)下SVN服务器如何搭建

    linux(centos)下SVN服务器如何搭建?说到SVN服务器,想必大家都知道,可以是在LINUX下如何搭建SVN服务器呢?那么今天给大家分享一下linux(centos)搭建SVN服务器的思路! ...

  8. 配置SQL Server on Linux(2)

    1. 前言 前一篇配置SQL Server on Linux(1),地址:http://www.cnblogs.com/fishparadise/p/8125203.html ,是关于更改数据库排序规 ...

  9. 如何设置Linux(Centos)系统定期任务(corntab详细用法)

    如何设置Linux(Centos)系统定期任务(crontab详细用法) 1.Crontab简介 Linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非 ...

  10. linux(centos)上安装mysql教程,为需要远程登录的用户赋予权限

    最近把之前学生时代的win server换成了linux(centos)系统,因为win对于部署一些项目时候比较麻烦,直接入正题 1.准备阶段 我使用xshell工具管理服务器,相应下载和安装自行百度 ...

随机推荐

  1. 生成count位随机数工具类

    工具类 import java.util.Random; /** * 生成6位随机数字 */ public class GeneratorCode { /** * * @Title: getCode ...

  2. Docker 镜像的推送(六)

    目录 一.为镜像命名 二.推送到官方 Docker Hub 1.首先得在 Docker Hub 上注册一个账号. 2.在 Docker Host 上登录 3.修改镜像命名 4.镜像上传 5.登录查看上 ...

  3. MyBatis框架总结

    一. MyBatis简介 MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBati ...

  4. python 使用 RabbitMQ

    一.RabbitMQ消息队列介绍 RabbitMQ是在两个独立得python程序,或其他语言交互时使用. RabbitMQ:erlang语言 开发的. Python中连接RabbitMQ的模块:pik ...

  5. 乐字节Java学习01-Java语言概述,Java发展前景,Java的特点

    从这篇文章开始,小乐准备写一整系列的Java学习文章,一步一步带您进入Java的神奇世界! 这是第一篇:Java语言概述以及Java的发展前景 1.SUN公司介绍 SUN公司全称是Stanford U ...

  6. xmind常用快捷键

    1-新建导图Ctrl+shift+N2-编辑文字空格键3-插入图片Ctrl+i4-插入主题Enter键5-插入主题之前Shift+Enter键6-插入子主题Tab键7-放大导图“Ctrl”+“+”,先 ...

  7. pgsql常用操作

    pgsql备份: --进入pgsql容器docker exec -it 容器ID bash --备份pgsql /opt/rh/rh-postgresql95/root/usr/bin/pg_dump ...

  8. [转帖]java的编译器,解释器和即时编译器概念

    java的编译器,解释器和即时编译器概念 置顶 2019-04-20 13:18:55 菠萝科技 阅读数 268更多 分类专栏: java jvm虚拟机 操作系统/linux   版权声明:本文为博主 ...

  9. 【Docker】:使用docker安装redis,挂载外部配置和数据

    普通安装 1.拉取镜像,redis:4.0 docker pull redis:4.0 2.创建redis容器名"redistest1",并开启持久化 docker run -d ...

  10. Linux "yin"才们的奇"yin"小技巧 --请用东北发音夸他们

    1. include/linux/bits.h GENMASK(h, l) /* * Create a contiguous bitmask starting at bit position @l a ...