目录:linux
-、linux用户及组的管理算法
1.用户和组的基本概念docker
1.1用户类别及用户标示shell
1.2组类别及组标识centos
1.3用户认证信息及加密算法安全
2.用户信息及用户密码相关文件app
2.1用户的信息库文件/etc/passwdless
2.2用户的密码库文件/etc/shadowide
3.组信息及组密码相关文件工具
3.1组的信息库文件/etc/group
3.2组的密码库文件/etc/gshadow
4.用户及组的相关管理命令
4.1用户管理命令
4.2组管理命令
4.3密码管理及其余相关命令
2、linux文件权限管理
1.文件权限模型
1.1进程安全上下文及文件权限的表示
1.2文件和目录的权限状态
2.文件权限状态及相关管理命令
2.1文件的八进制权限表示法
2.2权限管理命令chmod
3.文件从属关系及相关管理命令
3.1属主管理命令chown
3.2属组管理命令chgrp
4.文件umask的特性及管理
4.1umask的做用
4.2umask的管理
linux用户及组的管理:
1.用户和组的基本概念
1.1用户类别及用户标示
用户类别:管理员和普通用户
管理员,即root用户,能够对系统进行一切操做;
普通用户:分为系统用户和登陆用户。
系统用户:是为了可以让那些后台进程或服务类进程以非管理员的身份运行,一般须要为此建立多个普通用户;这类用户从不用登陆系统;
登陆用户:是须要操做计算机的交互式登陆的用户
用户标示:
即UID,用做用户名称的转换,用0-65535之间的二进制数字表示,默认60000后的UID用做保留
管理员的UID永远为0
普通用户的UID则为1-65535
系统用户的UID在centos6里为1-499,在centos7里为1-999
登陆用户的UID在centos里为500-60000,centos7里为1000-60000
1.2组类别及组标示
用户组按类别可分为三类:
第一种类别:管理员组和普通用户组,普通用户组里又分为了系统用户组和登陆用户组。
第二种类别:基本组和附加组
第三种类别:私有组和公共组
组标示:
即GID,用做组名称的转换,用0-65535之间的数字表示,默认60000后的GID用做保留
管理员组的GID永远为0
普通用户组的GID则为1-65535
系统用户组的GID在centos6里为1-499,在centos7里为1-999
登陆用户组的GID在centos里为500-60000,centos7里为1000-60000
1.3用户认证信息及加密算法
用户认证:
用户登陆计算机时,计算机经过对比事先存储的数据与登陆时提供的信息是否一致;即验证用户的密码。
密码的使用策略应遵循如下几点:
1、使用随机密码;
2、最短长度不要低于8位;
3、应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;
4、按期更换
密码文件里存储的密码是加密的,而对密码进行加密的方式在centos里主要是单向加密,算法主要有md五、sha一、sha22四、sha25六、sha38四、sha512
对于单项加密这种机制而言,为了不多个用户的密码相同,在计算之时加salt(随机数,每一个用户的salt都不同);加入的salt不一样,加密后的结果相去甚远,这样即便两个用户的密码相同,在用户看来两个加密后的密文字符串也不同,避免用户密码泄露
2.用户信息及用户密码相关文件
2.1用户的信息库文件/etc/passwd
用户的信息存储在/etc/passwd文件中,以冒号分隔的每一个字段的含义为
name:password:UID:GID:GECOS:directory:shell
name: 用户名
password:密码占位符。实际密码保存在/etc/shadow中
UID: 用户的ID号
GID: 用户所属的基本组的ID号;
GECOS: 注释信息。可选的,提供用户的信息
directory:用户的家目录;用户登陆系统后首先进入此目录,root用户默认是/root,普通用户则是/home/用户名
shell: 用户的默认shell,定义用户登陆系统后使用的shell程序;
2.2用户的密码库文件/etc/shadow
早期的unix系统的密码保存在/etc/passwd中,但passwd文件对全部用户可读,存在安全隐患,因此如今的linux使用shadow保存加密后的密码,/etc/shadow文件只有管理员才能够访问
/etc/shadow文件中保存了用户加密后的密码及密码的各类期限,以冒号为分隔每段分别表示为:
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期限:非活动期限:过时期限:保留字段
用户名:即用户的名称,对应/etc/passwd中的用户名
加密的密码:
此段若是表示为*,则表示禁止此用户登陆;
若是加密的字符串前有!表示用户被禁用,新建立的用户尚未密码时就是禁用状态,使用!!表示;
若是此段是空的,表示用户没有密码,登陆时不须要密码;
第一段:加密算法,1-6分别表示md五、sha一、sha22四、sha25六、sha38四、sha512
第二段:用户的salt随机数
第三段:用户加密后的密码
最近一次修改密码的时间:linux计算日期是以1970年 1月1号开始计算到修改密码那一刻的时间天数
最短使用期限:表示多久后才能够改密码。0表示能够随时更改
最长使用期限:更改后的密码最长可使用多少天
警告期限:密码在到达最常使用期限前,系统会发出警告,提醒用户密码将过时请更新密码,默认是7,表示密码在到达最常使用期限前的7天会发出警告
非活动期限(过时期限):若是过了警告期没有更有更改密码,则在非活动期限内,必须更改密码后才能够登陆进系统
过时期限:帐户过时时间,帐户过时时,用户将不被容许登陆
注意,帐户过时不一样于密码过时。帐户过时时,用户将不被容许登陆;密码过时时,用户将不被容许使用其密码登陆。
保留字段:此字段保留做未来使用
3.组信息及组密码相关文件
3.1组的信息库文件/etc/group
组的信息存储在/etc/group文件中
每行以冒号为分隔符分割成4段,依次表示 为
group_name:password:GID:user_list
group_name:用户组的名称
password: 组密码占位符,实际密码保存在/etc/shadow中
GID: 组的id号
user_list: 用户列表,注意:该组的用户成员是:以此组为附加组的用户的用户列表;而用户的基本组在/etc/passwd中记录
3.2组的密码库文件/etc/gshadow
/etc/gshadow 文件中保存了用户组加密后的密码
分别为:
组名:加密了的密码:组管理员:组成员
4.用户及组的相关管理命令
4.1用户管理命令
useradd命令:建立用户
useradd [选项] 登陆名
选项:
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本组ID,此组必须事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;
-c, --comment COMMENT:指明注释信息;
-d, --home HOME_DIR:以指定的路径做为用户的家目录;经过复制/etc/skel此目录并重命名实现;指定的家目录路径若是事先存在,则不会为用户复制环境配置文件;
-s, --shell SHELL:指定用户的默认shell,可用的全部shell列表存储在/etc/shells文件中;
-r, --system:建立系统用户;
-M:不建立用户主目录,即便系统在/etc/login.defs 中的设置 (CREATE_HOME) 为 yes
-f:用户密码过时后,帐户被完全禁用以前的天数。0表示(到最长使用期限后)当即禁用,-1表示禁用这个功能(帐户永不由用,改密码后仍可使用)。
注意:建立用户时的诸多默认设定配置文件为/etc/login.defs
useradd-D:显示建立用户的默认配置;
useradd -D 选项: 修改默认选项的值;修改的结果保存于/etc/default/useradd文件中;
练习:将建立用户时默认shell更改成/bin/csh
usermod命令:修改用户属性
usermod [选项] 登陆名
-u,--uid UID:修改用户的ID为此处指定的新UID;
-g, --gid GROUP:修改用户所属的基本组;注意,指定的组要事先存在
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组。注意:原来的附加组会被覆盖;
-a, --append:与-G一同使用(-a -G NEW_GROUP),用于为用户追加新的附加组;
-c, --comment COMMENT:修改注释信息;
-d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
-m, --move-home:只能与-d选项一同使用(-m -d NEW_HOMEDIR),用于将原来的家目录移动为新的家目录;原有的文件都会保留
-l, --login NEW_LOGIN:修改用户名;
-s, --shell SHELL:修改用户的默认shell;
-L, --lock:锁定用户密码;即在用户原来的密码字符串以前添加一个"!"禁止用户登陆
-U, --unlock:解锁用户的密码
userdel命令:删除用户,默认不删除用户的家目录
userdel [选项] 登陆
-r:删除用户时一并删除其家目录
4.2组管理命令
groupadd命令:添加组
groupadd [选项] group_name
-g GID:指定GID;默认是上一个组的GID+1
-r: 建立系统组
groupmod命令:修改组属性
groupmod [选项] GROUP
-g GID:修改GID
-n new_name:修改组名
groupdel命令:删除组
groupdel [选项] GROUP
练习1:
建立用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001);
练习2:
建立用户fedora,其注释信息为"Fedora Core",默认shell为/bin/tcsh;
练习3:
修改gentoo用户的家目录为/var/tmp/gentoo;要求其原有文件仍能被用户访问;
练习4:
为gentoo新增附加组netadmin;
4.3密码管理及其余相关命令
passwd命令:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-nmindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1) passwd:不带任何选项,修改用户本身的密码;
(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;
-l, --lock 锁定用户,使其没法登陆;
-u, --unlock 解锁用户;
-d, --delete 清除用户密码串;
-e, --expire 终止用户密码,使其当即过时,必须修改密码方可登陆;
-i, --inactive DAYS 非活动期限;
-n, --minimum DAYS 密码的最短使用期限;
-x, --maximum DAYS 密码的最长使用期限;
-w, --warning DAYS 警告期限;
--stdin:
echo "PASSWORD" | passwd--stdin USERNAME
将管道前输入的字符串内容做为管道后用户的密码
练习:
将magedu做为docker用户的密码,同时不显示密码更改信息
组密码文件:
/etc/gshadow默认给组定义其组密码,也能管理组中的用户
组密码做用:
须要临时切换到某个组做为其基本组的用户,若是其附加组不包含此组,则必须输入组密码后才能切换到此组
gpasswd命令:
gpasswd [选项] GROUP_NAME
-a USERNAME:向组中添加用户
练习:向mygrp组中添加docker用户
-d USERNAME:从组中移除用户
练习:将mygrp组中的archlinux用户移除
newgrp命令:临时切换指定的组为基本组;
newgrp [-] [group] 切换后须要退出执行exit便可,
注意:
若是切换的组是用户所属的附加组,则能够直接切换;不然切换到其余组则须要输入其组密码才能够切换到此组
-:-选项会模拟用户从新登陆以实现从新初始化其工做环境;即登陆时的基本组就为临时切换的指定组
不加-则只表示临时切换到新的基本组
chage命令:更改用户密码过时信息
chage [选项] 登陆名
-d 修改最近一次修改密码的时间
-E 修改密码过时时间
-I 非活动期限
-W 警告期限
-m 最短使用期限
-M 最长使用期限
linux文件权限管理:
1.文件权限模型
文件的权限模型大致分为两类:
1、mode:rwxrwxrwx 注意:权限当中的读写执行权限位置是固定的
2、ownership:从属关系(user, group)
1.1进程安全上下文及文件权限的表示
进程安全上下文,进程对文件的访问权限应用模型:
1、进程的属主与文件的属主是否相同;若是相同,则应用属主权限;
2、不然,则检查进程的属主是否属于文件的属组;若是是,则应用属组权限;
3、不然,就只能应用other的权限;
权限:
r:readable, 可读的
w:writable, 可写的
x:executable,可执行的
1.2文件和目录的权限状态
文件:
r:可以使用cat、less等工具获取文件的数据
w:可修改文件的数据,包括改动原来的内容或新增内容
x:可将此文件运行为进程;
对于文件来讲,默认不该该有执行权限,应为若是其拥有执行权限,则能够将其运行为一个进程,有可能发起危险操做
目录(路径映射):
r:可以使用ls命令获取其下的全部文件列表;可是不包括查看详细信息(ls -l)
w:可修改此目录下的文件列表;即建立或删除文件;
x:可cd至此目录中,且可以使用ls -l来获取全部文件的详细属性信息;
对于目录来讲,通常都会有读取和执行权限,不然没法查看目录下的文件列表
2.文件权限状态及相关管理命令
2.1文件的八进制权限表示法
ls-l
rwxrwxrwx:
左三位:定义user(owner)属主的权限
中三位:定义group属组的权限;
右三位:定义other其余用户的权限
权限组合机制:
---000 0
--x001 1
-w-010 2
-wx011 3
r--100 4
r-x101 5
rw-110 6
rwx111 7
练习:
rw-rw-r--(664),rwxrwxr-x(775),rwxr-x---(750),rw------(600),
rwxr-xr-x(755),664(rw-rw-r--),640(rwxr-----),600(rw-------),775(rwxrwxr-x)
2.2权限管理命令chmod
chmod命令:改变文件权限
chmod [OPTION]...MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODEFILE...
chmod [OPTION]...--reference=RFILE FILE...
三类用户:
u:属主 user
g:属组 group
o:其它 other
a:全部 all
(1) chmod [OPTION]... MODE[,MODE]... FILE...
赋权表示法:直接操做一类用户的全部权限位rwx;
u=
g=
o=
a=
例如:
chmodg=rw fstab
chmodug=r fstab
chmodu=rwx,g=rw,o= fstab
受权表示法:直接操做一类用户的一个权限位r,w,x;
u+,u-
g+,g-
o+,o-
a+,a-
例如:
chmodu-x fstab
chmodo+r fstab
chmodug+x fstab
chmodg-wx fstab
chmod+x fstab
chmod-x fstab
chmodu+x,g+w fstab
(2) chmod [OPTION]... OCTAL-MODE FILE...
八进制权限位表示法:三个位置的权限都要写上
例如:
chmod 660 fstab
(3)chmod [OPTION]... --reference=RFILE FILE...
参考其余的文件权限并修改至与之同样
例如:
chmod--reference=/var/log/messages fstab
将fstab的权限改至跟/var/log/messages同样
选项:
-R,--recursive:递归修改
递归修改文件权限时,最好只用于受权表示法中,由于目录有执行权限,递归修改文件后,全部文件也拥有了执行权限
例如:
chmod-R 700 skel/
chmod-R go= skel/
chmod-R u+r skel/
注意:用户仅能修改属主为本身的那些文件的权限;
3.文件从属关系及相关管理命令
3.1属主管理命令chown
chown命令:既能够修改属主,也能够修改属组
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
选项:
-R:递归修改
例如:
chown -R docker skel/
chown:mygrp /tmp/mytest/ 冒号以前没有内容,表示属主不变
chown -R archlinux:mygrp skel/
chown -R archlinux.mygrp skel/
chown-R --reference=/tmp/moosefs/ /tmp/skel/
3.2属组管理命令chgrp
chgrp命令:只能用来改属组,通常不多用到(chown命令既能够修改属主,也能够修改属组)
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:仅管理员可修改文件的属主和属组;
练习:
1、新建系统组mariadb, 新建系统用户mariadb,属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;
2、新建GID为6000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;
3、新建用户suse,其家目录为/users/suse,密码同用户名;
4、新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;
5、为用户gentoo和fedora新增附加组mageedu;
6、复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的全部文件的属组为mageedu,并让属组对目录自己拥有写权限;
4.文件umask的特性及管理
4.1 umask的做用
umask:文件的权限反向掩码,遮罩码;
文件的默认权限:
666-umask (由于文件默认不该该拥有执行权限)
目录的默认权限:
777-umask (目录默认应该拥有执行权限)
注意:之因此文件用666去减,表示文件默认不能拥有执行权限;若是减得的结果中有执行权限,则须要将其加1;
umask: 023
666-023=644
777-023=754
4.2 umask的管理
umask命令:
umask:查看当前umask
umask MASK: 设置umask
注意:此类设定仅对当前shell进程有效;
练习:
设置umask为023并建立/tmp/test文件 和/tmp/testdir目录查看其权限