导读:本章主要内容如下
1.解释Linux的安全模型
2.解释用户账号和组群账号的目的
3.用户和组管理命令
4.理解并设置文件权限
5.默认权限
6.特殊权限
7.ACL
一、安全介绍 3A
1.资源分派:
Authentication :认证 (用户名和对应口令)
Authorization :授权 (不同的用户权限不一样)
Accouting /Audition :审计
2.所属主和所属组
user(用户) token令牌 ;identity身份
Linux用户:username UID(用户标识号)
管理员:root UID=0
普通用户:1-65535
系统用户:1-499(centos6)1-999
由系统保留,作为管理账号,对守护进程获取资源进行权限分配
登录用户:500+(centos6) 1000+ 交互式登录
group 组
Linux组:Groupname GID(组标识号)
管理员.:root, 0
普通组:
系统组:1-499(centos 6);1-999(centos 7)
普通组:500+ ; 1000+
注意:在Linux中用户名和组名可以相同,要小心使用,具体看命令。
安全上下文
运行中的程序:进程(process)
以进程发起者的身份运行:
进程所能够访问资源的权限取决于进程的运行者的身份 (和程序本身没关系,看是谁运行的)
二、用户账号和组群账号管理
1.Linux组的类别:
用户的主要组(主组):
用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户:私有组(新建的用户,也会建一个组,但组里只有用户自己)
用户的附加组(辅助组):secondary group
一个用户只有一个主组,但是可以属于零个或多个辅助组(如下图)
注意:一般第一个为用户的主组,后面的都为附加组
系统识别用户不是看用户名,是看id编号的
2.用户和组的配置权限
Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
(1)/etc/passwd 解说
/etc/passwd 由“:”分割成7段,每个字段含义如下:
①login name:登录用户名(wang)
②passwd:密码,口令(x) 现在放在 /etc/shadow 如果要想回到之前的状态用(命令 pwunconv)但是这样的话/etc/shadow文件就没有了,恢复使用(命令 pwconv)
③UID:用户身份编号 管理员:0,系统默认为root,但是可以修改。普通用户:500+;1000+
实验如下图,说明:系统辨别是否为管理员是看id的
④GID:组标识号登录默认所在组编号(1000)
⑤GECOS:用户全名或注释
用 命令chfn 可以修改注释信息
用命令 finger 可以更加详细的查看修改和用户信息
⑥home directory:用户主目录(/home/wang)
root 的家目录是/root ,普通用户的家目录则为/home/username,用户家目录可以自己定义。
⑦shell:用户默认使用shell (/bin/bash)
用 chsh命令 可以直接修改用户的shell
(2)/etc/shadow解说
/etc/shadow he /etc/passwd 类似,由“:”分割成9段,只有管理员可以查看,普通用户是看不了的。含义如下:
①登录用户名,与/etc/passwd 类似
②用户密码,一般sha512加密
如果刚建的新用户,密码是(!!)是不允许登陆的,(可以用 su切换)如果删除了,该用户就可以不用密码直接登录。可以使用 命令 usermod -U (删除!号)(usermod -L 加!号),只能删除一个,第二个系统不允许被删除。 其实,有密码的用户也是可以被锁定的,也是用 usermod -L
密码前面的$6代表哈希算法,一般用sha512加密,是单向加密的,不可逆。但是也有可能会被破解。我们也可以修改用户的加密算法 命令:authconfig--passalgo=sha256 --update(对老用户不起作用,只对新用户起作用)
如果两个新用户设置的密码完全以一样,但在 shadow中显示的也是不同的,因为系统会加 “盐”,是一种随机数,更安全。
在工作中设置密码可以用命令 openssl rand -base64 (10随机数)
③从1970年1月1日起到密码最近一次被更改的时间
如果为0 就代表,迫使你下一次登录时必须该口令(可以通过 chage -d0 tao 直接改为0)或者(passwd -e tao)和前者效果一样。
④密码再过多少天可以被更改,系统默认为0,即不受限制
⑤密码多少天后到期,即在多少天内必须更改密码,系统默认99999表示永远不需要更改。
⑥密码过期前几天系统提醒用户(默认为一周)
⑦密码过期几天后账号会被锁定
⑧生命周期,从1970年1月1日算起,多少天后帐号失效
⑨没有意义,作为保留用
附加:
密码期限如下图:
更改加密算法:authconfig --passalgo=sha256 --update
(3)/etc/group 组及其属性信息
①组群名称:就是群组名
②群组密码:通常不需要设定,密码是被记录在/etc/gshadow
③GID:就是组的id
④以当前组为附加组的用户列表(分隔符为逗号)
注意:新用户添加或删除附加组,必须重新登录才能够表现出来。
(4)/etc/gashadow 解说
①群组名称
②群组密码 :一般不对组设置口令,如果设置了,普通用户知道口令后便可直接加进来,不设置反而更加安全。
③组管理员列表:组管理员的列表,更改组密码和成员
④以当前组为附加组的用户列表:(分隔符为逗号)
三、用户和组管理命令
1.文本操作:
vipw(vi /etc/passwd)和vigr(vi /etc/group)
用这两个命令比直接使用nano,vim等编辑工具安全,因为在使用过程中如果格式不正确,系统会报错,其他的则不会
pwck(passwd check)和grpck(group check)
修改完成之后,用这两个工具可以作相应的检查。
2.用户和组管理命令
用户账号管理命令:
useradd
usermod
userdel
组账号维护命令:
groupadd
groupmod
groupdel
(1)useradd 用户创建
useradd[options] LOGIN
-u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs
-o 配合-u 选项,不检查UID的唯一性
-g GID:指明用户所属基本组,可为组名,也可以GID
-c "COMMENT":用户的注释信息
-d HOME_DIR:以指定的路径(不存在)为家目录
-s SHELL: 指明用户的默认shell程序
可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...]:为用户指明附加组,组必须事先存在
-N 不创建私用组做主组,使用users组做主组
-r: 创建系统用户CentOS 6: ID<500,CentOS 7: ID<1000,一般shell类型为/sbin/nologin
在创建用户的时候会有一些默认值设定:在 /etc/default/useradd文件中
显示或更改默认设置
useradd -D
useradd -D -s(后面加选项可以更改默认设置)
这里注意,新创建的用户系统用户的家目录和邮箱是不会自动创建的。
(3)新建用户的相关文件和命令
/etc/default/useradd 相关的配置文件默认设置
/etc/skel/* 家目录的配置文件模板
/etc/login.defs 一些配置文件的默认设置(见下图)
newusers passwd格式文件批量创建用户
chpasswd 批量修改用户口令
(4)usermod用户属性修改
usermod[OPTION] login
-u UID: 新UID
-g GID: 新基本组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append;
-s SHELL:新的默认SHELL;
-c ‘COMMENT‘:新的注释信息;
-d HOME: 新家目录不会自动创建,原家目录中的文件不会同时移动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字;
-L:lock指定用户,在/etc/shadow 密码栏的增加!
-U:unlock指定用户,将/etc/shadow 密码栏的! 拿掉
-e:YYYY-MM-DD: 指明用户账号过期日期;
-f:INACTIVE: 设定非活动期限;
(5)userdel 删除用户
-r :删除用户家目录
(6)查看用户id相关信息
id [OPTION]... [USER]
-u: UID
-g: GID
-G: Groups
-n: Name
(7)切换用户以及用户其他身份执行命令
su[options...] [-] [user [args...]]
切换用户方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
root su至其他用户无须密码;非root用户切换时需要密码
注意:如果切换用户之后一定要使用 exit或logout 退出来,否则会影响系统。
换个身份执行命令:
su[-] UserName -c ‘COMMAND‘
选项:-l --login:
su-l UserName相当于su-UserName
练习:
1、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
2、创建下面的用户、组和组成员关系
名字为admins 的组
用户natasha,使用admins 作为附属组
用户harry,也使用admins 作为附属组
用户sarah,不可交互登录系统,且不是admins 的成员,natasha,harry,sarah密码都是centos
原文地址:http://1992tao.blog.51cto.com/11606804/1834120