一、用户和组的管理
  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. npm镜像指定用淘宝镜像去下载

    使用npm下载,蜗牛,使用cnpm又觉得那啥,所以.把cnpm也就是淘宝镜像绑定成npm下载的代理,这样使用npm的时候其实是用淘宝镜像去下载,这感觉,good! 1. npm config set ...

  2. Centos7之pacemaker高可用安装配置详解

    申明: centos7的pacemaker与6使用的方法不一致,即使用centos6.x的方法在centos7.x上面配置pacemaker不能成功. 因此openstack 上面的centos7.1 ...

  3. selenium + python 环境配置 (四)之启动Firefox

    火狐浏览器自身适配selenium   因此不需要再安装 直接代码启动: __author__ = 'admin' #作者 # -*- coding:utf-8 -*- # 建议所有都加编码 from ...

  4. plsql中文乱码 显示问号

    输入sql语句select * from V$NLS_PARAMETERS查看字符集,查看第一行value值是否为简体中文 解决方案: 新增环境变量 变量名: NLS_LANG 变量值: SIMPLI ...

  5. Mysql主从复制原理及同步延迟问题

    本文转载自:Mysql主从复制原理及同步延迟问题 主从复制解决的问题 数据分布:通过复制将数据分布到不同地理位置 负载均衡:读写分离以及将读负载到多台从库 备份:可作为实时备份 高可用性:利用主主复制 ...

  6. 服务提供者框架讲解 之 myJDBC

    利用一个简单的myJDBC,讲一下'服务提供者框架'的思想.主要是思想 目录 什么是 服务提供者框架 代码讲解 服务接口 服务提供者接口 服务注册API.服务访问API 静态工厂方法 服务实现类 – ...

  7. [NOIP普及组2001]最大公约数和最小公倍数问题

    目录 链接 博客链接 题目链接 题目内容 题目描述 格式 输入 输出 数据 样例 输入 输出 说明 题目名称:最大公约数和最小公倍数问题 来源:2001年NOIP普及组 链接 博客链接 CSDN 洛谷 ...

  8. MySQL之mysqldump数据备份还原

    一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理 ...

  9. Python 第一式

    @Codewars Python练习 question ** Dashatize it ** Given a number, return a string with dash'-'marks bef ...

  10. 模块 json 和 pickle

    目录 序列化 json 和 pickle 模块 序列化 序列:字符串 序列化:将其它数据类型转换成字符串的过程. 反序列化:字符串转成其它数据类型. 序列化的目的 1:以某种存储形式使用自定义对象持久 ...