用户
Multi -tasks, Multi-Users
每个使用者:
用户标识、密码:
Authentication认证:
Authorization授权:
Audition审计:
组:用户组,用户容器
用户类别:
管理
普通用户
普通用户
登录用户
用户标识:UserID,UID
16bits二进制数字:0-65535
管理员:0
普通用户:1-65635
系统用户:1-499(Centos6)1-99(Centos7)
登录用户:500-600000(Centos6)1000-60000(Centos7)
名称解析:名称转换
Username <--> UID
根据名称解析库进行:/etc/passwd
组:
组类别1:
管理员组
普通用户组
系统组
登录组
组标识:GroupID,GID
管理员组:0
普通用户:1-65635
系统用户:1-499(Centos6)1-99(Centos7)
登录用户:500-600000(Centos6)1000-60000(Centos7)
名称解析:名称转换
groupname <--> UID
根据名称解析库进行:/etc/group
组类别2:
用户的基本组
用户的附加组
组类别3:
私有组:组名同用户名,且只包含一个用户:
公共组:组内包含了多个用户:
认证信息:
通过比对事先存储的,与登录时提供的信息是否一致:
password:
/etc/shadow
/etc/gshadow
密码的是要策略:
1、使用随机密码
2、最短长度不要低于9位
3、应该使用大写字母、小写字母、数字和标点符号四类中至少三类
4、定期更换
加密算法:
对称加密:加密和解密使用同一个密码
非对称加密:加密和解密使用的一对儿密钥:
密钥对儿:
公钥:public key
私钥:private key
单项加密:只能加密,不能解密:提取数据特征码
定长输出:
雪崩效应:
算法:
md5: message digest,128bits
sha: secure hash algorithm ,160bites
sha224
sha256
sha384
sha512
在计算之时加salt,添加随机数
/etc/passwd :用户信息库
name:password:UID:GID:GECOS:directory:shell
name:用户名
password:可以是加密的密码,也可是占位符x
UID:
GID:用户所属的主组ID号
GECOS:注释信息
directory:用户的家目录
shell:用户的默认shell,登录时默认shell程序:
/etc/shadow 用户密码
用户名:加密的密码:最近一次修改密码的时间:密码最短使用期限:密码最长使用期限:警告期限:过期期限:保留字段
/etc/group
group_name:passwd:GID:user_list
user_list:该组的用户成员:以此组为附加组的用户的用户列表:
linux用户组和组管理
安全上下文:
进程以其发起者的身份运行:
进程对文件的访问权限,取决于发起此进程的用户的权限
为了能够让那些后台进程或服务类进程以非管理员的身份运行,通常要为此创建多个普通用户,这类用户从不用于登录
groupadd命令:添加组
groupadd [选项] group_name
-g GID: 指定GID: 默认是上一个组的GID+1
-r 创建系统组:
groupmod命令:修改组属性
groupmod [选项] group
-g GID: 修改GID
-n new_name: 修改组名
groupdel命令:删除组
groupdel [选项] group
useradd命令:创建用户
useradd [选项] 登录名
-u,--uid UID: 指定UID
-g, --gid GROUP: 指定基本组ID,此组得事先存在
-G, --grups GROUP1[,GROUP2,...[,GROUPN]]] 指明用户所属的附加组,多个组之间用逗号分隔
-c, --comment COMMENT:指明注释信息
-d, --home HOME_DIR:以指定的路径为用户的家目录:通过复制/etc/skel此目录并重命名实现:指定的家目录路径如果事先存在,则不会为用户复制环境配置文件
-s,--shell SHELL: 指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件:
-r, --system:创建系统用户:
注意:创建用户时的诸多默认设置配置文件为/etc/login.defs
useradd -D:显示创建用户的默认配置:
useradd -D 选项:修改默认选项的值:
修改的结果保存于/etc/default/useradd文件中:
usermod命令: 修改用户属性
usermod [选项] 登录名
-u,--uid UID: 修改用户UID
-g,--gid group: 修改用户所属的基本组
-G, --grups GROUP1[,GROUP2,...[,GROUPN]]] 修改用户所属的附加组,原来的附加组会被覆盖
-a, --append: 与-G一同使用,用于为用户追加新的附加组
-c, --comment COMMENT:修改注释信息:
-d, --home home_dir:修改用户的家目录,用户原有的文件不会被移至新位置
-m , --move--home : 只能与-d选项一同使用,用于将原来的家目录移动到新的家目录
-l, --login new_login:修改用户名
-s , --shell SHELL:修改用户的默认shell
-L ,-- lock :锁定用户密码
-U, --unlock: 解锁用户的密码userdel命令:删除用户属性
userdel [选项] 登录
-r: 删除用户时一并删除其家目录
练习1:创建用户gentoo ,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为50001)
练习2:创建用户fedora ,其注释信息为“Fedora core”默认shell为/bin/tcsh
练习3:修改gentoo用户的家目录为/var/tmp/gentoo,要求原有文件仍能被用户访问
练习4:为gentoo新增附加组netadmin
passwd命令:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1)passwd:修改用户自己的密码
(2)passwd username: 修改指定用户的密码
-l, -u :锁定和解锁用户
-d: 清除用户密码
-e date: 过期期限,日期
-i days: 非活动期限
-n days: 密码的最短使用期限
-x days:密码的最长使用期限
-w days:警告期限
--stdin:
echo "password" | passwd --stdin username
gpasswd命令
gpasswd[选项] group
-a username: 向组中添加用户
-d username: 从组中移除用户
newgrp命令: 临时切换指定的组为基本组
newgrp [-] [group]
-: 会模拟用户重新登录以实现重新初始化其工作环境:
chage命令:更换用户密码过期信息
chage [选项] [登录]
id命令:显示是用户的真实和有效信息
id [OPTION]... [USERNAME]
-u :仅显示有效的UID
-g :仅显示用户基本组ID
-G :仅显示用户所属组所有组的ID
-n :显示名字而非ID
id -n
su命令:switch user
登录式切换:会通过重新读取目标用户的配置文件来重新初始化
su - username
su -l username
非登录式切换:不会读取目标用户的配置文件进行初始化
注意:管理员可无密码切换至其他任何用户:
- c 'command': 仅以指定用户的身份运行此处指定的命令:
其他几个命令:chsh, chfn ,finger, whoami, pwck ,grpck
权限管理:
ls -l
rwxrwxrwx
左三位:定义user(owner)的权限
中三位:定义group的权限
右三位:定义other的权限
进程安全上下文
进程对文件的访问权限应用模型
进程的属主与文件的属主是否相同:如果相同,则应用属主权限
否则,则检查进程的属主是否属于文件的属组:如果是,则应用属组权限
否则,就只能应用other的权限
权限:
r: readable, 读
w: writeable, 写
x: excuteable ,执行
文件:
r:可获取文件的数据
w:可修改文件的数据
x:可将此文件运行为进程
目录:
r: 可使用ls命令获取其下的所有文件列表
w: 可修改此目录下的文件列表, 即创建或者删除文件
x: 可cd至此目录中,且可使用ls -l 来获取所有文件的详细属性信息
mode: rwxrwxrwx
ownership : user , group
权限组合机制:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
权限管理命令:
chmod命令:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...三类用户:
u:属主
g:属组
o:其他
a:所有
(1)chmod [OPTION]... MODE[,MODE]... FILE...
mode表示法:
赋权表示法:直接操作一类用户的所有权限rwx
u=
g=
o=
a=
授权表示法:直接操作一类用户的一个权限位r,w,x
u+, u-
g+, g_
o+, o-
a+, a-
(2)chmod [OPTION]... OCTAL-MODE FILE...
(3)chmod [OPTION]... --reference=RFILE FILE...
选项:
-R, --recursive:递归修改
注意:用户仅能修改属主为自己的那些文件的权限
chown命令:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
选项:
-R递归修改
chgrp命令:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:仅管理员可以修改文件的属主和属组
umask: 文件的权限反向掩码,遮罩码
文件:
666-umask
目录:
777-umask
注意:之所以文件用666区减,表示文件默认不能拥有执行权限:如果减的的结果中有执行权限,则需要将其加1
umask:023
666-023=644
777-023=754
umask命令:
umask:查看当前umask
umask MASK :设置umask
注意:此类设置仅对当前shell经常有效
练习:
1.新建系统组mariadb,新建系统用户mariadb,属于mariadb组,要求其没有家目录,且shell为/sbin/nologin,尝试切换至用户,查看其命令提示符:
2.新建GID为5000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名:
3.新建用户fedora,其家目录路为/users/fedora,密码同用户名:
4.新建用户web,其家目录为/users/web,删除web用户,但保留其家目录:
5.为用户gentoo和fedora新建附加组mageedu
6.复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件属组为mageedu,并让属组队目录本身拥有写权限
install命令:
install - copy files and set attributes
单元复制:
install [OPTION]... [-T] SOURCE DEST
多源复制:
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...创建目录
install [OPTION]... -d DIRECTORY...常见选项
-m , --mode=MODE: 设定目标文件权限,默认为755
-o , -- owner=OWNER:设定目标文件属主
-g ,-- group=GROUP :设定目标文件属组
-d 创建目录
mktemp命令:
mktemp - create a temporary file or directory
mktemp [OPTION]... [TEMPLATE]
常用选项:
-d :创建临时目录
注意:mktemp会将创建的临时文件名直接返回,因此,可以直接通过命令引用保存起来