1. root下进入其他用户主目录

     cd ~USERNAME

wKioL1e_lnDCZVPvAAAHAg3Seec436.png

2. touch的另外的一种作用

    常用的是touch创建一个不存在的文件

    而touch一个存在的文件时候,touch会修改文件的三个时间(使用stat可以查看),其中access表示最后一个访问时间,modify表示最后一次修改文件的时间,change表示最后修改文件属性的时间

wKioL1e_l2jCK5TFAABBLh_2KCQ801.png-wh_50

3. file查看文件类型

    镜像文件(iso)的文件类型为iso9660

wKioL1e_mPjA69m3AAAP7rqdWF4689.png-wh_50

4./etc/passwd中各字段对应解释

    1 用户名:2密码:3uid:4gid:5备注:6home目录:7登录shell

wKioL1e_pJzQ4ClYAAAqgJuDMoU049.png-wh_50

该文件的内容是通过useradd命令生成,每使用useradd一次,在/etc/passwd追加一行

需要注意的是rhcl6版本中0-500表示系统账户,而rhcl7版本依赖0-1000表示系统账户

useradd:

    -u UID  #指定uid,不使用该选项,则默认为普通账户即uid>=1000,且不与现存uid冲突

    -g 已存在GID/组名  #指定所属用户组,不选用该选项,同时默认在/etc/group文件中追加一行信息,其中组名默认与用户名一致。

wKioL1e_oiPxv61nAAAOo33X5wI281.png-wh_50

    -G 指定附加组   #

    -M 强制不建立home目录

    -s  指定登录shell   #/sbin/nologin为不可登录shell

相关命令还有userdel(删除用户)、usermod(修改用户)、groupadd(增加用户组)、groupdel(删除用户组)

    userdel -r USERNAME  #删除用户的同时删除home目录下所有信息

           usermod -aG GNAME1...GNAMEN  USERNAME  #追加附加组

    /etc/passwd中的密码不再直接显示,用x代替。密码保存在/etc/shadow(无任何可读写执行权限)中,修改密码使用passwd命令(交互式)实现。

    非交互式修改密码:echo "NEWPASSWD"|passwd --stdin USERNAME

5. ls -l 命令显示的信息详释

 wKiom1e_qSehoowTAAA9jI0YFVs117.png-wh_50

     第一行中total表示当前目录下所有内容总共所占大小,默认单位为kb

     余下行中的最后一个字段为为文件名,第6,7,8字段表示文件(目录)最近访问(修改)时间

     第5个字段表示文件所占空间,默认单位为byte,可使用ls -lh以kb显示

     第3,4个字段分别描述文件所属的用户名及属主组

         可使用chown 用户名:组名  文件名/chown -R 用户名:组名 目录名 修改其属主及属主组

     第2个字段表示该文件的硬链接数  

     第1个字段共10个字母。

            第一个字母表示文件类型

                 -:普通文件  d:目录文件   c:字节文件  b:块文件  p:管道文件  s:socket文件  等等

            后9个字母,每三个为一组。第一组为当前用户关于此文件的操作权限,第二组为属主组内其他用户的操作权限,第三组为其他属主组内用户对此文件的操作权限

                 非目录文件: r(4)表示可读,w(2)表示可写,x(1)表示可执行

                 目录:r表示可以查看目录下的内容  w表示可以向目录里写内容  x表示可进入这个目录 (只有wx同时存在才能真正在该目录内操作)

            创建一个文件或目录默认的权限通过如下获取:

                  文件:0666-umask(若umask的存在某位为奇数,计算之后必须在对应奇数位加1)

                  目录:0777-umask

    还有三种比较特殊的权限:

            分别是suid(4)、sgid(2)、sbit(1),这三种权限分别显示在三组字母的第三位。若分别为小写的s,s,t,则表示拥有x权限。对应为S,S,T,表示无对应的x权限。

wKiom1e_s-DCw34YAAANz9af7yg697.png-wh_50

        拥有suid权限时,其他用户执行这条命令,将会获取该命令的拥有人权限,可以访问一些自身并没有访问权限的文件。

        我们修改目录的属主组时,希望该目录下所有文件继承该属主组

wKiom1e_ti-yUiEWAAA6dK9jgXM177.png-wh_50

  从上图可以看出,并没有达到效果,我们增加sgid权限,可以达到如期效果

wKioL1e_t13Bye_BAAAaRK5xR2g354.png-wh_50

  用户对拥有sbit权限的目录具有wx权限时,用户在该目录下创建的文件及目录,只有自身与root才可以删除。

6. 登录shell与非登录shell中一些知识

    登录shell往往是通过用户名及密码登录系统时所用shell。

    非登录shell则往往不需要用户名及密码

    su - USERNAME属于登录shell。而su USERNAME与非登录shell

    非登录shell状态通过exit退出,而登录shell状态主要使用logout退出(exit也可以)

wKioL1fE1XDTqu4HAAAXYyo_M7M962.png-wh_50

    登录shell与非登录shell最主要的区别是读取的配置文件不同。这里涉及四个配置文件1:/etc/bashrc,2:/etc/profile,3:~/.bashrc,4:~/.bash_profile。

    其中1,2为全局层面,3,4是局部层面;通常我们在1,3里定义别名alias,在2,4定义变量。

    非登录shell不会读取2,4中的内容。通常编写的shell脚本出现定义的环境变量不存在,往往需要手动让其生效(source或者.)。同时对1,2,3,4修改,必须通过source(.)让其生效。

    source(.)   xxx.sh、bash  xxx.sh 及 (chmod u+x xxx.sh; ./xxx.sh)执行脚本的主要不同。

后两者主要通过开启一个子进程去执行脚本,执行结果返回给父进程。

而source(.)是在当前进程直接运行脚本。下图给出了一个简单的对比情况,source之后,当前shell进程直接结束。

wKiom1fE2hbzDKPVAAAlKv_n-zc140.png-wh_50

还有一些关于变量的命令:

set:显示及设置私有变量以及用户变量

env:显示及设置用户变量变量

export:将本地变量上升到一个环境变量。不export,则定义的变量不会被其他非登录shell继承。而即使export,登录到其他shell,也不会继承该变量。同时定义的本地变量重启失效,所以建议自选择地加入上述四个配置文件中。

wKiom1fE3ISRxobxAAAlkh6HNwU835.png-wh_50