zoukankan      html  css  js  c++  java
  • 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才有权限操作!

  • 相关阅读:
    SpringMVC设置不拦截静态资源css,js
    关于Spring 国际化 No message found under code 的解决方案
    数据库中文乱码问题
    Maven下载清除jar包
    Swift学习笔记7:关闭
    bash构造tmux显示tmux ssh状态
    Mysql入门到精通数据表的操作
    MapReduce源代码分析MapTask分析
    世界目光聚焦美国:埃博拉病患者是否认真是可以治愈的?
    Android Studio如何引用jar包裹(不gradle)
  • 原文地址:https://www.cnblogs.com/KalosOwen/p/8987541.html
Copyright © 2011-2022 走看看