时间:2017年08月07日星期一java
说明:本文部份内容均摘取自书籍《Linux命令行与shell脚本编程大全》,版权归原做者全部。《Linux命令行与shell脚本编程大全》(第三版)第七章学习总结shell
本章内容:编程
理解Linux的安全性 解读文件权限 使用Linux组
Linux安全系统的核心是用户帐户。每一个能进入Linux系统的用户都会被分配惟一的用户帐户。用户对系统中各类对象的访问权限取决于他们登陆系统时用的帐户。安全
Linux系统使用一个专门的文件来将用户的登陆名匹配到对应的UID值。这个文件就是/etc/passwd文件,它包含了一些与用户有关的信息。bash
root:x:0:0:root:/root:/bin/bash
root用户帐户是Linux系统的管理员,固定分配给它的UID是0.网络
/etc/passwd文件的字段包含了以下信息:工具
登陆用户名 用户密码(/etc/passwd文件中的密码字段都被设置成了x,即隐藏了密码, 密码单独保存在etc/shadow文件中) 用户帐户的UID(数字形式) 用户帐户的组ID(GID)(数字形式) 用户帐户的文本描述(称为备注字段) 用户HOME目录的位置 用户的默认shell
/etc/shadow文件对Linux系统密码管理提供了更多的控制。只有root用户才能访问/etc/shadow文件,每一个用户帐户都对应一条记录,每条记录中都有9个字段学习
与/etc/passwd文件中的登陆名字段对应的登陆名编码
加密后的密码 自上次修改密码后过去的天数密码(自1970年1月1日开始计算) 多少天后才能更改密码 多少天后必须更改密码 密码过时前提早多少天提醒用户更改密码 密码过时后多少天禁用用户帐户 用户帐户被禁用的日期(用自1970年1月1日到当天的天数表示) 预留字段给未来使用
命令:useradd加密
命令格式:useradd test 命令说明:建立一个名为test的用户
命令:userdel
命令格式:userdel -r test 命令说明:删除test用户级test用户的HOME目录
用户帐户修改工具
usermod:修改用户帐户的字段,还能够指定主要组以及附加组的所属关系 passwd:修改已有用户的密码 chpasswd:从文件中读取登陆名密码对,并更新密码 chage:修改密码的过时日期 chfn:修改用户帐户的备注信息 chsh:修改用户帐户的默认登陆shell
命令:usermod
经常使用参数
-c:修改备注字段 -e:修改过时日期 -g:修改默认的登陆组 -l:修改用户帐户的登陆名 -L:锁定用户,使用户没法登陆 -p:修改帐户的密码 -U:解除锁定,使用户可以登陆
命令:passwd
命令格式:passwd test 命令说明:修改test用户的登陆密码
命令:chpasswd
命令格式:chpasswd < users.txt 命令说明:批量修改用户名对应的密码,登陆名和密码用冒号分隔
命令:chsh、chfn、chage
命令说明:chsh修改默认的用户登陆shell、chfn修改备注字段、chage修改密码过时日期
保存组信息的文件,格式如:root:x:0:root
,字段分别为
组名 组密码 GID 属于该组的用户列表
千万不能经过直接修改/etc/group文件来添加用户到一个组,要用usermod命令
命令:groupadd
命令格式:groupadd name 命令说明:建立一个名为name的组
说明:若是更改了已登陆系统帐户所属的用户组,该用户必须登出系统后再登陆,组关系的更改才能生效。
警告:为用户帐户分配组时要格外当心。若是加了-g选项,指定的组名会替换掉该帐户的默认组。-G选项则将该组添加到用户的属组的列表里,不会影响默认组。
命令:groupmod
命令格式:groupmod -n name newname 命令说明:将name组的组名修改成newname 命令格式:groupmod -g 505 name 命令说明:将name组的GID修改成505(原来是504)
说明:因为全部的安全权限都是基于GID的,因此能够随意改变组名而不会影响文件的安全性。但不要随意修改组的GID。
命令:ls
命令格式:ls -l 命令说明:使用ls命令查询Linux系统上的文件、目录和设备的权限。
示例:drwxr-xr-x 3 root root 4096 Jul 25 21:05 java
说明:第一个字段及 drwxr-xr-x 就是描述文件和目录权限的编码。这个字段的第一个字符表明了对象的类型:
-表明文件 d表明目录 l表明连接 c表明字符型设备 b表明块设备 n表明网络设备
以后有3组字符的编码。每一组定义了3中访问权限:
r表明对象是可读的 w表明对象是可写的 x表明对象是可执行的
若没有某种权限,在该权限位会出现单破折线。这3组权限分别对应对象的三个安全级别:
对象的属主:即用户名 对象的属组:即组名 系统其它用户:其它用户
命令:umask
命令格式:umask 命令说明:查看默认权限
Linux文件权限码
权限:二进制值:八进制值:描述 ---:000:0:没有任何权限 --x:001:1:只有执行权限 -w-:010:2:只有写入权限 -wx:011:3:有写入和执行权限 r--:100:4:只有读取权限 r-x:101:5:有读取和执行权限 rw-:110:6:有读取和写入权限 rwx:111:7:有所有权限
文件来讲:全权限是666表示全部用户都有读和写的权限
目录来讲:全权限是777表示全部用户都有读、写、执行权限
命令格式:umask 026 命令说明:设置默认文件权限为 666-026=640,目录权限为 777-026=751。
命令:chmod
命令格式:chmod +x dir 命令说明:给dir目录赋执行权限 命令格式:chmod +x shell.sh 命令说明:给shell.sh文件赋执行权限
命令:chown
命令格式:chown owner file 命令说明:改变文件的属主 命令示例:chown test demo.sh 命令说明:将demo.sh文件的属主修改成test用户为属主
命令:chgrp
命令格式:chgrp group file 命令说明:改变文件的默认属组 命令示例:chown grouptest demo.sh 命令说明:将demo.sh文件的默认属组修改成grouptest用户组
说明:只有root用户可以改变文件的属主。任何属主均可以改变文件的属组,但前提是属主必须是原属组和目标属组的成员。
命令演示:
命令:mkdir testdir 说明:建立一个名为testdir的目录 命令:chgrp grouptest testdir 说明:改变testdir目录的默认属组为grouptest用户组
如今,grouptest用户组下的全部用户均可以访问testdir下的文件了。
本章讨论了管理Linux系统安全性须要知道的一些命令行命令。Linux经过用户ID和组ID来限制对文件、目录以及设备的访问。Linux将用户帐户的信息存储在/etc/passwd文件中,将组信息存储在/etc/group文件中。每一个用户都会被分配惟一的用户ID,以及在系统中识别用户的文本登陆名。组也会被分配惟一的组ID以及组名。组能够包含一个或多个用户以支持对系统资源的共享访问。本章介绍了useradd、userdel、usermod、passwd、chpasswd、chsh、chfn、chage、groupadd、groupmod、umask、chmod、chow、chgrp命令。
本章学习命令我的总结以下:
useradd:添加新用户 userdel:删除用户 usermod:修改用户帐户的字段,还能够指定主要组以及附加组的所属关系 passwd:修改已有用户的密码 chpasswd:批量修改用户密码 chsh:修改用户帐户的默认登陆shell chfn:修改用户帐户的备注信息 chage:修改密码的过时时间 groupadd:建立新组 groupmod:修改组 umask:显示和设置默认权限 chmod:改变文件和目录的安全性设置 chow:改变文件的属主(属于哪一个用户或用户组) chgrp:改变文件的默认属组(属于哪一个用户组)