openEuler 2 常见文本编辑器 文件摘选 用户管理 用户组管理 文件权限
uwupu 啦啦啦啦啦

Linux常见文本编辑器

  • emacs
  • nano
  • gedit
  • kedit
  • vi
  • vim
    • 基本模式:普通、插入、可视、选择、命令行、Ex
    • 派生模式:操作符等待模式、插入普通、插入可视、插入选择、替换模式;
    • 其他:Evim

vim

  • 移动光标:

    • 上下左右jkhl 向上下左右移动光标;
    • 0 移动到行首;
    • g0 移动到光标所在行行首;
    • home/end:跳转到 行首/行尾。
    • :n 移动到第n行;
    • gg:回到文件头部;
    • G:到文件底部;
  • 数据操作:

    • 复制
      • yy 或 Y:复制整行文本;
      • [n]yy:复制n行文本
      • y[n]w:复制一{n}个单词;
    • 粘贴(分为:一行数据、一个字段)
      • p:粘贴在当前行下面/粘贴在光标后面;
      • P:粘贴在当前行上面/粘贴在光标前;
    • 删除
      • d[n]w:删除(剪切)1{n}个单词;
      • [n]dd:删除(剪切)1{n}行。
    • 查找
      • :/word 在光标之后查找字符串word,按n向后继续搜索,shift+n向上搜索;
      • :?word 在光标之前查找字符串word,按n向后继续搜索;
    • 替换
      • :1,5s/word1/word2/g,将文档中1-5行word1替换为word2,不加g表示只替换每行第一个word1
      • %s/word1/word2/gi,将文档所有word1替换为word2,不区分大小写;
      • **/表示替换光标后的第一个word,?**表示替换光标前第一个word。
      • 1,5 表示1-5行;
      • %表示所有行;
      • i表示不区分大小写。
    • 撤销和重做
      • u 撤销最近的改变;
      • U 撤销当前行自从光标定位在上面开始的所有改变;
      • ctrl-r 重做最后一次撤销。
  • 一些命令

    • set nu:显示行编号;
    • set nonu:隐藏行编号。
    • set hlsearch: 高亮所有搜索结果
  • 保存文件并退出

    • 在插入模式下按esc退出插入模式
    • :w 保存
    • :q 退出
    • :wq 保存并退出
    • :q! 强制退出
    • :wq! 强制保存并退出

查看文件cat

  • cat是一个文本文件查看和链接工具;
    • cat filename,查看文件内容;
    • cat > filename,编辑一个文件;
    • cat file1 file2 > file3,将几个文件合并为一个文件;
    • 一个 > 表示覆盖,两个 >> 表示追加
  • 常用选项;
    • -n:从1开始对所有行编号并显示在每行开头;
    • -b:对非空行编号;
    • -s:当有多个空行,则只输出一个空行;
    • -E:在每行结尾增加**$**;
    • –help:显示帮助信息;

more

选项:

  • +n,从第n行开始显示;
  • -n,定义屏幕大小为n行;
  • -c,从顶部清屏,然后显示;
  • -s,把连续的多个空行显示为一行。

操作

  • Enter:向下滚动一行;
  • Ctrl+F:下一页;
  • 空格:下一页;
  • Ctrl+B:上一页;
  • b:上一页;
  • =:输出当前行号;
  • q:退出

less

格式:less [option] 文件;

  • -f:强制打开特殊文件,如外围设备代号,目录和二进制文件;
  • -g:只高亮最后搜到的关键字;
  • -i:忽略索索大小写;
  • -N:显示每行行号;
  • -s:当有多个空行在一起时只输出一个空行;
  • -o <文件名>:将less输出的内容保存到指定文件;

操作:

  • /或?:向上或向下搜索字符;
  • b:向上一页
  • 空格f:向下一页
  • u:向上半页
  • d:向下半页;
  • y:向上一行;
  • Enter:向下一行;
  • h:帮助页面;
  • q:退出;

文件摘选head

head用来显示文件开头到标准输出;

head默认显示前10行;

命令格式:head [option]… [file]…

选项:

  • -q:输出时隐藏文件名,head默认不显示文件名;
  • -v:显示文件名;
  • -c num:显示前num个字节;
  • -n num:显示前num行。

tail

显示文件末尾到标准输入,默认为文件后10行;

格式:tail [option]… [file]…

选项:

  • -f:循环读取,对于日志文件的监控有用;
  • -q:不显示文件名,tail默认不显示文件名;
  • -v:显示文件名;
  • -c num:显示文件最后num个字节;
  • -n num:显示文件最后num行;
  • -s:与-f结合使用,表示每次反复的时间间隔休眠s秒;

cut

提取或字段;

1
cut -d: -f1 /etc/passwd # 显示/etc/passwd文件以:间隔的第一列

格式:cut [option]… [file]

选项:

  • -b:仅显示行中指定直接范围的内容;
  • -c [范围]:仅显示行中指定范围的字符;
  • -d:指定字段的分隔符,默认分隔符为TAB;
  • -f [范围]:显示指定第num个字段的内容,可以用逗号隔开显示多个字段;
  • 范围指定:
    • N:每行第N个字节,字符或字段;
    • N-:每行第N个字节、字符或字段到每行的末尾
    • -M:每行的第一个字节、字符或字段到每行的第M个;
    • N-M:每行的第N到第M个字节、字符或字段;

用户

  • Linux是一个多用户的操作系统;
  • 一个系统可以建立多个用户,多个用户可以在同一时间内登录到同一系统执行不同的任务;
  • 每个用户都会分配一个uid。

用户UID

  • UID指的是用户的ID,一个用户UID标识一个给定用户,UID是用户的唯一标识符;
  • 通过UID也可以区分不同用户的类别;
    • 超级用户:也称root,它的UID为0,超级用户拥有系统的完全控制权;
    • 普通用户:也称一般用户,UID在1000-60000之间,普通用户可以对自己目录下文件进行访问,也可对经过授权的文件进行访问;
    • 虚拟用户:也称系统用户,UID为1-999,虚拟用户最大的特点是不提供密码登录系统,存在的目的是方便系统的管理。
  • 通过id命令可以查看不同用户的uid;
    • id [option] [user_name];
      • id命令会输出:用户的有效ID用户所在组的ID用户所在的用户组
      • 有效ID:系统用于区分用户对文件有效权限的UID
      • 真实ID:系统在用户登录系统时对用户进行区分的UID;
      • 通常情况下,有效ID与真实ID相同。
    • 参数:
      • -u,-user,只输出有效的uid;
      • -g,只输出有效的gid
      • -n,-name,对于-ugG选项输出名字而不是数值,需要配合-ugG选项使用;
      • -r,-real,输出真实ID而不是有效id,需要配合-ugG选项使用;
1
2
[root@localhost ~]# id yyn
用户id=1000(yyn) 组id=1000(yyn) 组=1000(yyn),10(wheel)

用户管理命令

创建用户 useradd

创建用户账号,保存在/etc/passwd文件中;

语法:useradd [options] user_name

  • 这里的用户名对大小写敏感,可以出现数字、字母、下划线和减号(减号不能放在首位)。

  • -u,指定用户UID;

  • -o,允许UID重复,需要配合-u属性;

  • -g,指明用户所属基本组,这里可以为组名,也可为GID(组必须存在);

  • -d,指定用户home目录,并自动创建用户home目录;

  • -M,不创建家目录;

  • -s,指明用户的默认shell程序;

    • 默认为/bin/bash。
    • 另外也可以有/usr/sbin/nologin;
  • -D,显示或更改默认配置。

1
2
3
4
5
[root@localhost ~]# cat /etc/passwd | tail -n3
chrony:x:983:980::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
yyn:x:1000:1000:yyn:/home/yyn:/bin/bash
用户名:密码:UID:GID:描述信息:家目录:默认Shell

修改用户 usermod

修改用户账号的各类信息。

语法:usermod [options] user_name

  • -u,修改用户UID;
  • -g,修改用户所属用户组;
  • -l,修改用户账号名称;
  • -L,锁定指定用户,让其无法登录;
  • -d,修改用户home目录;
  • -s,修改用户默认shell程序;
1
2
3
[root@localhost ~]# usermod -u 1003 yyn
[root@localhost ~]# id yyn
用户id=1003(yyn) 组id=1000(yyn) 组=1000(yyn),10(wheel)

删除用户 userdel

删除指定的用户以及该用户相关的文件;

默认只删除用户,不删除用户相关文件。

语法:userdel [options] user_name

  • -f,强制删除用户账号,即使用户当前处于登录状态;
  • -r,删除用户,同时删除与用户相关的所有文件;
  • -h,显示命令帮助信息;

修改密码 passwd

passwd修改用户密码。

语法:passwd [OPTION…] user_name

  • -n,设置修改密码最短天数;
  • -x,修改密码最长天数;
  • -w,设置用户在密码过期前多少天收到警告消息;
    • -1,立即让用户密码过期;
  • -i,设置密码过期多少天后禁用账户;
    • -l,立即锁定一个用户;
    • -u,立即解除用户锁定;
  • -d,删除用户密码,若用户处于锁定状态,会进行解锁;
  • -s,显示用户密码信息。

root用户可以修改任何用户的密码,普通用户只能修改自己的密码。

与密码有关的配置文件都保存在/etc/login.dfs文件中,其中包含PASS_MAX_DAYS、PASS_MIN_DAYS、PASS_WARN_AGE。分别表示:密码最长使用天数、密码两次修改最短间隔天数,密码过期前几天提醒用户。

  • 若最短间隔天数为0,则表示任何时候都可以修改密码;

示例

1
2
3
4
[root@localhost ~]# cat /etc/shadow | grep yyn
yyn:!::0:99999:7:::
# 用户名:密码
# !表示用户没有设置密码。

查看用户密码信息

1
2
[root@localhost ~]# passwd -S yyn
yyn PS 1969-12-31 0 99999 7 -1 (Password set, SM3 crypt.)

创建用户

1
2
3
4
5
6
7
[root@localhost ~]# useradd u1
[root@localhost ~]# useradd u2 -d /home/aaa
[root@localhost ~]# useradd u3 -u 2234
[root@localhost ~]# tail -3 /etc/passwd
u1:x:1004:1004::/home/u1:/bin/bash
u2:x:1005:1005::/home/aaa:/bin/bash
u3:x:2234:2234::/home/u3:/bin/bash

修改用户用户名

1
2
3
[root@localhost ~]# usermod -l u4  u3
[root@localhost ~]# tail -1 /etc/passwd
u4:x:2234:2234::/home/u3:/bin/bash

修改用户家目录

1
2
3
4
[root@localhost ~]# mkdir /home/aaaww
[root@localhost ~]# usermod -d /home/aaaww u4 # 这里应为home,写错了,但是好像成功了
[root@localhost ~]# tail -1 /etc/passwd
u4:x:2234:2234::/home/aaaww:/bin/bash

其他

  • 使用who查看登录用户的信息;
  • id,查看用户信息;

用户组

  • 具有相同特性用户的逻辑集合,通过组的形式使得具有相同特性的多个用户拥有相同的权限,便于管理;
  • 每个用户都拥有自己的私有组;
  • 同一组内所有游湖可以共享该组下的文件;
  • 每个用户组都会被分配一个gid;

用户组GID

与UID类似,GID作为唯一标识符来标示一个用户组;

  • 添加用户时,默认情况下回同时建立一个与用户同名且UID和GID相同的组;
  • GID与UID为0,都表示超级用户组或超级用户;
  • 系统预留一些较前的GID给虚拟用户(也称为系统用户)。

可以通过id [option] [user_name],查看用户组gid及每个用户组拥有的用户数量;

用户组分类

  • 普通用户组:可以加入多个用户;
  • 系统组:一般加入的用户为系统用户;
  • 私有组:也称基本组,在创建用户时,若没有指明所属用户组,则会为该用户定义一个私有的用户组,且用户组名与用户名同名。
    • 私有组在有其他用户加入时,就会变成一个普通用户组。

管理命令

创建组 groupadd

创建一个新的用户组,并将新用户组信息添加到系统文件中;

语法:groupadd [options] group_name

  • -f,强制创建,
    • 若组已存在,则不输出错误信息;
  • -g,为新用户组指定GID;
  • -o,允许创建拥有重复GID的组;
  • -p,为新用户组使用加密过的密码;
  • -r,创建一个系统账户;
  • -h,展示帮助信息;

示例

1
2
3
[root@localhost ~]# groupadd yynGroup
[root@localhost ~]# tail -1 /etc/group
yynGroup:x:2235:

修改用户组 groupmod

修改组gid或名称;

语法:groupmod [options] group_name

  • -g,指定要使用的GID;
  • -o,允许重复GID;
  • -n,修改组名称;
  • -p,修改密码;
  • -h,展示帮助信息。

示例

修改用户组GID

1
2
3
4
5
[root@localhost ~]# id yyn
用户id=1003(yyn) 组id=1000(yyn) 组=1000(yyn),10(wheel)
[root@localhost ~]# groupmod -g 1006 yyn
[root@localhost ~]# id yyn
用户id=1003(yyn) 组id=1006(yyn) 组=1006(yyn),10(wheel)

删除用户组 groupdel

删除用户组;

若用户组存在一些用户,需要先删除用户,才能删除用户组

语法:groupdel [options] group_name

  • -f,强制删除,可以解决一些无法删除的组;
    • 如:一些私有组。
  • -h,展示帮助信息;

关联用户和组 gpasswd

gpasswd添加或删除用户到组中。

语法:gpasswd [option] group_name

  • -a,向组group中添加用户user;
  • -d,从组group中删除用户;
  • -M,向组添加多个成员;
  • -A user1,…,设置组的管理员(可以有多个);
  • -r,删除组密码;
  • -R,限制用户登入组,只有组成员擦可以用newgrp加入该组;
  • -Q,要chroot进的目录

示例

1
2
3
4
[root@localhost ~]# gpasswd -a yyn yynGroup
正在将用户“yyn”加入到“yynGroup”组中
[root@localhost ~]# groups yyn
yyn : yyn wheel yynGroup

用户与组的关联文件

  • /etc/passwd:用户账号信息文件;

    • [root@localhost ~]# tail -1 /etc/passwd
      u2:x:1005:1005::/home/aaa:/bin/bash
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12

      - 用户名:密码:UID:GID:备注信息:HOME目录:默认SHELL

      - /etc/shadow:用户账号信息加密文件;

      - 存储密码信息;

      - 只有root用户具有读权限;

      - ```shell
      [root@localhost ~]# tail -1 /etc/shadow
      u2:!:19289:0:99999:7:::
    • 用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前警告天数:密码宽限时间:账号失效时间:保留字段

    • 密码字段为!或*,表示用户当前无法登录;

用户组关联文件

  • /etc/group:组信息文件;

    • 每一行记录代表一个用户组;

    • 一个组中可以有多个用户,一个用户可以属于不同的组;

    • [root@localhost ~]# tail -1 /etc/group
      yynGroup:x:2235:yyn
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10

      - 组名:组密码:GID:组内用户列表

      - /etc/gshadow:组信息加密文件;

      - 保存组加密信息,如用户组管理密码;

      - ```shell
      [root@localhost ~]# tail -1 /etc/gshadow
      yynGroup:!::yyn
    • 组名:组密码:用户组管理员:用户组附加用户

示例

向用户组添加用户。

1
2
3
[root@localhost ~]# gpasswd -M u1,u2,yyn yynGroup
[root@localhost ~]# tail -1 /etc/group
yynGroup:x:2235:u1,u2,yyn

指定GID,修改GID

1
2
3
4
5
6
[root@localhost ~]# groupadd -g 1234 yynGroup2
[root@localhost ~]# tail -1 /etc/group
yynGroup2:x:1234:
[root@localhost ~]# groupmod -g 2345 yynGroup2
[root@localhost ~]# tail -1 /etc/group
yynGroup2:x:2345:

文件权限

权限

权限时操作系统用来限制对资源访问的一种机制,权限分为:读、写、执行

在Linux系统中,每个文件或目录都具有特定的访问权限,所属用户及所属组;

一个文件或目录有三种权限:文件属主的访问、用户组成员访问和系统中任何用户访问

1
2
3
4
5
6
7
8
9
[root@localhost ~]# ls -l
总用量 44
drwxr-xr-x. 2 root root 4096 10月 24 06:53 d
drwxr-xr-x. 2 root root 4096 10月 24 06:56 d2

#文件类型权限 连结数 所有者 所属组 文件容量 最后修改日期 文件名
# 其中
# drwxr-xr-x
# 第一位是文件类型,剩余9位是文件权限位;

连结数

  • 若是一个文件,则表示当前文件的连结数量;
  • 若是一个目录,则表示目录下的子目录数量,其中另包含“.”和”..”两个;

文件容量

  • 对于一个文件,则表示文件字节大小;
  • 对于一个目录,则表示目录符的大小,不包含其中的文件;

文件名

  • 不同类型文件有不同颜色;
    • 白色,普通文件;
    • 蓝色,目录文件;
    • 绿色,可执行文件;
    • 青色,软链接文件;
    • 红色,压缩文件;

文件类型

  • -:普通文件,除去其他6种类型文件;
  • d:目录
  • b:块设备文件,可随机存取装置;
  • c:字符设备文件 -> 键盘、鼠标等一次性读取装置;
  • l:符号链接文件;
  • p:命名管道文件(piep)
  • s:套接字文件(socket)

b和c一般出现在/dev目录下;

权限位说明

drwxr-xr-x

文件类型 属主权限 属组权限 其他用户权限
位置 0 1 2 3 4 5 6 7 8 9
表示 d r w x r - x r - x
描述 目录文件 读 写 执行 读 写 执行 读 写 执行
 评论