一:基本概念
linux是一个多任务(multi-task)多用户(multi-user)的操作系统,每个用户和用户组都有自己的ID号UID GID,每个用户都有自己的家目录不能随意访问其他用户的家目录,管理员root除外。
用户的分类:(以centos7.x为例)
管理员或root:0
普通用户:1-6000
系统用户:1-999(centos7) 1-499(centos6)
登录用户:1000-65535(centos7) 500-65535(centos6)
组的分类:
私有组:组名同用户名,而且只包含一个用户,用useadd命令创建用户是会默认创建一个私有组
公共组:组中包含了多个用户
linux系统用户安全机制:3A机制
authentication 认证—>比对/etc/shdow中的单向加密过的密码确定用户身份
authorization 授权—>通过权限管理控制不同用户的权限
audition 审计—>通过selinux
加密方法:
对称加密:加密和解密使用同一个密钥
非对称加密:加密使用私钥解密使用公钥
单向加密:只能加密不能解密,而且定长输出 作用于提取文件的特征码
算法 md5 sda sha224 sha256 sha384 sha512
示例使用md5sum命令提取 iso镜像文件的特征码和使用sha224sum 加密字符串“123456”
[root@localhost zxs]# md5sum CentOS-6.8-x86_64-bin-DVD1.iso
f73c2c4dd333c202ca85ea66120cacdf CentOS-6.8-x86_64-bin-DVD1.iso
[root@localhost zxs]# echo "123456" | sha224sum
ec5abd86603445ecc6f37e2632724f7823cc5f81342060fecc39836d
进程的安全上下文
进程是以用户的身份运行的,当进程访问文件是,先检查发起进程的用户和用户所属的组,在检查文件的的属主和属组,如果文件的属组就是发起进程的用户则引用前三位的权限,如果文件的属组和发起进程的用户的属组相同则应用中三位的权限,都不是的话及应用右三位的权限
查看文件的权限命令 ls-l
[root@localhost ~]# ls -al
total 64
dr-xr-x---. 2 root root 219 Apr 26 17:31 .
dr-xr-xr-x. 17 root root 244 Apr 26 17:46 ..
-rw-------. 1 root root 742 Apr 27 10:22 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
drwxrwxrwx:
左1位表示文件的类型
左rwx表示所属主(owers) 的权限 读+写+执行
中rwx表示所属组(groups)的权限
右rwx表示其他(others)的权限
权限组合机制
— 000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
示例 r-xr-x–x 551
rwxr-xr-x 755
rw-rw—- 664
二:了解用户和组相关配置文件
/etc/passwd:用户的密码文件
[root@localhost zxs]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
说明:文件用户“:”分隔一共有7个字段每个字段的含义是
username:password:UID:GID:GECUS:dircution:shell
用户名:x:UID:GID:注释:家目录:shell (x表示占位符,为了安全表示密码保存在/etc/shadow)
/etc/shadow:用户的密码文件
[root@localhost ~]# cat /etc/shadow | grep "zxs\>"
zxs:$6$vF9dzSd/$dyIJLhXSAR8oB5RxgV2qt4W8eF.zMRX2bAoaxYM6nhbaz5xuhjQQKCRFSfNt1eo5jzdyEv44zDuLe55XakjwA.:17283:2:6:1:3::
文件9个字段用户“:”分隔分别表示
用户名:加密后的密码:最后一个更改密码的天数(计算机元年至修改密码的时候):密码最短使用天数:密码最长使用天数:警告时间段:禁用期限:账户过期时间(从计算机元年开始计算):保留字段
三:用户和组管理命令
1:创建新用户的命令和用法
useradd [选项] 登录名
选项和参数说明:
-u:指定用户的UID
-s:指定用户的shell (系统可支持的shell在/etc/shells 下)
-r:创建一个系统用户(UID范围centos6为1-499,centos7为1-999可在/etc/login.defs中查看)
-c:关于登录时的简短描述 后跟描述的字符串
-d:自定义用户的家目录 后跟家目录路径
-e:用户账户将被禁用的期限格式为 YYYY-MM-DD
-f:表示过期后彻底禁用的天数 0表示马上禁止 -1表示禁用这个功能
-G[GROUP1],[GROUP2],… : 添加用户的附加组多个组用“,”隔开
-M:不创建用户的家目录 默认复制/etc/skel/目录下的文件到/home/USERNAME/下作为USERNAME的家目录 都是隐藏文件
-N;不创建同名的私有组
2:修改创建新用户的默认值:(D是default) 命令修改只对当前shell有效
useradd -D [选项]
注意:用 useradd -D 修改后的默认值只对当前shell进程,重启或重新登录无效永久生效需要修改配置文件/etc/default 或 /etc/login.defs 一般情况下linux系统下用命令行修改的设置都只对当前shell进程有
参数和选项说明:
useradd -D 不带选项:查看创建新用户的默认值
GROUP=100 #新用户添加到UID为100的公共组
HOME=/home #默认家目录路径
INACTIVE=-1 #过期后彻底禁用的天数 -1表示禁用此功能 0表示过期后马上禁止
EXPIRE= # 账户过期日期
SHELL=/bin/sh # 默认shell
SKEL= /etc/skel # 默认家目录的复制目录
CREATE_MAIL_SPOOL= #默认创建邮箱
带选项就是修改上面的默认参数
useradd -D -e 修改变量 EXPIRE=
useradd -D -f 修改变量 INACTIVE=
useradd -D -s 修改变量 SHELL
3:修改用户的信息
usermod [选项] 用户名
参数和选项说明:
-u:修改UID
-g:修改用户的基本组
-d:修改用户的家目录 原来的家目录文件不会转移至新目录 要想移动要与参数 -m 一起使用
-G:修改用户的附加组原来的附加组会被删除 要想追加附加组使用参数 -a
-c:修改注释信息
-e:修改过期日期
-f:修改过期后可使用的天数
4:删除用户
userdel [选项] 用户名
-r:删除用户一起删除其家目录
5:创建组
groupadd [选项] 组名
-r:创建系统组
-g:指定GID -f:如果指定GID重复 强制创建
6:修改组信息
groupmod [选项] 组名
-g:改UID
-n:改组名
7:删除组
groupdel [选项] 组名
8:更新用户密码和信息
passwd [选项] 用户名
参数和选项说明:
-d:删除密码
-l:锁定用户 机制是在/etc/shadow 文件中用户的密码字符串前加“!”
–stdin:与管道一起用将管道前输出字符串作为密码不需要与用户交互 用于脚本编写
示例:
[root@localhost ~]# echo "123456" | passwd --stdin zxs
更改用户 zxs 的密码 。
passwd:所有的身份验证令牌已经成功更新。
-u:解锁
-e:密码过期日期
-i:密码禁用期限
-n:密码最小年龄
-x:密码最长年龄
-w:密码警告日期
示例:
[root@localhost zxs]# echo "123456" | passwd -n 2 -x 6 -w 1 -i 3 --stdin zxs
调整用户密码老化数据zxs。
passwd: 操作成功
说明:假设在2号修改了用户的密码和其他日期设置
-n 2 (表示用户在这个改的密码至少要用到4号才能修改 2表天数为两天)
-x 6 (表示密码用户用到8号就到期了 使用天数为6)
-w 1 (表示用户密码到期之前的前一天也就是7号,系统会提示密码即将到期的消息提示用户修改密码,在到期之前用户可以登录系统)
-i 2 (表示账号密码过期后,到账号完全禁用锁定的天数,为宽限期3天,此期间用户必须修改密码才能登录系统,禁用后完全无法登录需用root 解锁用户)
9:给组添加密码 一般不需要 用户临时切换基本组需要提供组密码 没有密码不能切换
gpasswd [选项] 组名:
-a:组中添加用户
-d:组中删除用户
10:临时切换基本组 然后输入组密码
newgrp - [组名]
-:表示模拟重新初始化工作环境 同su -
11:显示用户信息
id [选项] [用户名]
-u 显示用户UID
-g 显示用户基本组的GID
-G 显示所有组的GID
-n 显示用户或组的名称
su:切换用户
-:重新读取用户的配置文件初始化其工作环境 就是切换至用户的家目录
pwck:检查用户密码文件
grpck:检查组密码文件
四:权限管理命令
三类用户:
u owns
g groups
o others
a all
1:赋权表示法即直接赋予某一类用户的所有权限
chmod u=
g=
o=
a=
2:授权表示法即修改某一类用户的一个权限位(比较常用比较安全)
chmod u+
g+
o+
a+(a可以省)
3:8进制数值修改权限方法 直接修改所有类型用户的权限
chmod 644
选项:
-R 修改目录权限时一并修改目录下的所有文件
注:此用法最好搭配授权表示法,为了安全起见文件最好不要拥有执行权限,目录最好不要有写权限
–reference FILE 写改文件的权限使与文件FILE一样
4:修改文件的属主和属组
chown [OPTION]... [OWNER][:[GROUP]] FILE...
例如
[root@localhost ~]# chown zxs:ftp text
[root@localhost ~]# ll text
-rw-r--r--. 1 zxs ftp 554 Apr 27 21:18 text
5:修改文件权限的反向掩码
umask默认为002
默认创建的文件的权限是664 666-umask获得
默认创建的目录的权限是755 777-umask获得
umask 掩码数字:修改掩码即修改创建文件和目录时的默认权限
6:install命令类似cp命令
-m 复制是设置文件权限默认为755
-o 复制时修改文件的属主
-g 复制时修改文件的属组