Linux安全模型
Authentication:认证,检验用户身份
Authorization:授权,不同用户设置不同权限
Accounting|Audition:审计
当用户登陆时,系统会自动分配令牌token,包括用户标识和组成员等信息
用户
Linux中每个用户都是由Usr Id (UID)来唯一标识的
管理员:root,0
普通用户:1-60000自动分配
系统用户:1-499(CentOS 6 以前),1-999 (CentOS 7以后)
登录用户:500+(CentOS 6 以前) ,1000+(CentOS 7以后)
用户组
Linux中可以将一个或多个用户加入到用户组中,用户组是通过Group ID(GID)来唯一标识的。
管理员组:root,0
普通组:
系统组:1-499(CentOS 6 以前),1-999 (CentOS 7以后),对守护进程获取资源进行权限分配。
普通组:500+(CentOS 6 以前) ,1000+(CentOS 7以后),给用户使用。
用户和组的关系
用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时
会自动创建和用户同名的组,作为用户的主要组,此组中只有一个用户,又称私有组
用户的附加组(supplementary group):一个用户可以属于一个或零个辅助组
范例:
[root@localhost ~]# id wtj
uid=1000(wtj) gid=1000(wtj) groups=1000(wtj)
[root@localhost ~]# id root
uid=0(root) gid=0(root) groups=0(root)[root@localhost ~]# id postfix
uid=89(postfix) gid=89(postfix) groups=89(postfix),12(mail)
安全上下文
Linux安全上下文Context:运行中的程序,即进程(process),以进程发起者的身份运行,进程能够访问资源的权限取决于运行者的身份
比如:root身份运行/bin/cat /etc/shadow和wtj的身份运行/bin/cat /etc/shadow,得到的结果是不同的,shadow能否被访问是由运行者身份决定的
范例:
[wtj@localhost root]$ cat /etc/shadow
cat: /etc/shadow: Permission denied[root@localhost ~]# cat /etc/shadow
root:$5$IZv17MnH/sTP9PJp$YDw3VBG6KcGKlZ7prhUA0NujTMeqiYx4KyBB61oqlZ1::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
用户和组的配置文件
/etc/passwd:用户及其属性信息(名称,UID,主组ID等)
/etc/shadow:用户密码及其相关属性
/etc/group:组及其属性信息
/etc/gsshadow:组密码及其相关属性
passwd的文件格式
login name : wtj
passwd :113
UID:用户身份编号(1000)
GID:默认登录所在组编号
GECOS:用户全名或注释
home directory:用户主目录(/home/wtj)
shell:用户默认使用shell(/bin/bash)
范例:
name:password:UID:GID:GECOS:directory:shell
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
getent passwd wtj <=> cat /etc/passwd | grep wtj
[root@localhost ~]# getent shadow wtj
wtj:$5$IZv17MnH/sTP9PJp$YDw3VBG6KcGKlZ7prhUA0NujTMeqiYx4KyBB61oqlZ1:19844:0:99999:7:::
[root@localhost ~]# echo `date +%s`/86400 | bc
19971
示例:生成随机口令(2)
[root@localhost ~]# tr -dc '[:alnum:]' < /dev/urandom |head -c 12
Etbz1aJh9m20[root@localhost ~]# tr -dc '[:alnum:]' < /dev/urandom |head -c 12
Y0YeoMao4u6b[root@localhost ~]# tr -dc '[:alnum:]' < /dev/urandom |head -c 12
[root@localhost ~]# openssl rand -base64 11
+XnX9StAKzl88+U=
用户和组管理命令
用户管理命令:
useradd
usermod
userdel
组账号维护命令:
groupadd
groupmod
groupdel
用户创建
useradd命令可以创建新的Linux用户
格式:
useradd [options] LOGIN
常见选项:
-u UID
-o 配合-u选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以GID
-c “”COMMENT“ 用户的注释信息
-d HOME_DIR 指定路径(不存在)为家目录
-s SHELL 指明默认shell程序,可用列表在/etc/shells文件中
-G GROUP1,[GROUP2...] 为用户指定附加组,组需事先存在
-N 不创建私用户做主组,使用usrs组做主组
-r 创建系统用户CentOS 6 之前:ID<500,CentOS 7以后:ID<1000
-m 创建家目录,用于系统用户
范例:
[root@localhost ~]# useradd -r -u 113 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache
[root@localhost ~]# useradd zyf
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# echo 123 | passwd --stdin zyf // 加密码命令
Changing password for user zyf.
passwd: all authentication tokens updated successfully.[root@localhost ~]# ls -a /etc/skel //家目录默认配置
. .. .bash_logout .bash_profile .bashrc .mozilla
useradd 命令默认值由/etc/default/useradd定义
示例:
[root@localhost ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes[root@localhost ~]# ll /var/spool/mail/ //查看邮箱
total 8
-rw-------. 1 root mail 658 Aug 31 03:47 root
-rw-rw----. 1 rpc mail 0 May 1 07:02 rpc
-rw-rw----. 1 wtj mail 637 Sep 4 22:40 wtj
显示或更改默认值
useradd -D
useradd -D -s SHELL
useradd -D -b BASE_DIR
useradd -D -g GROUP
新建用户相关文件
/etc/default/useradd
/etc/skel/*
/etc/login.defs
示例:
[root@localhost ~]# ls -a /etc/skel
. .. .bash_logout .bash_profile .bashrc .mozilla
[root@localhost ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes[root@localhost ~]# cat /etc/login.defs
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
批量创建用户
newusers passwd(文件格式)
批量修改口令
echo username :passwd | chpasswd
修改用户属性
usermod [OPTION] login
常用选项
-L : lock指定用户,在/etc/shadow 密码栏增加!
-U:unlock指定用户,将/etc/shadow 密码栏的!去掉
-l login_name:新的名字
删除用户
userdel [OPTION]... login
常用选项 :
-f, --force 强制
-r,--remove 删除用户家目录和邮箱
查看用户ID
id [OPTION]... [USER]
常用选项
-u :显示UID
-g :显示GID
-G :显示用户所属组ID
-n :显示名称,需配合ugG使用
创建组
groupadd
格式:
groupadd [OPTION]... group_name
常见选项:
-g GID : 指定GID
-r :创建系统组
范例:
groupadd -g 48 -r apache
修改组
groupmod
格式:
groupmod [OPTION]... group_name
常见选项:
-n group_name:新名字
-g GID:新的GID
删除组
groupdel
格式:
groupdel [OPTION]... group_name
常见选项:
-f,--force :强制删除,即使是用户的主组也会删除