资源,用户和用户组的相关概念:
资源:计算机的计算能力,内存空间等等都可以统称为计算机的资源。
用户:用来标识是否有使用计算机资源的权限
用户组:相当于容器的概念,方便分配权限。
权限:
r w x
文件的权限分为三部分:属主的权限,属组的权限,其他人的权限。
当用户访问某个文件的时候,系统会先对比用户是否是属主,不是的话会对比用户是否在文件的属组里面,不是的话则使用其他人的权限。
普通文件:
r:可读、可以使用cat等命令查看文件内容
w:可写、可以使用命令修改文件里面的内容,也可以删除文件
x:可执行、exacutable、可以在命令提示符下当做命令提交给内核运行
目录:
r:可以显示目录里面的文件
w:可以在目录里面创建文件
x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息。
0 --- 无权限
1 --x 可执行
2 -w- 可写
3 -wx 可写、可执行
4 r-- 可读
5 r-x 可读、可执行
6 rw- 可读写
7 rwx 可读写执行
用户:UID, /etc/passwd
用户组:GID,/etc/group
影子口令:
用户:/etc/shadow
组:/etc/gshadow
用户类别:
管理员用户:0
普通用户:1-65535
系统用户:1-499
一般用户:500-63535
用户组类别:
管理组:root
普通组:
系统组:
一般组:
用户组类别的另一种分法:(这种比较常用)
基本组:用户的默认组
私有组:系统创建用户时,如果用户没有指定默认组,此时会创建一个与用户同名的私有组
附加组:用户可以同时拥有多个组,除了基本组之外的组就叫附加组。
示例:
假设一个用户tom,它的属组也是tom,当它使用命令ls 显示/tmp 这个目录,系统的权限对比过程。
首先系统会查看ls这个命令的权限属性: -rwxr-xr-x root root /bin/ls ,然后用对比tom不是root,所以不是属主,然后对比tom是否在用户组root里面(注意:这里并不是对比tom组是否和root组相同,而是对比tom用户是否在root组里面),发现不是,于是查找其他人权限r-x,可读可执行,于是拥有ls的使用权限。 接着显示/tmp的时候,并不是对比/tmp和ls的权限,而是仍然对比tom和/tmp的权限,也就是说当tom取得ls的使用权的时候,它的权限并不会因为ls是root属主而切换。/tmp/的权限为:drwxrwxrwt root root,逐个对比后拥有其他人权限,权限中包含r,给予显示:
[[email protected] ~]# ls -al /bin/ls
-rwxr-xr-x 1 root root 112664 Oct 15 2014 /bin/ls
[[email protected] ~]# ls /tmp
14ahhs1 25 534 71233bbc a a b kkll568 sadsa*787sdd
[[email protected] ~]# ls -d /tmp
/tmp
[[email protected] ~]# ls -dl /tmp
drwxrwxrwt. 3 root root 4096 Dec 25 14:45 /tmp
passwd配置文件格式:
account:登录名
passwd:mima
UID:用户id
GID:组id
comment:注释信息
home dir:家目录
shell:默认shell
/etc/shadow配置文件格式:
account:登录名
encrypted password:加密后的密码
date of last password change:最近一次更改密码的时间
minimum password age:最小密码使用期限
maximum password age:最大密码使用期限
password warning period:密码过期前警告时间
password inactivity period:密码过期后仍能使用时间
account expiration date:用户过期时间
reserved field:保留区域
加密算法:
对称加密:加密和解密都是统一密码
公钥加密:加密和解密成对出现,公钥加密,私钥解密
单向加密:散列加密,提取数据特征码,用于校验数据的完整性
雪崩效应:一个字符不同,生成的密码大部分字符不一样
定长输出:
md5:Message Digest 128位定长输出
sha1:Secure Hash Algorithm 160位
单向加密的一个例子:
linux中保存用户的密码的文件叫shadow,如果我们cat /etc/shadow 我们会发现密文中的前几位格式都类似这样:$8位密文$定长密文
这么做的原因就是linux使用单向加密对用户的密码进行加密,当用户登录时,系统把用户输入的密码用加密算法进行加密,然后和/etc/shadow文件里面的密码片段进行对比,从而判断密码是否正确。 但是由于shadow文件对一些用户是可读的,相同的密码加密后的密文是一样的,也就是说,如果碰巧shadow有人的密码片段跟你的一样,那么就可以推断出其密码,这是不符合linux的安全标准的,于是系统在加密密码时随机加入了一个字符,这个字符就是所谓的‘salt’,因为单向加密的雪崩效应,所以即使你们的密码一模一样,但是保存在shadow里面的密文也是大部分不一样。根据算法,$$里面那8位就是加密后的‘salt’字符密文。
用户管理相关命令:
useradd:
useradd [option] USERNAME
-u UID
-g GID(基本组)
-G GID,...(附加组)
-c “COMMENT”
-d /path/to/homedir
-s shell
-m -k -m代表创建家目录,-k代表把/etc/skel目录下的文件(.bashrc..)拷贝到家目录
-M 不创建家目录
/etc/login.defs:对用户管理命令指定一些默认值,比如是否useradd时默认是否创建家目录等
注意:用户在指定组之前,被指定的组必须存在,否则命令执行失败,当命令执行失败用户也不会生成
/etc/shells:指定了当前系统可用的安全shell
userdel:
userdel [option] USERNAME
-r:同时删除用户的家目录
id:查看用户的账号属性信息
-u UID
-g
-G
-n
finger:查看用户账号信息
finger USERNAME
usermod:
-u uid
-g gid
-a -G GID:不使用-a选项会覆盖此前的附加组
-c
-d -m:-d代表指定新的家目录,-m表示把原来家目录里面的东西拷贝到新的家目录(这是因为指定新的家目录后,用户对原来的家目录下的文件失去了权限)
-l:改变用户的登录名
-L:锁定账号
-U:解锁账号
chsh:修改用户的默认shell
chfn:修改注释信息
密码管理
passwd [USERNAME]
--stdin:从标准输入中读取密码
-l:锁定账号
-u:解锁账号
-d:删除用户密码
示例:
[[email protected] html]# echo ‘123456‘|passwd root --stdin
Changing password for user root.
passwd: all authentication tokens updated successfully.
pwck:检查用户账号完整性
组管理:
创建组:groupadd
groupadd
-g GID
-r:添加为系统组
groupmod
-g GID
-n GROUPNAME
groupdel GROUPNAME
gpasswd:为组设定密码
newgrp GRPNAME <--> exit
注意:newgrp命令是临时切换基本组,可以使用exit退出,当newgrp切换到任何自己的附加组是不需要密码的,当切换到一个新组的时候,如果新组没有设定密码则无法加入,此时用root身份使用gpasswd给用户创建组密码后,用户就可以使用newgrp GRPNEME 输入密码后切换
示例:
[[email protected] linzb]# su linzb
[[email protected] ~]$ touch a
[[email protected] ~]$ ls -l a
-rw-rw-r-- 1 linzb linzb 0 Dec 25 16:50 a
[[email protected] ~]$ newgrp root
Password:
Invalid password.
[[email protected] ~]$ exit
exit
[[email protected] linzb]# gpasswd root
Changing the password for group root
New Password:
Re-enter new password:
[[email protected] linzb]# su linzb
[[email protected] ~]$ newgrp root
Password:
[[email protected] ~]$ touch b
[[email protected] ~]$ ls -alh b
-rw-r--r-- 1 linzb root 0 Dec 25 16:51 b