资源,用户和用户组的相关概念:

资源:计算机的计算能力,内存空间等等都可以统称为计算机的资源。

用户:用来标识是否有使用计算机资源的权限

用户组:相当于容器的概念,方便分配权限。

权限:

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,给予显示:

[root@logstach ~]# ls  -al  /bin/ls

-rwxr-xr-x 1 root root 112664 Oct 15  2014 /bin/ls

[root@logstach ~]# ls  /tmp

14ahhs1  25  534  71233bbc  a  a b  kkll568  sadsa*787sdd

[root@logstach ~]# ls  -d /tmp

/tmp

[root@logstach ~]# 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’,因为单向加密的雪崩效应,所以即使你们的密码一模一样,只要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:删除用户密码

示例:

[root@logstach 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 输入密码后切换

示例:

[root@logstach linzb]# su linzb

[linzb@logstach ~]$ touch a

[linzb@logstach ~]$ ls  -l a

-rw-rw-r-- 1 linzb linzb 0 Dec 25 16:50 a

[linzb@logstach ~]$ newgrp  root

Password:

Invalid password.

[linzb@logstach ~]$ exit

exit

[root@logstach linzb]# gpasswd root

Changing the password for group root

New Password:

Re-enter new password:

[root@logstach linzb]# su linzb

[linzb@logstach ~]$ newgrp root

Password:

[linzb@logstach ~]$ touch b

[linzb@logstach ~]$ ls  -alh b

-rw-r--r-- 1 linzb root 0 Dec 25 16:51 b

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐