第三周 文件查看命令及用户管理命令

来源:互联网 发布:淘宝上面没有延长收货 编辑:程序博客网 时间:2024/06/06 00:03

第三周 文件查看命令及用户管理命令

摘要

1、描述Linux上的文件管理类命令并详解。2、描述用户管理。

一、文本查看及处理工具命令

  • cut:文本截取工具
        语法:            cut OPTION... [FILE]...       命令选项:                    -d CHAR:以指定的字符为分隔符;                    -f FIELDS:挑选出的字段;                            #:指定的单个字段;                            #-#:连续的多个字段;                            #,#:离散的多个字段;        例如:                [root@localhost ~]# cat /etc/passwd                               root:x:0:0:root:/root:/bin/bash                               bin:x:1:1:bin:/bin:/sbin/nologi                [root@localhost ~]# cut -d: -f1,2-4,7 /etc/passwd                               root:x:0:0:/bin/bash                               bin:x:1:1:/sbin/nologin                               daemon:x:2:2:/sbin/nologin                               adm:x:3:4:/sbin/nologin                               lp:x:4:7:/sbin/nologin                               sync:x:5:0:/bin/sync                               shutdown:x:6:0:/sbin/shutdown
  • sort: 排序命令,对内部文件不造成影响,以ascii排序
        语法:                    sort  [OPTION]...  [FILE]...    命令选项:                    -n:基于数值大小而非字符进行排序;                    -t CHAR:指定分隔符;                    -k #:用于排序比较的字段;                    -r:逆序排序;                    -f:忽略字符大小写                    -u:重复的行只保留一份;                           复复行:连续且相同;        例如:                    [root@localhost ~]# cut -d: -f1,7 /etc/passwd |sort -k2 -n                                        aaa:/bin/bash                                        abrt:/sbin/nologin                                        adm:/sbin/nologin                                        avahi-autoipd:/sbin/nologin                    [root@localhost ~]# cut -d: -f1,7 /etc/passwd |sort -k2 -n |wc -l                                             4                                                        
  • uniq:报告或移除重复的行
        语法:                uniq [OPTION]... [INPUT [OUTPUT]]    命令选项:                -c:显示每行的重复次数;                -u:仅显示未曾重复过的行;                -d:仅显示重复过的行;    例如:               [root@localhost ~]# cut -d: -f1,7 /etc/passwd |sort -k2 -n | uniq -c                          1 aaa:/bin/bash                          1 abrt:/sbin/nologin                          1 adm:/sbin/nologin                          1 avahi-autoipd:/sbin/nologin                          1 bin:/sbin/nologin                          1 chrony:/sbin/nologin
  • diff:compare files line by line 逐行比较两个文件(目录)不同之处的
        语法:                    diff [OPTION]... FILES                    diff  /PATH/TO/OLDFILE  /PATH/TO/NEWFILE > /PATH/TO/PATCH_FILE    命令选项                    -u   更加详细的表示差异   -#   +#  差异  有上下文连接,即显示要修改的行的上下文,默认为3行
    • patch 向文件打补丁
         命令选项:                -R  反向打补丁    patch [OPTIONS] -i /PATH/TO/PATCH_FILE /PATH/TO/OLDFILE    patch   /PATH/TO/OLDFILE   <   /PATH/TO/PATCH_FILE
    • which
       显示文件完成路径 which - shows the full path of (shell) commands.   which [options] [--] programname [...]   ~]# which which        alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'       /usr/bin/alias        /usr/bin/which --COMMAND-alias   忽略别名
    • whereis
       显示文件的路径,手册页,  -b  只看二进制文件路径  -m 只看使用手册文件路径                      
    • who
         查看登录当前用户的相关信息   -b  显示系统此次启动时间   -d  显示此次死亡进程    -l  显示登录进程    -u 比who多显示端口号    -r  运行级别
    • w
         查看当前用户和其现阶段工作内容
    • more命令:

      more FILE  翻盘至文件尾部后自动退出
    • less命令 :

      less FILE
    • head命令:

      查看文件前N行   head -NUM  /xxx   默认查看前10行
    • tail

      命令:查看文件后N行    tail    -NUM /xxx 默认查看前10行                    -f   查看文件尾部结束后不退出,跟随显示新增的行
    • stat命令 :

      显示文件/文件系统的状态      /]# stat /tmp/ks-script-x4E8mp           文件:"/tmp/ks-script-x4E8mp"          大小:813          块:8          IO 块:4096  普通文件          设备:fd00h/64768d    Inode:956087      硬链接:1          权限:(0700/-rwx------)  Uid:(  0/ root)  Gid:(  0/    root)          环境:system_u:object_r:initrc_tmp_t:s0          最近访问:2017-10-15 17:53:52.464998198 +0800          最近更改:2017-10-15 17:53:52.455998198 +0800          最近改动:2017-10-15 17:53:52.455998198 +0800 

练习:

1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。

[test1@localhost ~]$ who | cut -d " " -f 1 | sort -uroottest1test3

2、取出最后登录到当前系统的用户的相关信息

[test1@localhost ~]$ whoroot     tty1         2017-12-17 21:36root     pts/0        2017-12-17 21:36 (192.168.23.1)test3    pts/1        2017-12-17 21:48 (192.168.23.1)test1    pts/2        2017-12-17 21:49 (192.168.23.1)[test1@localhost ~]$ who | tail -1 test1    pts/2        2017-12-17 21:49 (192.168.23.1)

3、取出当前系统上被用户当作其默认shell的最多的那个shell

[test1@localhost ~]$ cat /etc/passwd |cut -d : -f 7 | uniq -c | sort -r | tail -1 17 /sbin/nologin

4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中

[test1@localhost ~]$ cat /etc/passwd |sort -t : -k3 -n |tail -10 | tr 'a-z' 'A-Z' |tee /tmp/maxusers.txtAVAHI-AUTOIPD:X:170:170:AVAHI IPV4LL STACK:/VAR/LIB/AVAHI-AUTOIPD:/SBIN/NOLOGINABRT:X:173:173::/ETC/ABRT:/SBIN/NOLOGINCHRONY:X:997:996::/VAR/LIB/CHRONY:/SBIN/NOLOGINLIBSTORAGEMGMT:X:998:997:DAEMON ACCOUNT FOR LIBSTORAGEMGMT:/VAR/RUN/LSM:/SBIN/NOLOGINPOLKITD:X:999:998:USER FOR POLKITD:/:/SBIN/NOLOGINMAGE:X:1000:1001::/HOME/MAGE:/BIN/BASHAAA:X:1001:1002:AVCA:/HOME/AAA:/BIN/BASHTEST1:X:1002:1003::/HOME/TEST1:/BIN/BASHTEST2:X:1003:1004::/HOME/TEST2:/BIN/BASHTEST3:X:1004:1005::/HOME/TEST3:/BIN/BASH[test1@localhost ~]$ cat /tmp/maxusers.txtAVAHI-AUTOIPD:X:170:170:AVAHI IPV4LL STACK:/VAR/LIB/AVAHI-AUTOIPD:/SBIN/NOLOGINABRT:X:173:173::/ETC/ABRT:/SBIN/NOLOGINCHRONY:X:997:996::/VAR/LIB/CHRONY:/SBIN/NOLOGINLIBSTORAGEMGMT:X:998:997:DAEMON ACCOUNT FOR LIBSTORAGEMGMT:/VAR/RUN/LSM:/SBIN/NOLOGINPOLKITD:X:999:998:USER FOR POLKITD:/:/SBIN/NOLOGINMAGE:X:1000:1001::/HOME/MAGE:/BIN/BASHAAA:X:1001:1002:AVCA:/HOME/AAA:/BIN/BASHTEST1:X:1002:1003::/HOME/TEST1:/BIN/BASHTEST2:X:1003:1004::/HOME/TEST2:/BIN/BASHTEST3:X:1004:1005::/HOME/TEST3:/BIN/BASH

5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分

[test3@localhost ~]$ ifconfig eno16777736 | head -2 | tail -1    inet 192.168.23.128  netmask 255.255.255.0  broadcast 192.168.23.255

6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中

[test3@localhost ~]$ ls /etc/*.conf |tr 'a-z' 'A-Z' | tee /tmp/etc.conf/ETC/ASOUND.CONF/ETC/CHRONY.CONF/ETC/DNSMASQ.CONF/ETC/DRACUT.CONF/ETC/E2FSCK.CONF

7、显示/var目录下一级子目录或文件的总个数

[test3@localhost ~]$ ls /var/ | wc -w29

8、取出/etc/group文件中第三个字段数值最小的10个组的名字

[test3@localhost ~]$ cat /etc/group | sort -t : -k3 -n | head -10 | cut -d : -f 1rootbindaemonsysadmttydisklpmemkmem

9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中

[test3@localhost ~]$ cat /etc//fstab /etc/issue > /tmp/etc.txt

二、用户管理命令

1、用户、用户组、权限管理:

Multi-tasks    Multi-Users    多用户、多任务1)每个使用者:用户ID、密码     Authentication  认证机制       Authorization    授权机制              3A机制     Audition            审计机制         组:用户组,用户容器2)用户类别:     管理:                 普通用户:  系统用户     登录用户          用户表示: UserID    UID               16bits 二级制数字:0-65535               管理员: 0               普通用户:1-65635                 系统用户:1-499(CentOS6) 1-999(CentOS7)                 登录用户:500-60000(CentOS6) 1000-60000(CentOS7)               名称解析:名称转换的过程                 Username<-->UID                 根据名称解析库进行:   /etc/passwd3)组:      组类别(1):         管理员组         普通用户组:               系统组                   登录组         组标识: GroupID   GID                                     管理员: 0               普通用户:1-65635               系统用户:1-499(CentOS6) 1-999(CentOS7)               登录用户:500-60000(CentOS6) 1000-60000(CentOS7)               名称解析: /etc/group    组类别(2):              用户的基本组              用户的附加组    组类别(3):                  用户的私有组:组名同用户名,且只包含一个用户              用户的公共组:组内包含多个用户4)认证信息:     通过比对事先存储的,与登录时提供的信息是否一致         password:                 /etc/shadow     /etc/gshadow  数据密码库                          密码的使用策略:                 1、使用随机密码                 2、最短长度不要低于8位                 3、应该使用大写字母、小写字母、数字和标点符号之中的至少三类                 4、定期更换         加密算法:                 1、对称加密:加密和解密使用同一个密码                 2、非对称加密:加密和解密使用的一对密钥                             密钥对儿:    公钥         私钥                 3、单向加密: 只能加密,不能解密,提取数据特征码                               定长输出   /]# echo "abcABC1" | md5sum                               雪崩效应                             算法: md5  message digest    ,128bits                                      sha   secure hash  algorithm   160bits   哈希算法                                                    sha1sum    sha224sum  sha256sum  sha384sum  sha512sum                                    1: md5     2: sha1   3: sha224   4:sha256   5:sha384  6: sha512                            在计算之时加salt ,添加的随机数:                                        /etc/passwd:用户的信息库          ntp:x:38:38::/etc/ntp:/sbin/nologin          name:password:UID:GID:GECOS:directory:shell                GID:用户所属的主组ID                GECOS:用户的注释信息                directory:用户的home路径                shell:用户登录时默认的shell路径    /etc/shdow:用户的密码库                root:$6$kAccl0KZ74DBvwrJ$OsVHXkxJw1IDRxwzzzZ7m71u3.eFZsAcM1Hsw1SjTTp5u70ldBqkufb9uKuqVruw8E0qQKQgg7pp7DSQJNE1G.:17454:0:99999:7:::解析:  $6$   代表  sha512                  第三个$后才是真的密码串      用户:密码:最后一次更改密码的天数(从1970.01.01开始到今天):密码的最短使用期限: 密码的最长使用期限:密码警告期段:密码有效期间:账户过期日期:保留字段      /etc/group :            root:x:0:            group_name:password:GID:user_list                user_list:该组的用户成员,以此组为附加组的用户的用户列表

2、用户管理命令

进程以其发起者的身份运行,进程对文件的访问权限,取决于发起此进程的用户的权限;系统用户:为了能够让那些后台进程或服务类进程以非管理员身份运行,通常需要为此创建多个普通用户,该类系统从不登录系统1)groupadd命令:添加组        groupadd [选项] group               -g, --gid GID          手动指定GID,默认为上个组的GID+1               -r, --system            创建系统组,随机器开启的进程为后台进程    groupmod命令:修改组        groupmod [选项] GROUP                -g, --gid GID   修改GID                -n, --new-name NEW_GROUP   修改组名    groupdel命令: 删除组        groupdel [选项] GROUP2)useradd命令: 创建用户  (创建新用户若没指定组,则创建和用户名一样的组)         useradd [选项] 登录         useradd -D         useradd -D [选项]                -u, --uid UID     指定UID,默认为上个组的UID+1                -g,--gid GROUP  指定基本组ID,此组必须事先存在                -c, --comment COMMENT  指定注释信息                -G, --groups GROUPS  指明用户所属的附加组,多个组之间用逗号分隔                -d, --home-dir HOME_DIR 以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名实现的,指定的家目录路径如果事先存在,则不会为用户复制配置环境配置文件(隐藏文件)。                -s, --shell SHELL  指定用户的默认shell,可用的所有shell列表存储在e/etc/shells文件                -r, --system   创建系统用户                -M, --no-create-home        不创建用户的主目录                -f, --inactive INACTIVE      密码过期后,账号被彻底禁用之前的天数, 0表示立即禁用,-1表示禁用这个功能                -D, --defaults        显示或更改默认的 useradd 配置                                 useradd -D   显示创建用户的默认配置,修改的结果保存于/etc/default/useradd文件中                  注意:创建用户时的诸多默认设定配置文件为/etc/logic.defs        usermod命令:修改用户属性                usermod [选项] 登录                -u, --uid UID             修改用户的ID号                -g, --gid GROUP      修改用户的基本组,原本的组必须存在                -G, --groups GROUPS 修改用户的所属的附加组,原来的附加组会被覆盖                -a, --append GROUP  与-G一同使用,用于添加多个附加组                -c, --comment       修改注释信息                -d, --home HOME_DIR   修改用户的家目录,用户的原来家目录的信息不会被复制到新的家目录                -m, --move-home      只能与-d一同使用,用于将原来的家目录文件一起移动至新的家目录                -l, --login LOGIN   修改用户名                -s, --shell SHELL  修改用户的默认shell                -L, --lock   锁定用户的密码(禁止用户登录),即在用户原来的密码串之前添加一个“!”                -U, --unlock      解锁用户的密码,删除之前密码串的“!”       userdel命令:删除用户的命令                userdel [选项] 登录                -r:删除用户时一并删除其家目录3)passwd命令:            passwd  [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays]  [-i inactivedays] [-S] [--stdin] [username]            1)passwd:修改用户自己的密码            2)passwd USERNAME:修改指定用户的密码,仅root有此权限               -l, --lock              锁定指名帐户的密码(仅限 root 用户)               -u, --unlock            解锁指名账户的密码(仅限 root 用户)               -d, --delete            删除已命名帐号的密码(只有根用户才能进行此操作)               -e, --expire      过期期限,表示日期               -i, --inactive=DAYS    当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)               -x, --maximum=DAYS      密码的最长有效时限(只有根用户才能进行此操作)               -n, --minimum=DAYS      密码的最短有效时限(只有根用户才能进行此操作)               -w, --warning=DAYS      在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)    警告期限                                --stdin       从标准输入读取令牌(只有根用户才能进行此操                             用法: echo "PASSWIRD" | passwd --stadin USERNAME4)gpasswd命令:默认给组定义密码        组密码路径     /etc/gshadow            gpasswd [选项] group            -a, --add USER   向组中添加用户            -d, --delete USER  从组中移除用户5)newgrp命令:临时切换指定的组为基本组            newgrp [-] [group]                -  会模拟用户重新登录以实现重新初始化其工作环境6)chage命令:更改用户密码过期信息            chage [选项] 登录名              -d, --lastday 最近日期  将最近一次密码设置时间设为“最近日期”              -E, --expiredate 过期日期    将帐户过期时间设为“过期日期”              -W, --warndays 警告天数      将过期警告天数设为“警告天数”               -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”                 -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”7)id命令: 显示实际和有效的ID            id [OPTION]... [USER]               -u, --user 仅显示有效的UID               -g, --group 仅显示用户基本组的ID               -G, --groups  仅显示用户所属的所有组的ID               -n, --name  显示名称而非ID8)su命令 :用户切换命令           登录式切换 :会通过读取用户的shell配置文件,重新初始化                su - USERNAME  或者  su -l USERMANE           非登录式切换 :不会读取目标配置文件,进行初始化                su USERNAME            注意: 管理员可无密码切换至其他用户,其他用户切换至任何用户都需要提供密码                  -c  'COMMAND'  仅以指定用户的身份运行此处指定的命令

练习:

1)创建组distro,其GID为2016    [root@localhost ~]# groupadd  -g 2016 distro    [root@localhost ~]# cat /etc/group          /*查看组*/2)创建用户mandriva, 其ID号为1005;基本组为distro;    [root@localhost ~]# useradd -u 1005 -g distro mandriva     [root@localhost ~]# cat /etc/passwd | grep mandriva        mandriva:x:1005:2017::/home/mandriva:/bin/bash3)创建用户mageia,其ID号为1100,家目录为/home/linux;    [root@localhost ~]# useradd -u 1100 -d /home/linux mageia    [root@localhost ~]# cat /etc/passwd | grep mageia        mageia:x:1100:1100::/home/linux:/bin/bash4)给用户mageia添加密码,密码为mageedu;    [root@localhost ~]# passwd mageia        更改用户 mageia 的密码 。        新的 密码:5)删除mandriva,但保留其家目录;    [root@localhost ~]# userdel mandriva6)创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;    [root@localhost ~]# useradd -u 2002 -g distro -G pegion  slackware     [root@localhost ~]# cat /etc/passwd | grep slackware        slackware:x:2002:2017::/home/slackware:/bin/bash7)修改slackware的默认shell为/bin/tcsh    [root@localhost ~]# usermod -s /bin/tcsh slackware    [root@localhost ~]# cat /etc/passwd | grep slackware        slackware:x:2002:2017::/home/slackware:/bin/tcsh8)为用户slackware新增附加组admins    [root@localhost ~]# usermod -G admins -a slackware    [root@localhost ~]# cat /etc/passwd | grep slackware        slackware:x:2002:2017::/home/slackware:/bin/tcsh
原创粉丝点击