linux笔记(二)

文本编辑器

再终端输入vi敲Enter(回车)可以看到介绍<br<
~ VIM - Vi IMproved
~
~ 版本 7.4.629
~ 维护人 Bram Moolenaar 等
~ 修改者 bugzilla@redhat.com
~ Vim 是可自由分发的开放源代码软件
~
~ 成为 Vim 的注册用户!
~ 输入 :help register 查看说明
~
~ 输入 :q 退出
~ 输入 :help 查看在线帮助
~ 输入 :help version7 查看版本信息
vi的模式分为四种模式

  • 正常模式

  • 插入模式

  • 命令模式

  • 可视模式

  • 正常模式

  • 光标的移动

    h 光标向左移动一个字符

    j 光标向下移动一个字符

    k 光标向上移动一个字符

    l 光标向右移动一个字符

    nG n是数字 移动到指定行

    g 移动到文件开头

    G 移动到文件末尾

    ^ 移动到所在行的第一个字符处

    $ 移动到所在行的最后末尾

  • 复制

    yy 复制光标所在一行数据

    nyy n是数字,复制光标向下的n行

    y$ 复制光标所在字符到该行末尾的所有数据

    y0 复制光标所在字符到该行行首的所有数据

    yG 复制光标所在行到最后一行的数据

    y1G 复制光标所在行到第一行的数据

  • 粘贴

    p 将复制的数据贴在光标下一行

    P 将复制的数据贴在光标上一行

  • 剪切

    dd 剪切光标所在行数据

    d$ 剪切光标所在字符到该行末尾的所有数据

    ndd n是数字,剪切光标向下的n行

  • 撤销和重做

    u 撤销上一次命令

    ctrl+r 重做 恢复撤销命令

  • 删除

    x 删除当前光标所在字符

    nx 删除当前光标后n个字符

    dj 删除光标所在上一行

    dk 删除光标所在下一行

  • 命令模式

    :set nu 显示行数

    :set nonu 取消行数

    :w 保存文件

    :w! 若文件为’可读’模式,就强行写入文档

    :q 不保存文件,离开vi

    :wq 保存后离开

    :! command 暂时离开vi,执行linux 命令

    :w [文件名] 将内容保存到另一个档案

    :/keyword 查找光标向下名称为keyword的字符

    ?keyword 查找光标向上名称为keyword的字符

    :s/old/new 字符的替换 默认只替换光标所在的字符

    :%s/old/new/g 全局替换字符

    :n1,n2s/old/new n1和n2为数字,从n1行到n2行之间替换字符

  • 插入模式

    i 从当前光标处输入

    I 在当前所在行的第一个非空格符处开始输入

    a 从当前光标所在下一个字符处开始输入

    A 从当前光标所在最后一个字符处开始输入

    o 从当前光标所在下一行输入新的一行

    O 从当前光标所在上一行输入新的一行

  • 可视模式

    v 字符选择,将所在光标经过的地方选中

    V 行选择 ,会将光标经过的行选中

    Crtl+v 块选择

用户操作

linux 用户分三种,根用户、系统用户、普通用户

  • useradd 新建用户

  • userdel 删除用户

  • passwd 修改密码

  • usermod 修改用户属性

  • 用户新增

    1
    2
    3
    4
    5
    [root@localhost ~]# useradd kuan1  //新增一个用户叫kuan1
    [root@localhost ~]# id kuan1 //新增后用id查看用户信息
    uid=501(kuan1) gid=501(kuan1) groups=501(kuan1)
    [root@localhost ~]# id adc
    id: adc: No such user //若用户不存在则会提示

    1.第一步 会在/etc/passwd和/etc/shadow里面新增一条信息,分配一个UID给用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@localhost ~]# tail -3 /etc/passwd
    tcpdump:x:72:72::/:/sbin/nologin
    kuan:x:500:500:CentOS 6_1:/home/kuan:/bin/bash
    kuan1:x:501:501::/home/kuan1:/bin/bash

    [root@localhost ~]# tail -3 /etc/shadow
    tcpdump:!!:18073::::::
    kuan:$1$diF26fa2$FKeyiGQIE3X.KS0BOsvmu.:18073:0:99999:7:::
    kuan1:!!:18348:0:99999:7:::

2.第二步 创建家目录,再/home下创建一个和用户名同名的目录,然后把/etc/skel下的所有文件复制到创建的家目录

1
2
3
4
[root@localhost ~]# ls -a /etc/skel/
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla
[root@localhost ~]# ls -a /home/kuan1
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla

3.第三步 如果没有指定用户组,系统会新建一个和用户名相同的用户组,默认新增用户就属于这个用户组的

1
2
[root@localhost ~]# id kuan1  //groups 就是用户所属用户组
uid=501(kuan1) gid=501(kuan1) groups=501(kuan1)

每个用户都有一个唯一的UID

新增时指定UID,指定的UID不能跟其他用户冲突

useradd -u [uid] 用户名

1
2
3
4
5
[root@localhost ~]# useradd -u 555 kuan2
[root@localhost ~]# tail -3 /etc/passwd
kuan:x:500:500:CentOS 6_1:/home/kuan:/bin/bash
kuan1:x:501:501::/home/kuan1:/bin/bash
kuan2:x:555:555::/home/kuan2:/bin/bash
  • __ 指定用户组__

    • useradd -g [用户组] 用户名
1
2
3
[root@localhost ~]# useradd -g kuan1 kuan3
[root@localhost ~]# id kuan3
uid=556(kuan3) gid=501(kuan1) groups=501(kuan1)
  • 指定用户家目录

    • useradd -d [目录] 用户名
1
2
3
4
5
6
7
[root@localhost ~]# useradd -d /home/kuan1 kuan4
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[root@localhost ~]# tail -3 /etc/passwd
kuan2:x:555:555::/home/kuan2:/bin/bash
kuan3:x:556:501::/home/kuan3:/bin/bash
kuan4:x:557:557::/home/kuan1:/bin/bash
  • 修改密码

    • passwd [用户名]

刚刚创建的用户,是没有登录权限的。需要设置密码

1
2
3
4
5
[root@localhost ~]# passwd kuan1
Changing password for user kuan1.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

如果是普通用户修改直接输入passwd然后回车即可,普通用户再passwd 后面不能输入用户名。

  • 删除用户

    • userdel [参数] 用户名
1
2
3
4
5
6
7
[root@localhost ~]# userdel kuan3
[root@localhost ~]# ls -l /home/
total 16
drwx------. 36 kuan kuan 4096 Mar 27 19:05 kuan
drwx------. 4 kuan1 kuan1 4096 Mar 27 19:08 kuan1
drwx------. 4 kuan2 kuan2 4096 Mar 27 21:26 kuan2
drwx------. 4 556 kuan1 4096 Mar 27 21:28 kuan3

这条命令删除用户后还会保存用户的家目录。

1
[root@localhost ~]# userdel -r kuan3

这条命令会删除用户和用户的家目录

  • 修改用户信息

    usermod [参数] 用户名

    • 修改用户所在家目录

      usermod -d [目录] 用户名
    • 修改用户所属组

      usermod -g[用户组] 用户名
    • 锁定账号

      usermod -L 用户名
    • 解锁账号

      usermod -U 用户名
  • 用户组的操作

    • 添加用户组

    groupadd 名称

    1
    2
    3
    4
    5
    [root@localhost ~]# groupadd demo1
    [root@localhost ~]# cat /etc/group
    root:x:0:root
    (省略)
    demo1:x:502:

    在/etc/group文件中,每一行就代表一个用户组,其格式是使用3个分隔号“:”隔开的4列。第一列是用户组名,第二列代表密码(但是并不使用),第三列代表用户组的数字ID,第四列是组成员,这里为空说明还没有任何用户属于这个组。

    • 删除用户组

    groupdel 名称

    1
    [root@localhost ~]# groupdel demo1

    如果已有用户属于这个用户组,是不能删除的。

  • 检查用户信息

    users

    • 显示当前登录的用户列表
      1
      2
      [root@localhost ~]# users
      kuan kuan
    • 查看用户

    finger 名称

    centos默认没有按照这个命令,先运行yum -y install finger 进行安装

    finger后面不加参数,会显示系统登录的用户

    1
    2
    3
    4
    [root@localhost ~]# finger
    Login Name Tty Idle Login Time Office Office Phone
    kuan CentOS 6_1 tty1 40 Mar 30 22:20 (:0)
    kuan CentOS 6_1 pts/0 Mar 30 22:21 (:0.0)

    finger后面添加用户名 显示详细信息

    1
    2
    3
    4
    5
    6
    [root@localhost ~]# finger user
    Login: ftp Name: FTP User
    Directory: /var/ftp Shell: /sbin/nologin
    Never logged in. #最后一次登录时间
    No mail. #邮箱
    No Plan. #计划信息
  • 切换用户

    • su 切换用户
    • su - 姓名 使用login shell 方式切换用户
    • sudo 以其他用户身份执行命令
      1
      2
      3
      4
      5
      6
      [kuan@localhost ~]$ su
      密码:
      [root@localhost kuan]# pwd
      /home/kuan
      [root@localhost kuan]# exit
      exit
      输入su 默认是切换到root用户,退出使用exit。

      su后面可以加“-” 参数,加上这个参数说明,身份和用户环境都会切换
      1
      2
      3
      4
      [kuan@localhost ~]$ su -
      密码:
      [root@localhost ~]# pwd
      /root
      su - 跟su 相比,切换了用户的家目录。

      root用户使用su命令切换成任意用户则不需要输入密码

    sudo 命令则是使用其他用户身份来执行命令,运行命令的时候会检查/etc/sudoers,判断用户是否有执行sudo的权限,有执行权限后,需要输入用户的密码,输入正确后则会执行sudo后面的命令。

  • 用户配置文件

    • 查看用户配置文件

      1
      2
      3
      4
      5
      6
      7
      [root@localhost ~]# cat /etc/passwd
      root:x:0:0:root:/root:/bin/bash
      bin:x:1:1:bin:/bin:/sbin/nologin
      daemon:x:2:2:daemon:/sbin:/sbin/nologin
      (省略)
      kuan:x:500:500:CentOS 6_1:/home/kuan:/bin/bash
      kuan1:x:501:501::/home/kuan1:/bin/bash

      这里用“:”分割成七个字段

      第一列:用户名

      第二列:密码(现已不用,现密码放在/etc/shadow中)注:如果把当前位置X删除,则用户登录就不需要密码验证

      第三列:UID 用来区分不同用户的整数

      第四列:GID 用来区分不同用户组的整数

      第五列:说明 类似”注释”

      第六列:家目录 用户登录后,所在的目录就是家目录

      第七列:登录后shell 用户登录后所使用的shell

    • 用户密码文件

      1
      2
      3
      4
      5
      6
      7
      8
      9
      [root@localhost ~]# cat /etc/shadow
      root:$1$diF26fa2$FKeyiGQIE3X.KS0BOsvmu.:18073:0:99999:7:::
      bin:*:15175:0:99999:7:::
      daemon:*:15175:0:99999:7:::
      dbus:!!:18073::::::
      usbmuxd:!!:18073::::::
      tcpdump:!!:18073::::::
      kuan:$1$diF26fa2$FKeyiGQIE3X.KS0BOsvmu.:18073:0:99999:7:::
      kuan1:$1$PlZe3f.Y$Ndafyfhjp7eZ54ZUYKu0.0:18348:0:99999:7:::

      这里用“:”分割成九个字段

      第一列:用户名

      第二列:密码(加密后的密码)

      第三列:密码最近修改日

      第四列:密码不可修改天数(修改密码后,几天内不能修改密码,如果是0,随时可以修改)

      第五列:密码重新修改的天数

      第六列:密码失效前提前警告天数

      第七列:密码失效宽限天数

      第八列:账号失效日期

      第九列:保留字段

    • 用户组文件

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      [root@localhost ~]# cat /etc/group
      root:x:0:root
      bin:x:1:root,bin,daemon
      daemon:x:2:root,bin,daemon
      sys:x:3:root,bin,adm
      adm:x:4:root,adm,daemon
      tty:x:5:
      disk:x:6:root
      lp:x:7:daemon,lp
      mem:x:8:
      kmem:x:9:

      这里用“:”分割成四个字段

      第一列:用户组名称

      第二列:用户组是否需要密码验证

      第三列:用户组的GID(和/etc/passwd 里面的GID相对应)

      第四列:所属用户组的用户