本章内容:
理解Linux的安全性
解读文件权限
使用Linux组
缺乏安全性的系统不是完整的系统。系统中必须有一套能够保护文件免遭非法授权用户浏览或修改的基制
7.1 Linux的安全性
核心: 用户账户(UID)->每个进入Linux系统的用户都会被分配唯一的用户账户UID
注: 但是在登陆系统的时候不是用UID, 而是使用用户名: UserName
Notice: 介绍管理用户账户所需要的文件和工具
7.1.1 /etc/passwd文件
Linux系统用专门的文件(/etc/passwd文件):将用户名和对应的UID进行匹配
用途:现在运行在Linux服务器后台的几乎所有的服务都是用自己的账户登录,这样的话,即使有人攻入某个服务,也无法访问整个系统
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
对应的字段信息
1)登录用户名(root).
2)用户密码(x)
3)用户的UID(0)
4)用户账户的组ID(GID): 数字形式
5)用户账户的文本描述
6)用户HOME目录的位置
7)用户的默认shell
注: 现在绝大多数的密码文件都存储在/etc/shadow文件里
7.1.2 /etc/shadow文件
只有root用户才能访问/etc/shadow文件,这样他比/etc/passwd更加安全
/etc/shadow文件为系统上的每一个用户账户都保存了一条记录, 记录的内容如下
$ cat /etc/shadow
root:$6$8ZMpy0BD$B6nUfRXyLCP2yrLI5TPvxdCxbJBUjYT5V.oScuk.gNOWYpXzJrM3i.0IuF/YWecVCnvfqQZRZtGRZ8xyM4NpL.:17332:0:99999:7:::
在/etc/shadow文件的每个记录中都有9个字段
1)在/etc/passwd中的登陆名字对应的登陆名(root)
2)加密后的密码($6$8ZMpy0BD$B6nUfRXyLCP2yrLI5TPvxdCxbJBUjYT5V.oScuk.gNOWYpXzJrM3i.0IuF/YWecVCnvfqQZRZtGRZ8xyM4NpL.)
3)自上次修改密码之后过去的天数密码(17332)
4)多少天后必须修改密码(99999)
5)密码过期前提前多少天提醒用户更改密码(7)
6)密码过期后多少天禁用用户账户
//使用shadow密码系统后, Linux系统可以更好地控制用户密码。
7.1.3 添加用户
添加用户的工具: useradd工具, 可以一次性创建新用户账户及设置用户HOME目录结构,。
$ /usr/sbin/useradd -D//系统的默认值在/etc/default/useradd文件中
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
显示的useradd文件的解释:
新用户会被添加到GID为100的公共组
新用户的HOME目录将会位于/home/loginname
新用户账户密码在过期后不会被禁用
新用户账户未被设置过期日期
新用户账户将bash shell作为默认的shell
系统会讲/etc/skel目录下的内容复制到用户的HOME目录下
系用为该用户账户在mail目录下创建一个用于接受邮件的文件
创建的新账户的位置为/home/username
$ useradd -m test
$ ls -al /home/test
drwx------2 test test 4096 Aug8 00:52.
drwxr-xr-x. 5 root root 4096 Aug8 00:52..
-rw-r--r--1 test test18 Dec72016 .bash_logout
-rw-r--r--1 test test193 Dec72016 .bash_profile
-rw-r--r--1 test test231 Dec72016 .bashrc
注意: 默认情况下是不会创建HOME目录, 但是-m命令行选项会使其创建的HOME目录
7.1.4 删除用户
$ userdel 指令可以删除创建的用户
如果加上 -r 参数 userdel会删除用户的HOME目录以及邮件目录
$ /usr/sbin/userdel-r test
$ ls -al /home/test
//可以查询到用户以及用户的目录已经被删除掉了
7.1.5 修改用户
usermod:修改用户账户的字段,还可以指定主要组以及附加组的所属关系
Passwd 修改已有用户的密码
chpasswd 从文件中读取登陆名密码对, 并更新密码
chage 修改密码的过期时间
chfn 修改用户账户的备注信息
chsh 修改用户账户的默认登陆shell
1.usermod
用户账户修改工具中最强大的一个,能修改/etc/passwd文件中的大部分字段, -c修改备注字段
-e修改过期时间(expire) -g修改默认的登陆组(GID)
注: (1) -l修改用户账户的登陆名
(2) -L锁定账户,使用户无法登陆
(3) -p修改账户的密码
(4) -U解除锁定,使用户能够登陆
2.passwd和chpasswd
改变用户密码的最简单的方法就是passwd
$ passed test
3.chsh, chfn和chage
修改特定的账户信息, chsh命令可以快速修改默认的用户登陆的shel
$ cash -s /bin/csh test
7.2 使用Linux组(GROUP ID - GID)
用户账户在控制单个用户安全性方面很好用。但涉及共享资源的一组用户的时候需要采用group
Share Resource;
Group权限允许多个用户对系统的对象(directory, file和disk)共享一组共用的权限
每个组都有GID
7.2.1 /etc/group文件
$ cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
1)组名: root , 组密码: x , gid:3 , 属于该组的用户列表
7.2.2 创建新组 /usr/sbin/groupadd ;/usr/sbin/usermod -G
groupadd命令可在系统上创建新组
$ groupadd
e.g.
$ /usr/sbin/groupadd shared
//使用cat /etc/group查看组GID
$ cat /etc/group
注:创建新组时,没有用户会被分配到这个组里面.通过$ usermod指令可以让用户添加到组里面,但可以用usermod命令来弥补这一点
$ /usr/sbin/usermod -G shared rich
$ /usr/sbin/usermod -G shared test
再次查询可以获取到组里面的用户
用$ cat /etc/group查询到组
7.2.3 修改组 /usr/sbin/groupmod
1)组名: root , 组密码: x , gid:3 , 属于该组的用户列表
修改的信息很少
$ /usr/sbin/groupmod -n sharing shared
注: 修改组名时, GID和组成员不会变, 只有组名改变。由于所有的安全权限都是基于GID的。
7.3 理解文件权限
$ ls -l 第一列出现的权限
注意: 只有root账户能够添加修改用户以及GID
7.3.1 使用文件权限符
$ ls -l
-rw-r--r-- 1 root root 5824 Nov 122015mysql-community-release-el6-5.noarch.rpm(root可以读写, gid可以读, others可读)
-rw-r--r-- 1 root root35 Aug7 21:57 new_Scripts
分别的意思是:
1)-代表文件
2) d代表目录
3) l代表链接
4) c代表字符型设备
5) b代表块设备
6) n代表网络设备
之后有三组字符:
r代表对象是可读的
w代表对象是可写的
x代表对象是可以执行的
破折号对应三个数组
1)对象的属主(rw-), 2)对象的属组(r—), 3)系统的其他用户(r—)
7.3.2 默认文件权限
所有的文件权限都来自于umask, umask命令来设置所创建的文件和目录的默认权限
$ touch newfile//创建新的file
$ ls -al newfile //查看newfile的权限
注: touch指令在创建新的newfile上自动创建权限
$ type -a umask //查看文件的默认权限
$ umask //查看指令
0022
注: 第一位代表一项特别的安全特性, 叫作粘着位(stick bit)
022代表文件的权限
八进制模式的安全性设置获取这3个rwx权限的值。然后将其转化为3位二进制
r—: 100-w-:010 664:主用户可以rw- 用户组rw-
$ umask的数值: 666 - 用户权限 = 022(umask)获取到用户的umask默认的主旨
$ umask = 644; rw- ; r—; r—
2.设置umask的数值
注意文件的权限是rw-rw-rw-使用: 666
注意文件夹的权限是rwxrwxrwx: 777
7.4 改变安全性设置(umask rwxrwxrwx 777)
创建完文件和文件夹以后使用shell工具来改变文件的权限
7.4.1 改变权限
$ chmod 可以用来改变文件和文件夹的权限
$ chmod options mode file //改变文件的权限(八进制)
e.g.
$ chmod 760 newfile
//使用符号模式
$ chmod [char] filename
[ugoa…][[+-=][rwxXstugo…] //修改文件的权限
第一组代表:
u代表用户, g代表GID, o 代表others, a代表上述所有的人
举例:
$ chmod o+r newfile //给其他用户添加写的权限
$ chmod u-x newfile //给用户除去执行权限
7.4.2 改变所属关系(change the relationship)
改变用户的所属关系: chown命令用来改变文件的属主 change owner
chgrp命令用来改变文件的默认属组 change group
$ chown options owner[.group] file //创建选择用户的组文件
e.g.
$ chown dan newfile //创建新的文件
$ ls -l newfile
$ chown dan.shared newfile 改变属主以及用户组
7.5 共享文件(share file => 修改GID里面组员)
大范围的创建新文件和别人共享
SGID: 对文件来说, 程序会以文件属组的权限运行,目录中创建的新文件会以目录的默认属组作为数组
创建一个共享目录, 使目录里的新文件都能沿用目录的属组, 只需将该目录SGID位置位。
$ mkdir testdir
$ ls -lF
$ chgrp shared testdir
$ chmod g+s testdir
$ ls -l
$ umask 002
$ cd testdir
$ touch test file
网友评论