一、Linux的安全性
1、/etc/password文件
该文件将用户的登录名匹配到对应到UID值,包含了一些与用户有关的信息。root用户帐户是Linux系统的管理员,固定分配给它的 UID是0。
2、/etc/shadow文件
该文件对Linux系统密码管理提供了更多的控制。只有root用户才能访问/etc/shadow文件。
3、添加新用户
查看所用Linux系统中创建新用户时的默认值:/usr/sbin/useradd -D
用默认系统参数创建一个新用户帐户,然后检查新用户的HOME目录。
例:
useradd -m test
ls -al /home/test
默认情况下,useradd命令不会创建HOME目录,但是-m命令行选项会使其创建HOME目录。
想要在创建用户时改变默认值或默认行为,可以使用命令行参数,如下表useradd命令行参数:
可以在-D选项后跟上一个指定的值来修改系统默认的新用户设置,这些参数如下表:
4、删除用户
用userdel命令删除已有用户帐户(加上-r参数,会删除用户的HOME目录以及邮件目录):
例:
/usr/sbin/userdel -r test
5、修改用户
(1)usermod
能用来修改/etc/password文件中的大部分字段。
(2)password和chpasswd
用password可以改变用户密码
例:passwd test
只用passwd命令会改变自己的密码,系统上的任何用户都能改自己的密码,但只有root用户才有权限改别人的密码。
-e选项能强制用户下次登录时修改密码。
chpasswd命令能从标准输入自动读取登录名和密码对列表,给密码加密,然后为用户帐户设置。也可以用重定向命令来将含有userid:passwd对的文件重定向给该命令。
例:chpasswd < users.txt
(3)chsh、chfn和chage
用来修改特定的帐户信息。chsh命令用来快速修改默认的用户登录shell。使用时必须用shell的全路径名作为参数。
例:chsh -s /bin/csh test
命令finger可以非常方便地查看Linux系统上的用户信息。
例:finger rich
命令chage用来帮助管理用户帐户的有效期。需要对每个值设置多个参数。chage命令参数如下:
二、使用Linux组
1、/etc/group文件
该文件包含系统上用到的每个组的信息。包含4个字段:组名、组密码、GID、属于改组的用户列表。
组密码允许非组内成员通过它临时成为该组成员。
2、创建新组
groupadd命令可在系统上创建新组。
例:/usr/sbin/groupadd shared
tail /etc/group
在创建新组时,默认没有用户被分配到该组。groupadd命令没有提供将用户添加到组中的选项,但可以用usermod命令来实现。
eg:/usr/sbin/usermod -G shared rich
/usr/sbin/usermod -G shared test
tail /etc/group
此时shared组有两个成员:rich和test。usermod命令的-G选项会把这个新组添加到该用户帐户的组列表里。
3、修改组
groupmod命令可以修改已有组的GID(加-g选项)或组名(加-n选项)。
eg:/usr/sbin/groupmod -n sharing shared
tail /etc/group
修改组名时,GID和组成员不会变,只有组名改变。由于所有的安全权限都是基于GID的,可以随意改变组名而不会影响文件的安全性。
三、文件权限
1、使用文件权限符
输出结果第一个字段描述文件和目录权限的编码。
第一个字符代表了对象的类型:
-代表文件
d代表目录
c代表字符型设备
b代表块设备
n代表网络设备
之后的3组三字符的编码,每一组定义了3种访问权限:
r代表对象是可读的
w代表对象是可写的
x代表对象是执行的
若没有某种权限,在该权限位会出现单破折线。这3组权限分别对应对象的3个安全级别:对象的属主、对象的属组、系统其他用户。
2、默认文件权限
umask命令用来设置所创建文件和目录的默认权限:
第一位0代表了意向特别的安全特性,叫作粘着位,后续介绍。
后边的3位002表示文件或目录对应的umask八进制值。Linux文件权限码如下图:
Linux系统默认的八进制的umask值是0022,而所创建的文件的八进制权限却是644。
这是因为umask值只是个掩码,要把umask值从对象的全权限值中减掉,对文件来说,全权限的值是666(所有用户都有读和写的权限);而对目录来说,则是777(所有用户都有读、写、执行权限)。所以文件开始的权限是666,减去umask值002之后,剩下的文件权限就成了644.
可以用umask命令为默认umask设置指定一个新值。
eg:umask 026
把umask值设为026后,默认的文件权限变成了640,因此新文件对组成员来说是只读的,而系统里的其他成员则没有任何权限。
umask值同样会作用在创建目录上。
四、改变安全性设置
1、改变权限
chmod命令用来改变文件和目录的安全性设置
例:chmod 760 newfile
2、改变所属关系
(1)chown命令用来改变文件的属性,格式:chown options owner[.group] file
例:chown wyy newfile
chown命令也支持同时改变文件的属主和属组.
例:chown dan.shared newfile
chown命令采用-R选项配合通配符可以递归地改变子目录和文件的所属关系。-h选项可以改变该文件的所有符号链接文件的所属关系。
注:只有root用户能够改变文件的属主。任何属主都可以改变文件的属组,但前提是属主必须是原属组和目标属组的成员。
(2)chgrp命令可以更改文件或目录的默认属组。
例:chgrp shared newfile
五、共享文件
Linux还为每个文件和目录存储了3个额外的信息位。
设置用户ID(SUID):当文件被用户使用时,程序会以文件属主的权限运行。
设置组ID(SGID):对文件来说,程序会以文件属组的权限运行;对于目录来说,目录中创建的新文件会以目录的默认属组作为默认属组。SGID位对文件共享非常重要,启用SGID位后,可以强制在一个共享目录下创建的新文件都属于该目录的属组,这个组也成为了每个用户的属组。
粘着位:进程结束后文件还驻留(粘着)在内存中。
例:
创建一个共享目录:
mkdir testdir
将目录的默认属组改为包含所有需要共享文件的用户的组(你必须是该组的成员):
chgrp shared testdir
将目录的SGID位置位,以保证目录中新建文件都用shared作为默认属组:
chmod g+s testdir
所有组成员都需把他们的umask值设置成文件对属组成员可写:
umask 002
此时,组成员就能到共享目录下创建新文件了。