Linux是多用户,多任务操作系统:多用户是指多个用户可以同时使用系统资源,而多任务指同时运行多个进程。 一、用户和组的概念 1.用户和用户组 用户:能够获取系统资源权限的集合。Linux通过用户实现资源分隔。 用户组:具有相同特征的用户集合。用户组作为用户容器,方便于管理用户。
a.用户类别
管理员:root
普通用户:
系统用户:仅仅用于用于启动服务进程。
登录用户:用于使用者交互使用,是系统资源的使用者 b.用户在操作系统中用UID来标识:
UID是16bits的二进制数字,如此范围为:0-65535。Linux 系统对用户UID做出了规定如图:
用户解析库为/etc/passwd ,定义见:/etc/login.defs 文件定义。
2.用户组:组解析库为/etc/group
a.用户组分类 (1)从角色上去分为:管理员组和普通用户组,普通用户组内又包含系统用户组和普通用户组。
(2)从用户角度来看: 基本组:一般与用户命同名,登录时gid为该组gid 附加组:
(3)从组内成员成分区分为: 私有组:一般与对应用户名称相同,组内仅仅有该用户一个用户; 公共组:为多人组,组内用户具有相同特征的权限用户集合。
三、进程:以某个用户的身份运行程序。进程对资源的操作权限取决于它代表的用户。
Linux操作系统中的文件权限模型;
属主:owner
属组:group
其他人:others 四、权限模型生效的机制:
进程的发起者是否与发文件的属主相同,如果是则以文件的属主的身份来访问此文件,否则是否属于文件的属组,如果是则以文件属组的身份来访问此文件,否则一文件
的其他用户的身份来访问此文件。如下图所示:
五、用户和组的管理:
Linux 中用户和用户组的命令有如下命令:
组:groupadd,groupdel,groupmod
用户:useradd,userdel,userdel
认证:passwd,gpasswd 1.组管理命令:
a.groupadd:添加组
groupadd [选项] group_name OPTIONS:
-g GID:指定gid,默认为最大gid+1;
-r: 创建系统组,较为常用;
1
2
3
| ~] #groupadd -r -g 336 testgrp
~] #tail -1 /etc/group
testgrp:x:336:
|
说明:/etc/group文件格式:
1
| testgrp:x:336:gentoo,ubuntu # 组名:组密码:gid:组用户,以逗号分隔
|
b.groupmod
groupmod [选项] GROUP
-g GID:修改GID;
-n new_name:修改组名; -o, --non-unique :允许使用重复的gid
1
2
3
4
5
| ~]# groupmod -g 348 mango # 只能指定没被占用的gid,否则报错,指定被占用的gid,可以加-o 选项
~]# groupmod -o -g 336 mango
~]# cat /etc/group|grep 336
testgrp:x:336:
mango:x:336:
|
c.groupdel命令:删除组
groupdel [选项] GROUP 1
| ~]# groupdel mango # 没有返回就是没问题
|
2.用户管理命令
a.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:--no-create-home -e, --expiredate YYYY-MM-DD: 指定过期时间。 -M:-M, --no-create-home: -N:-N, --no-user-group -o, --non-unique:可设置重复id
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| ##交互式用户创建
~]# useradd magedu -g magedu -G mint,gentoo -c "use for magedu " -d /home/mghome -s /bin/bash
~]# tail -1 /etc/passwd
magedu:x:5003:332:use for magedu :/home/mghome:/bin/bash
~]# tail /etc/group
gentoo:x:5000:magedu
mint:x:330:magedu
~]# useradd -r magedu3 # 系统用户不会创建家目录
##系统用户创建
~]# useradd magedu3 -r
[iyunv@localhost ~]# tail /etc/passwd
magedu3:x:983:329::/home/magedu3:/bin/bash
~]# cd ~magedu3
-bash: cd: /home/magedu3: No such file or directory
|
注意:创建用户时的默认设定配置文件为/etc/login.defs,其中定义用户添加的默认定义 利用 useradd -D 选项可以显示或修改创建用户的默认配置;
useradd -D -[e|f|s /PATH/TO/SHELL ]:修改默认的过期时间、是否不活动时间,shell路径
1
| useradd -D -s /bin/tcsh # 修改默认shell,结果保存于/etc/default/useradd
|
b.usermod [选项] 用户
-u, --uid UID:修改用户的ID
UID;
-g, --gid GROUP:修改用户所属的基本组;
-G, --groups 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;
注意:登录用户,为其自定义的shell程序必须在/etc/shells中,否则不能登录。
-L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
-U, --unlock:解锁用户的密码;
-e, --expiredate EXPIRE_DATE:用与设置用户密码过期时间。
-f,--inactive INACTIVE:密码过期后,不活动时间。 1
2
3
4
5
| ~]# cat /etc/shadow |grep magedu3
magedu3:$1$mAsT1.9N$BK9Ga4xjDcI6yEZCufL6f.:16856:0:99999:7:::
~]# usermod -L magedu3# 锁定用户magedu3
~]# cat /etc/shadow |grep magedu3
magedu3:!$1$mAsT1.9N$BK9Ga4xjDcI6yEZCufL6f.:16856:0:99999:7::: # 密码前添加了一个!
|
c.userdel命令:删除用户
userdel [选项] 登录
-r:删除用户时一并删除其家目录; 1
2
3
4
5
6
| ~]# tail -n 1 /etc/passwd
magedu:x:5003:5003::/home/magedu:/bin/bash
~]# userdel -r magedu
~]# grep magedu /etc/passwd # 找不到magedu 账号
magedu1:x:5002:331::/home/magedu1:/bin/bash
magedu3:x:983:329::/home/magedu3:/bin/bash
|
说明1. /etc/passwd 解析库字段,解析库每行为一条记录,信息栏以":"分隔,以新添加的用户storm用户的解析库条目为例:
1
| storm:x:5001:5001::/home/storm:/bin/bash
|
各字段意义如下
1
| name:passwd:UID:GID:comment:Home_directory:shell路径
|
说明2. /etc/shadow 密码库解析库字段,解析库每行为一条记录,信息栏以":"分隔以新添加的用户storm用户解析的库条目为例:
1
| storm:!!:16867:0:99999:7:::
|
login_name:登录名
encripted_password:加密的密码
date of last password change:上次跟新密码时间(这里时间都是用距离1970-01-01的天数);
minimum password age:最小密码更换周期天数,不到期,想更换密码也更换不了;
maximum password age:最长密码更换周期天数,到期不改,会有措施;
password warning period:密码过期警告日期,在到期之前会提示改密码警告;
password inactivity period:密码到期后宽限时间,在宽限时间内只能重新设置密码后,才能使用系统;
account expiration date:硬性规定的过期时间,到期就会不能登录;
reserved field:保留它用。 六、passwd命令:修改用户信息,普通用户默认不加用户名修改自己的信息,管理员可修改其他用户信息。
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]:
普通用户(1)要求输入老密码(2)符合密码复杂度,不能少于8位,使用至少三类字符,不能近似旧密码等等。
1.passwd USERNAME:修改指定用户的密码,仅root有此权限;
-l, -u:锁定和解锁用户;
-d:清除用户密码串;
-e DATE: 过期期限,日期;
-i DAYS:非活动期限;
-n DAYS:密码的最短使用期限;
-x DAYS:密码的最长使用期限;
-w DAYS:警告期限;
2.passwd --stdin:通过标准输入,输入密码;
echo "PASSWORD" | passwd --stdin USERNAME
1
| ~]# echo "administrator"| passwd --stdin magedu #可以在脚本中避免交互!
|
3.认证机制
通过对比事前存储的,与登录时提供的信息是否一致,用户的默认存储于/etc/shadow中,组的默认存储于/etc/gshadow中。
密码:加密存放;使用单向加密机制;
单向加密:仅能加密,不能解密;提取数据特征码;
特点:定长输出;
数据相同结果相同;
雪崩效应:文件微小改变,但是加密后变化巨大
常用加密算法:
md5sum:messge digest 消息摘要算法 128bit
sha1: secure hash algorithm,160bits, sha224,256,384,512
说明:在passwd命令加密时会添加加salt防止密码泄漏,salt为添加的随机数;
随机数:真随机数: 熵池
伪随机数: 软件模拟产生的
Linux中的随机设备:
/dev/random:仅仅从熵池返回随机数,随机数耗尽会阻塞;
/dev/urandom:先从 熵池返回随机数 ,随机数耗尽会从为随机数生成器返回随机数;
七、资源权限机制:
1.文件系统权限: a.用户类型 属主:owner,u 属组:group,g 其他人:other,o 所有用户定义为:all,a
b.文件权系统权限类型: (1)一般文件权限定义
r:可获得文件内数据
w:可修改文件内数据
x:excutable,可执行 (2)目录文件权限定义
r:可使用ls 命令获取其下所有的文件列表;但不能使用ls -l去获取详细信,也不能使用cd 至目录中;
w:可修改目录的文件列表,也就是在此目录下创建或删除文件;
x:可以使用ls -l 命令获取文件的详细情况,也可以cd到此目录。 c.权限组合机制:用八进制标识文件 例如:rwxr-xr-x:755
2.权限管理:
chmod命令:change [OPTION] ... MODE[,MODE] ... FILE MODE: a.赋权表示法:
用户标识:
u=owner,g=group,o=others,a=all
两类用户权限相同一起写:ug=,go= ,权限不同:u=,g=,o=
chmod ug=rw,o- fstab
b. 授权表示法:表示用户权限的加减;u{+|-}{|r|w|x},g {+|-}{|r|w|x}, o{+|-}{|r|w|x},a {+|-}{|r|w|x}; c. 八进制表示法:只能给所有权限否则如77,则标识为077
d.参考表示法:--reference=FILE,根据提供文件设置权限。 OPTIONS: -R,--recursive:递归
su命令:switch user
5.用户切换
(1)不读取目标用户的个人配置文 件,半切换
su USERNAME
(2)读取目标用户的个人配置文件,登录式切换
su -[l] USERNAME
options:-c ,--command COMMAND: 仅仅以目标用户执行命令后,并返回结果,而不真正 执 行身份切换
说明:root切换到其他用户是不需要密码的,普通用户切换到任何用户都需要密码;
6.gpasswd:为组添加密码
/etc/gshadow:
gpasswd [option] group
-a USERNAME:向组加用户
-d USERNAME:向 组删除用户
7.newgroup命令:登录到另一个组,切换到已有属组是不需要密码,并更改属组为目标属组,切换到新组时,需要新组密码了。
8.chage: chage - change user password expiry information
OPTIONS:
-R,--recursive: 递归# 八进制-R选项赋权有些问题: Linux中不建议随便为文件添加执行权限,但我们必须为目录添加执行权限,往往这样用八进制-R选项,就会是内
部文件具同样有了执行权限。
## chown - change file owner and group
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
可以单独改变属主或属组,属主和属组可以没有任何关系?。
OPTIONS:
-R,--recursive:
--reference=FILE
## chgrp
## umask:文件遮罩码:
文件: 666-umask
目录: 777-umask
注意:之所以用666去减,表示文件默认不能有执行权限;如果减得的结果中,u,g,o或a有执行权限时,需要加1;
### umask 是shell内置命令,命令可以显示或设定 遮罩码
umask or umask MASK(可以3位也可以是4位)
注意:仅仅对当前shell有效。
|