Linux学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习相关的知识,希望对你有一定的参考价值。

前言:接着上一篇Linux学习(一)

1.用户,组和权限
2.文本处理工具
3.vim文本编辑器
4.shell脚本编程基础

一,用户,组和权限

1.用户

1.管理员:root,0

 普通用户:1-65535
 shell  交互式登录
          非交互式登录   /etc/nologin

2.有关用户和用户密码的基本命令

 vim  查看修改,有颜色

技术分享图片

 cat   查看

技术分享图片

 cat/etc/passwd 查看用户信息,显示7列,以 : 分隔

技术分享图片

登录名:密码:UID:GID:GECOS:家目录:登录的shell   
GID:主要组的组id,附加组的在group文件中
shell:空白默认为最传统的 sh shell

 cat/etc/shadow   查看用户密码,显示9列
 pwconv   将passwd当中的密码映射到了 /etc/shadow
                映射后的passwd     $id$salt$加密后的字符串
                                                salt不一样,即使id一样,密码字符串不一样

技术分享图片

 vim /etc/shadow-
 pwunconv 取消映射,密码仍然放在/etc/passwd

技术分享图片

 用户名:密码:密码上次修改的日期:密码的最小存活期:密码的最大存活期:密码过期前几天提醒:密码过期后不改密码触发用户过期的时间:用户过期时间:保留位
 密码上次修改的日期:距离到1970.1.1的天数(Linux开发出来的日期)
 最小存活期:存活期前不能更改密码    "  " date +%s

2.组

1.有关组和组密码的基本命令

 cat /etc/group    组   4列   

技术分享图片

 组名:组密码:GID:组成员
 组密码:当临时需要获取组信息,进入时需要输入密码
               通常没有密码需要创建,没有密码无法临时加入,只能root永久加入
 组成员:附加组成员

 /etc/gshadow组密码
 grpconv 将组密码映射到了/etc/gshadow
 grpunconv 取消组密码的映射

技术分享图片

 组名:组密码:管理员:组成员

3.有关用户和组的其他命令

1.用户

 useradd/adduser 创建用户
                  -u  指定UID   默认从1000开始往后

技术分享图片

                    -o 与 -u 配合,不检查UID的唯一性

技术分享图片

 xiaohuihui和huitailang 同一个UID,顺序优先先创建的
                  -g   指定用户的主要组为某个已存在的组,可以指定GID也可以指定组名
                  -G  指定附加组 以逗号为间隔可以同时指定多个,组必须事先存在,可以指定GID也可以指定组名。
                  -c   注释信息
                  -d   指定目录路径 ,如不指定默认在/home下与用户同名。指定时注意,目录名需已存在,基名不存在。
                  -s   指定登录shell如下
                  -N  不创建私用组做主组,使用users组做主组
                  -r   创建系统用户 (centos 6及之前的版本 < 500, centos 7 < 1000)

 usermod  修改用户信息
                  -u NEWUID 用户名  修改用户的uid
                  -g NEWGID 用户名  修改用户的主要组  可以指定组名,也可以指定GID
                  -G GID或组名[,组名]  用户名 设定用户的附加组为哪些组,这前的附加组信息被覆盖
                  -a 与-G 结合,-aG   使用可以增加用户的附加组,而不会影响之前的附加组
                  -s shell名 用户名   修改用户的Shell=chsh  -s  shell 用户名
                  -c "描述信息"  设置用户的描述信息   =chfn
                  -d /path 用户名  修改用户的家目录,新家目录不会自动创建
                  -m                      把用户原来家目录下的文件移到新的家目录
                  -d  -m                 若要创建新家目录并移动原家数据,同时使用-m选项  

技术分享图片

                  -l newname 用户名   修改用户的名称
                  -L    lock指定用户,在/etc/shadow 密码栏的增加 !   等同于passwd -l
                  -U    unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉  等同于passwd -u
                  -e YYYY-MM-DD     指明用户账号过期日期
                  -f      设定非活动期限

  userdel  删除用户
                  -r      删除用户名连同家目录及邮箱文件一起删除

2.组

  groupadd  创建组
                  -g GID 组名  创建组

  groupmod  修改
                 -n newname 组名  修改组名
                 -g newgid 组名      修改组id

  groupdel    删除组
                 -r  删除组名连同成员所有的信息
  groupmems   对组成员进行操作  仅root执行
                 -g 组名 -a 用户名  将某用户以附加组方式加入到某组当中  
                 -g 组名 -d 用户名  将某用户从指定组当中踢出
                 -g 组名 -p              清空所有组成员
                 -g 组名 -l               查看指定组有哪些成员(仅显示附加组)
groups 用户名 
                  查看指定用户属于哪些组(包含主组和附加组)
   newgrp 组名(普通用户执行)  
                 非附加组成员的普通用户在正确输入组密码后可以使用该命令临时变更主要组.
                 附加组成员的普通用户无需输入密码可以使用该命令临时变更主要组. 原主要组临时变成附加组

    passwd username    修改密码  
                 普通用户改密码 需要先输入旧密码 不符合要求的密码被拒绝重新输入
                 root改密码          直接输入新密码  任意设置密码       
    passwd  -l  锁定用户  实际就是在密码位前加!!

技术分享图片

                  -u  取消用户锁定 
                  -e  强制用户下次登录时更改密码
                  -n  指定最短使用期限
                  -x  最大使用期限
                  -w 提前多少天开始警告
                  -i   非活动期限
                  --stdin username  从标准输入接收用户密码 显示密码 只输入一次 只有root可以

技术分享图片

     gpasswd  设置组密码  管理员可以执行
                  -a 用户名 组名   将某用户以附加组方式加入到某组当中  管理员可以执行
                  -d 用户名 组名   将某用户从指定组当中踢出                    管理员可以执行
                  -M 用户名[,用户名...]  组名 设置某组的用户列表         仅root执行
                  -A 用户名[,用户名...]  组名  设置某组的管理员列表     仅root执行
     组管理员在不是组成员的情况下,仅能修改组密码,和将其他人加入组和踢出组,但并不具有组成员的权限

3.其他

     id  -u   显示UID
          -g   显示GID
          -G  显示用户所属的组的ID
          -n   显示名称,需配合-u -g -G使用

技术分享图片

      su   username     表示非登录式切换     需要输入密码
      su - username     表示登录式切换
      su -                      表示登录root
      当前用户是root时,切换到其他用户不要密码

     chage (修改文件 不建议使用 容易出错)

技术分享图片

             -d     上一次修改时间
             -E     密码过期时间
             -I(大写i)      密码过期之后账户过期
             -m    最小存活期
             -M    最大
             -W    提醒
             -l       显示密码策略   查看修改密码信息

技术分享图片

                示例:
                chage -d 0 tom 下一次登录强制重设密码
                chage -m 0 –M 42 –W 14 –I 7 tom
                chage -E 2016-09-10 tom

4.权限

1.默认权限

       chown  更改文件的所属人,只有root可以操作
                用户名 filename   只更改owner
                用户名.组名 filename 或 用户名:组名 filename  同时更改owner和group  
                如果.或:前省略,则只改group
                -R 递归

技术分享图片

         chgrp  组名  filename
              文件的owner可以使用chgrp修改文件的group,但该owner一定要属于目标group
                     -R  递归

技术分享图片

         权限的表示形式

技术分享图片

     -owner-group-other
     read-r  write-w  exe-x
     d  表示目录

          chmod  修改权限 
               r:4              w:2             x:1
                         可以随意组合

技术分享图片

               -R 递归
               X:只给目录及已有部分x权限的文件加上x权限,不给三个权限位完全没有x的文件加x

文件权限                         
   当仅r权限作用在文件上的时候,用户可以读取该文件的内容:cat less more head tail
   当仅w权限作用在文件上的时候,用户可以修改文件的内容:>>
   当仅x权限作用在文件上的时候,无作为.
   当rw权限作用在文件上的时候,用户即能读与能修改:cat less more head tail vim nano > >>
   当rx权限作用在文件上的时候,用户可以执行该文件
   当wx权限作用在文件上的时候,权限等同于仅w权限.
 文件的常见权限是r--  rw-   rwx
目录权限
   当仅r权限作用在目录上的时候,用户可以短列出目录下的文件名.
   当仅w权限作用在目录上的时候,无作为.
   当仅x权限作用在目录上的时候,用户可以进入该目录,并且在知道具体文件名且具有相关权限的情况下,可以访问子文件.
   当rw权限作用在目录上的时候,权限等同于仅r权限
   当rx权限作用在目录上的时候,用户进入,长列出.
   当wx权限作用在目录上的时候,用户可以进入且可以创建及删除文件.但不能使用文件名通配符
 目录的常见权限r-x  rwx

2.特殊权限

      工具和文件都拥有权限
      which  查看绝对路径

技术分享图片

      对工具拥有权限对文件没有权限不能查看文件

技术分享图片

        suid权限(文件),可执行的二进制文件,可以临时调用所属人的权限
                    chmod u+s  临时调用文件所属人的权限

技术分享图片

          sgid权限(目录)目录所属组的权限
                        chmod g+s  对目录操作了sgid权限,任何人在该目录下所创建的文件所属组都与该目录的所属组相同
          sticky权限      进行删除操作的权限
                        chmod o+t  该目录下的文件只能root,目录的所属人和文件的所属人删除
          权限位上原本有x的,加上特殊权限时,为小写
                         原本没有x的,加上特殊权限时,为大写

技术分享图片

           实验:刘备关羽张飞三个用户有一个共享目录叫shuguo,要求三人的主组不一样的情况下,三人在Shuguo目录下所创建的文件,彼此之间可以读取及修改,但不能删除其他人创建的文件

技术分享图片
技术分享图片
技术分享图片

             验证

技术分享图片
技术分享图片

            文件特定权限
                         chattr +a    不能删除,改名,修改,可以追加
                                   +i     不能删除,改名,修改,追加

技术分享图片
技术分享图片
技术分享图片

                          lsattr           查看权限及属性

技术分享图片

3.ACL

            acl:除了文件的所属人,所属组,其他,还可以进行更多的设置用户权限
            acl生效顺序:所有者,自定义用户,自定义组,其他人
            CentOS7中的所有文件系统是划分的文件系统均已默认开启acl 
            CentOS6随着操作系统安装所有文件系统是话费的文件系统均已默认开启acl

技术分享图片

     为多用户或者组的文件和目录赋予访问权限rwx
             getfacl      查看权限信息
             setfacl  -m  设置user的acl权限
                          -x    删除设置的user的acl权限

技术分享图片技术分享图片

              setfacl  -b    删除权限包括acl权限属性

技术分享图片
技术分享图片

               setfacl  -m  m   设置权限上限阀值,修改权限无法超过上限阀值,不显示但是是有效的

技术分享图片

               setfacl  -d -m
                           -m d        设置默认权限

技术分享图片技术分享图片

            setfacl  -k      清除默认权限

技术分享图片

            setfacl  -Rm   递归设置,设置的目录及该目录下的所有目录和文件都被设置权限

技术分享图片技术分享图片

                setfacl  -M   file1   file2     file1是写有权限的文件,把写有的权限设置file2

技术分享图片
技术分享图片
技术分享图片
技术分享图片

                setfacl  -X   file1    file2     file1是写有取消权限的文件,对file2进行取消权限设置

        acl权限的备份及还原

技术分享图片技术分享图片

     umask值
       umask值可以存储在/etc/bashrc当中,使所有用户均被设置
                 也可以存在~/.bashrc只对某用户设置
    文件最高权限  666
        目录最高权限  777
        默认权限=最高权限-umask
        文件权限,如果umask 有奇数,也就是含有-x ,计算完要加1

技术分享图片

5.其他

    手工创建家目录的方法
            mkdir /home/username
            chmod 700 /home/username/
            cp -r /etc/skel/.[^.]*  /home/username/   
       (..为上一级目录,/etc/skel   新创建的用户的初始化环境变量脚本都在这个目录下)
            chown -R username.usename /home/username

技术分享图片

        cat /etc/passwd |grep username  检索
                                  |grep -E "maidou|biubiu"  同时都检索

技术分享图片
技术分享图片
技术分享图片

2.文本处理工具

1.各种文本工具来查看、分析、统计文本

           cat  查看
                cat  -E  显示换行符$

技术分享图片

                cat  -n 输出的结果前显示行号

技术分享图片

                cat  -v 显示^M,即windows的换行符
                 cat  -T 显示^I     即tab
                cat  -A = -EvT                                          
                cat  -b 输出的结果前显示行号,非空行不参与排列

技术分享图片

                cat  -s 将连续的空行压缩为一行

技术分享图片

           head   向前截取
                  head  -c   N    指定截取前N字节
                  head  -n   N    指定截取前N行
                head  -N     指定获取N行

技术分享图片技术分享图片

                         tail  向后截取
                              tail  -c N    指定截取后N字节
                              tail  -n N    指定截取后N行
                            tail  -N     指定截取N行
                            tail  -f    跟踪显示文件新追加的内容,常用于日志监控

技术分享图片
技术分享图片技术分享图片技术分享图片技术分享图片

                         cut  切割
                             cut  -d    指明分隔符
                             cut  -f  N ; N,N ; N-N    指明字段
                             cut  -c    按字符一个一个切割
                             cut  --output-delimiter="  "     指定输出分隔符

技术分享图片技术分享图片

                            paste    合并俩个文件,同行的内容在一行显示
                                  paste  -d 分隔符:指定分隔符,默认用TAB
                                  paste  -s : 所有行合成一行显示

技术分享图片技术分享图片技术分享图片

                    wc   文本数据统计
                       wc  -l     行数
                       wc  -w    单词总数
                       wc  -c    字节总数
                       wc  -m    字符总数

技术分享图片

                   sort     排序
                        sort  -r 反方向(由上至下)整理
                        sort  -n    按数字大小整理

技术分享图片技术分享图片

                        sort  -f 忽略(fold)字符串中的字符大小写

技术分享图片

                        sort  -u  (独特, unique)删除输出中的重复行

技术分享图片

                        sort  -t c   使用c做为字段界定符
                        sort  -k X  列

技术分享图片

                    uniq   删除重复的行数
                         uniq  -c: 显示每行重复出现的次数
                         uniq  -d: 仅显示重复过的行
                         uniq  -u: 仅显示不曾重复的行
                连续且完全相同方为重复

技术分享图片技术分享图片

                    diff f1 f2     比较2文件之间的区别

技术分享图片

                     patch  复制其他文件进行的改变

技术分享图片技术分享图片

2.grep

            grep       关键字高亮显示
            grep  -v     反向搜索
            grep  -i     忽略大小写
            grep  -n    显示行号
            grep  -c    不显示搜索结果,仅显示匹配的行数
            grep  -o    仅显示匹配到的字符串
            grep  -q    静默输出
            grep  -A  N    显示搜索行及其向下相临的N行
            grep  -B  N    显示搜索行及其向上相临的N行
            grep  -C  N    显示搜索行及其向上和向下相临的N行
            grep  -e          -e   多个选项间or关系
            grep  -w   匹配整个单词

技术分享图片技术分享图片技术分享图片技术分享图片技术分享图片技术分享图片

3.正则表达式

元字符

技术分享图片

位置锚定:定位出现的位置
         ^    行首锚定,用于模式的最左侧
         $    行尾锚定,用于模式的最右侧
         ^    ..     $    用于模式匹配整行
         ^$ 空行
         ^[[:space:]]\*$    空白行
         \<   词首锚定,用于单词模式的左侧
         \>   词尾锚定;用于单词模式的右侧
         \<  ..  \>    匹配整个单词

分组
         \(  ..  \) 将一个或多个字符捆绑在一起,当作一个整体进行处理,如: \(root\)
         \1, \2, \3, ..    分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中
         \1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
         后向引用:引用前面的分组括号中的模式所匹配字符, 而非模式本身

技术分享图片

           \|     或者

技术分享图片

4.扩展正则表达式

元字符

技术分享图片

  egrep
        egrep=grep  -E
        fgrep=grep  -F   不支持正则表达式

3.vim文本编辑器

      vim
         三种主要模式
                 命令模式 (default): 移动光标,复制,剪切,粘贴,撤销,重做,搜索,进入其他模式
                       移动光标:                 k
                                                             h    j     l
                               配合 !h,!l, ! j, ! k可一次性移动 ! 个字符
                               w   跳到下一个单词的词首
                               b   跳到上一个单词的词首
                               H   跳到当前页首
                               M   跳到当前页中
                               L   跳到当前页尾
                               gg   跳到整个文件的首行
                               G   跳到整个文件的末行
                               ^   移到非空格开头的行首
                               $   移到行尾
                               !G   跳到指定 ! 行,或退出模式下 : !
                         r   替换一个字符
                         d   剪切
                               dd   剪切当前行
                               !dd   剪切 ! 行
                                dw   剪切一个单词
                                d^   从光标所在处剪切到行首
                                d$或D   从光标所在处剪切到行尾
                          y   复制
                               yy或Y   复制当前行
                               ! yy   复制 ! 行
                               yw   复制一个单词
                               y^   从光标所在处复制到行首
                               y$   从光标所在处复制到行尾
                          p   粘贴
                               p   当前行向下粘贴或光标所在处向后粘贴
                               P   当前行向上粘贴或光标所在处向前粘贴
                          替换模式 R进入 Esc退出
                          从命令模式进入插入模式
                          插入模式:文本编辑
                               i   光标在哪从哪进入
                               I   光标移至行首同时进入插入模式
                               a   光标向后移一个字符同时进入插入模式
                               A   光标移至行尾同时进入插入模式
                               o   光标向下插入一新行同时进入插入模式
                               O   光标向上插入一新行同时进入插入模式
                          退出模式:保存、退出
                                w   保存
                                q    退出
                                q!   强制退出
                                wq或x   保存并退出
                                w!当前用户为该文件所属人时,如果该文件为read only,可加上!强制保存。
                           在退出模式下返回命令模式EscEsc或Enter
                                r /path/filename    读取另一个文件的内容并将输出结果写入文件
                                w /path/filename   另存为(确认当前用户对该路径中的最后一级目录有wx权限)
                                ! command    执行某条命令,将输出结果显示在终端上
                                r! command   执行某条命令,在光标所在的当前行向下插入新行并将输出结果输入
                                .! command   执行某条命令,替换光标所在的当前行并将输出结果输入
                            搜索
                                ?关键字
                                      n向上找      N向下找

以上是关于Linux学习的主要内容,如果未能解决你的问题,请参考以下文章

[linux][c/c++]代码片段01

[linux][c/c++]代码片段02

IOS开发-OC学习-常用功能代码片段整理

java SpringRetry学习的代码片段

python 机器学习有用的代码片段

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?