目录
一、用户和组管理
认证机制,身份标识
用户的作用:实现资源分派
1.资源分派的三个层次:
Authentication:认证(能够进入系统)
Authorization:授权(能够进行一些操作)
Accouting( Audition ):审计(保证权限的合规使用)
手段(机制)
token:只有密码,没有用户名,令牌认证机制
, identity(username/password) 账号
2.Linux用户:Username/UID
管理员:root, 0
普通用户:1-65535
系统用户:1-499, (CentOS 7)1-999
对守护进程获取资源进行权限分配
保留给系统使用的ID, (提供了一个所有者账号),使系统上面启动的有些服务可以以较小的权限运行
1-99为发行版自行创建的系统账号
登录用户:500+, 1000+
交互式登录
3.Linux组:Groupname/GID
将某一类用户和文件建立关联关系
管理员组:root, 0
普通组:
系统组:1-499, (CentOS)1-999
普通组:500+, 1000+
3.Linux安全上下文
运行中的程序:进程 (process)
以进程发起者的身份运行:
root:cat
tom:cat
[root@Tux tmp]# su - me
[me@Tux ~]$
[me@Tux ~]$ cat /etc/shadow
cat:/etc/shadow:权限不够
进程所能够访问的所有资源的权限取决于进程的发起者的身份
4.Linux组的类别
用户的基本组(主组):
组名同用户名,且仅包含一个用户:私有组
创建用户时没有特别指明组名的话,会自动创建私有组
问题:主组有什么用呢?
在创建文件时,默认设定属主和属组
用户的附加组(额外组)
5.Linux用户和组相关的配置文件
/etc/passwd:用户及其属性信息(名称、UID、基本组ID等等)
并不保存密码
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
用户完成基本组切换时使用
/etc/passwd:
name:password:UID:GID:GECOS:directory:shell
用户名:密码占位符:UID:GID:用户的详细信息:主目录:默认shell
/etc/group:
group_name:password:GID:user_list
组名:组密码占位符:GID:以当前组为附加组的用户列表(分隔符为逗号)
作用:在用户完成基本组切换时使用到组密码
/etc/shadow
用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限:最大密码使用期限:密码警告时间段:密码禁用期:账户过期日期:保留字段
加密机制:
加密:明文--> 密文
解密:密文--> 明文
单向加密:提取数据指纹,考虑计算机性能速度
md5:message digest, 128bits
sha1:secure hash algorithm, 160bits
sha224:224bits
sha256:256bits
sha384:384bits
sha512:512bits
命令:md5sum提取数据指纹 sha1sum
雪崩效应:初始条件的微小改变,将会引起结果的巨大改变
定长输出
加上杂质,防止当两个人密码相同时,其中一个人通过相同的密文猜测到另一个人的密码
密码的复杂性策略:
1、使用数字、大写字母、小写字母及特殊字符中至少3种
2、足够长
3、使用随机密码
4、定期更换:不要使用最近曾经使用过的密码
二、用户和组相关的系统管理命令
1.用户创建:useradd
useradd [options] LOGIN
-u UID:[UID_MIN, UID_MAX], 要大于最近最大的UID,定义在/etc/login.defs
-g GID:指明用户所属基本组,可为组名,也可以GID;
组要事先存在
-c "COMMENT":用户的注释信息
-d /PATH/TO/HOME_DIR:以指定的路径为家目录;
创建用户时从/etc/skel复制文件到家目录下,用于信息设定,如果-d指定的目录已经存在,则不从skel中复制文件
-s SHELL:指明用户的默认shell程序,可用列表在/etc/shells文件中;
不指明的话默认在/etc/default/useradd中定义
问题:查看当前系统有哪些shell
cat /etc/shells
[root@Tux ~]# useradd -s /bin/tcsh usertcsh
[root@Tux ~]# !tail
tail -1 /etc/passwd
usertcsh:x:507:507::/home/usertcsh:/bin/tcsh
-G大写 GROUP1[,GROUP2,...[,GROUPN]]](p.s.逗号隔开):为用户指明附加组;组必须事先存在;
-r:创建系统用户,ID号从500或1000开始递减创建
CentOS 6:ID<500
CentOS 7:ID<1000
!!表示禁用
默认值设定:/etc/default/useradd文件中
useradd -D 查看或修改默认设置
e.g. [root@Tux etc]# useradd -D -s /bin/tcsh
练习
创建用户gentoo,附加组为distro和linux,默认shell为/bin/csh,注释信息为"Gentoo Distribution";
[root@Tux etc]# groupadd distro
[root@Tux etc]# groupadd linux
[root@Tux etc]# useradd -G distro,linux -s /bin/tcsh -c "Gentoo Distribution" gentoo
[root@Tux etc]# id gentoo
uid=510(gentoo) gid=510(gentoo) 组=510(gentoo),1017(distro),1018(linux)
2.组创建:groupadd
groupadd [OPTION]... group_name
-g GID:指明GID号;[GID_MIN, GID_MAX]
-r:创建系统组,ID号从500或1000开始递减创建
CentOS 6:ID<500
CentOS 7:ID<1000
3.查看用户相关的ID信息:id
id [OPTION]... [USER]
无选项无参数,默认显示当前用户所有相关的ID信息
-u:UID
-g:GID
-G:所有组(包括基本组和附加组)
-n:Name e.g. id -g -n me显示基本组名称
4.切换用户或以其他用户身份执行命令:su
su [options...] [-] [user [args...]]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件
su - UserName:登录式切换,会读取目标用户的配置文件;完全切换
Note:root su至其他用户无须密码;非root用户切换时需要密码
换个身份执行命令:
su [-] UserName -c 'COMMAND'
选项:
-c:
-, --login, -l:“su -l UserName”相当于“su - UserName”
-s:指定shell
5.用户属性修改:usermod
usermod [OPTION] login
-u UID:新UID
-g GID:新基本组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME:新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项
[root@Tux ~]# usermod -d /home/me2 -m meuse
-l login_name:新的名字
-L:lock指定用户,加了密的密码前会多一个符号!
-U:unlock指定用户
-e YYYY-MM-DD:指明用户账号过期日期
-f INACTIVE:设定非活动期限
6.给用户添加密码:passwd
命令主要操作的文件 /etc/shadow
passwd [OPTIONS] UserName:修改指定用户的密码,仅root用户有权限
passwd:修改自己的密码,用户具有权限使用该命令
常用选项:
-l:锁定指定用户
-u:解锁指定用户
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限(密码过期后的宽限期)
--stdin:从标准输入接收用户密码
echo "PASSWORD" | passwd --stdin USERNAME
Note:/dev/null, bit buckets数据位桶
/dev/zero, 吐0
P.S. usermod -f 密码禁用期 && passwd -i
usermod -e YYYY-MM-DD:禁用账户
问题:当不想展示用户命令执行状态结果时可以如何操作
e.g. echo ‘centos’ | passwd –stdin user1 &> /dev/null
7.删除用户:userdel
userdel [OPTION]... login
-r:连同用户家目录一并删除
只有userdel 用户名 不会删除其家目录
8.组属性修改:groupmod
groupmod [OPTION]... group
-n group_name:新名字
-g GID:新的GID
9.组删除:groupdel
groupdel GROUP
10.组密码:gpasswd
gpasswd [OPTION] GROUP
-a user:将user添加至指定组中
-d user group:删除用户user的以当前组为组名的附加组
-A user1,user2,...:设置有管理权限的用户列表
命令:newgrp 临时切换基本组
如果用户本不属于此组,则需要组密码
跟密码相关的命令
命令:pwck账号密码审计:检查密码文件完整性
11.修改用户属性:chage
chage [OPTION]... LOGIN
-d LAST_DAY 设定最近一次修改密码时间
-E, --expiredate EXPIRE_DATE 账户过期期限
-I, --inactive INACTIVE 非活动期限
-m, --mindays MIN_DAYS 密码最小使用天数
-M, --maxdays MAX_DAYS 密码最大使用天数
-W, --warndays WARN_DAYS 警告天数
12.其它命令
chfn(修改用户详细信息相当于useradd -c)
chsh(改默认shell)
finger(查看用户详细信息)
回顾
命令总结:useradd, groupadd, su, id, usermod, userdel, groupmod, groupdel, passwd, newgrp, pwck, gpasswd, chage, chsh, chfn, finger
三、权限管理
1.文件的权限主要针对三类对象进行定义
owner:属主, u
group:属组, g
other:其他, o
2.每个文件针对每类访问者都定义了三种权限
r:Readable
w:Writable
x:eXcutable
文件
r:可使用文件查看类工具获取其内容
w:可修改其内容
x:可以把此文件提请内核启动为一个进程
目录
r:可以使用ls查看此目录中文件列表
w:可在此目录中创建文件,也可删除此目录中的文件
x:可以使用ls -l查看此目录中文件列表,可以cd进入此目录
能否删除文件取决于对父目录的权限,即对目录有写权限时,即使对其中的文件没有写权限,也可以删除它(不一定要连同父目录一起删除)
创建任何文件默认无执行,目录有执行
八种权限
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例如:
640:rw-r-----
rwxr-xr-x:755
3.修改文件权限:chmod
chmod [OPTION]... OCTAL-MODE FILE... 按八进制格式修改文件或目录权限
-R:递归修改权限,连同目录中的文件权限也改
[root@Tux modtest]# chmod 700 mod
chmod [OPTION]... MODE[,MODE]... FILE...
MODE:
修改一类用户的所有权限:
u=rx
g=
o=
ug=
a=
u=,g=
没有任何权限=后空白或---
[root@Tux tmp]#chmod u=rwx a.txt
修改一类用户某位或某些位权限
u+
u-
a+ <=> +
chmod [OPTION]... --reference=RFILE FILE...
参考RFILE文件的权限,将FILE的权限修改成与RFILE通用
4.修改文件的属主:chown
修改文件的属主和属组
此命令仅root可用
chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法:
OWNER 改属主
OWNER:GROUP 改属主和属组
:GROUP 只改属组 Note:命令中的冒号可用.替换
-R:递归
chown [OPTION]... --reference=RFILE FILE...
5.修改文件的属组:chgrp
chgrp [OPTION]... GROUP FILE... 相当于chown :group file
chgrp [OPTION]... --reference=RFILE FILE...
-R
6.文件或目录创建时的遮罩码:umask
导入:为什么用户创建的文件默认为664或644,目录是775或755...,而不是其他呢?
usmak是设置用户默认权限的补码
文件:666-umask
Note:如果某类的用户的权限减得的结果中存在x权限,则将其权限+1
目录:777-umask
用法:
umask:查看
umask #:设定
仅对当前用户的当前shell有效
命令总结
chmod, chown, chgrp, umask
回顾
用户管理:
修改相关
useradd, usermod, chsh, chfn, chage, userdel
groupad, groupmod, groupdel
密码相关
passwd, gpasswd, pwck
信息查看
id, finger, who, whoami, w
su
配置文件:/etc/passwd, /etc/shadow, /etc/group, /etc/gshadow
权限管理:
perm:mode(rwxrwxrwx), ownership
chmod
chown
chgrp
-R, --reference=RFILE
umask [UMASK]
FILE:666-umask
DIR:777-umask
参考资料:
马哥随堂笔记
注:诚恳欢迎读者对本文提出批评意见,若发现存在错误,我定第一时间修改。如果读者觉得文章对您有帮助,欢迎点赞鼓励一下哟٩(๑❛ᴗ❛๑)۶。