1. root下进入其他用户主目录
cd ~USERNAME
2. touch的另外的一种作用
常用的是touch创建一个不存在的文件
而touch一个存在的文件时候,touch会修改文件的三个时间(使用stat可以查看),其中access表示最后一个访问时间,modify表示最后一次修改文件的时间,change表示最后修改文件属性的时间
3. file查看文件类型
镜像文件(iso)的文件类型为iso9660
4./etc/passwd中各字段对应解释
1 用户名:2密码:3uid:4gid:5备注:6home目录:7登录shell
该文件的内容是通过useradd命令生成,每使用useradd一次,在/etc/passwd追加一行
需要注意的是rhcl6版本中0-500表示系统账户,而rhcl7版本依赖0-1000表示系统账户
useradd:
-u UID #指定uid,不使用该选项,则默认为普通账户即uid>=1000,且不与现存uid冲突
-g 已存在GID/组名 #指定所属用户组,不选用该选项,同时默认在/etc/group文件中追加一行信息,其中组名默认与用户名一致。
-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 命令显示的信息详释
第一行中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权限。
拥有suid权限时,其他用户执行这条命令,将会获取该命令的拥有人权限,可以访问一些自身并没有访问权限的文件。
我们修改目录的属主组时,希望该目录下所有文件继承该属主组
从上图可以看出,并没有达到效果,我们增加sgid权限,可以达到如期效果
用户对拥有sbit权限的目录具有wx权限时,用户在该目录下创建的文件及目录,只有自身与root才可以删除。
6. 登录shell与非登录shell中一些知识
登录shell往往是通过用户名及密码登录系统时所用shell。
非登录shell则往往不需要用户名及密码
su - USERNAME属于登录shell。而su USERNAME与非登录shell
非登录shell状态通过exit退出,而登录shell状态主要使用logout退出(exit也可以)
登录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进程直接结束。
还有一些关于变量的命令:
set:显示及设置私有变量以及用户变量
env:显示及设置用户变量变量
export:将本地变量上升到一个环境变量。不export,则定义的变量不会被其他非登录shell继承。而即使export,登录到其他shell,也不会继承该变量。同时定义的本地变量重启失效,所以建议自选择地加入上述四个配置文件中。
转载于:https://blog.51cto.com/bigtrash/1842871