linux权限7777,Linux中用户和权限管理

Linux是一个多用户多任务操作系统,多用户是指可以多人同时使用系统资源;,多用户是指多个用户可以在同一时间内   登录同一个系统执行各自不同的任务,而互不影响。因此为了保证系统安全性和各用户的隐私,系统必须要给每一个用户一个身份然后授予其相应的权限,不同用户具有不同的权限,每个用户是在权限允许的范围内使用系统资源,linux正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。

linux用户,组,权限的相关概念

在linux中账号就是用户在系统上的一种具现,每个用户都用一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能进入系统和自己的主目录。通过对其账号的权限管理来实现对用户分配系统资源。当我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。组就是用来对用户进行权限管理的一个容器,将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。

用户的类别

1,管理员:root

2,普通用户:

系统用户:仅用于运行服务程序;

登录用户:系统资源的正常使用者;

用户标识:UserID, UID ,用16bits二进制数字表示,表示范围为:0-65535;

管理员:0

普通用户:1-65535,其中系统用户在CentOS 5, 6中是 1-499, CentOS 7中是 1-999。登陆用户                                                   在 CentOS 5,6中是 500+ ,在CentOS 7中是:1000+

UID和用户之间的转换称为名称解析:名称转换;

解析库: username UID

/etc/passwd:用户名、UID及其它属性信息解析库;

用户组类别:1,管理员组

2,普通用户组:系统组,  登录组

组标识:GroupID, GroupID

管理员组:0                普通用户组:1-65535,其中系统组在CentOS 5, 6中是 1-499, CentOS 7中是 1-999。登陆组                                                            在 CentOS 5,6中是 500+ ,在CentOS 7中是:1000+

GID和组之间的转换称为名称解析:名称转换;

名称解析:groupname gid

组解析库:/etc/group

组类别以用户为核心来划分又可以分为两类:

用户的主组:基本组;

用户的附加组:额外组;

组类别根据组内容纳的用户来划分可以分为两类:

私有组:与用户名相同,且只有一个此用户;

公共组:组内包含了多个用户;

认证机制:

认证机制:验正用户的确是他所声称的人;

通过对比事先存储的信息,与登录时所提供的信息是否一致;

认证信息存储于:

用户的信息库(用户影子口令文件):/etc/shadow

组的信息库(组影子口令文件):/etc/gshadow

用户密码:加密存放,使用单向加密机制(单向加密:仅能加密,不能解密,提取数据特征码,数据相同:加密结果相同),此加密机制有两个特点: 定长输出, 雪崩效应。

加密算法:md5: message digest, 128bits

sha1: secure hash algorithm, 160bits

sha224

sha256

sha384

sha512

每一次加密时需要添加salt:取随机数

随机数有两种来源:

熵池:

伪随机数:软件模拟产生;

dev/random:仅从熵池返回随机数,随机数耗尽时会阻塞进程;

/dev/urandom:先从熵池返回随机数,熵池耗尽时,则从伪随机数生成器返回随机数

用户和组的管理:

组解析库文件:/etc/group

linux权限7777,Linux中用户和权限管理_第1张图片格式(一共4个字段,以:分隔) : GRPNAME:x:GID:user1, user2, ...

组名:密码点位符:GID:以此组为附加组的用户列表,以逗号分隔

组管理相关命令:

groupadd:添加组

使用格式:groupadd  [选项]  group

选项:          -g  GID:指明GID;

-r, --system:系统组;(指定后不可修改)

示例:

120e1b8bc5a5df0650a1138187e8ef58.png

7f2d60c4a33ec4cbe880262bd8806449.png

groupmod:修改组信息

使用格式: groupmod [选项] GROUP

选项:-g  GID

-n NEW_NAME:修改组名;

使用示例:修改组YYY 的GID为为7777,组名改为YY

e460a5a089eaf07ee027d681308ace2b.png

50dadbf86be6d9f3f965ba67bef4a153.png

groupdel:删除组使用格式:groupdel [选项] GROUP

用户解析库文件:/etc/passwd

f35e8f3dd36dcc0b0a8f66bba1a730ce.png格式(一共7个字段,以:分隔):name:password:UID:GID:GECOS:directory:shell

用户名:密码点位符:UID:用户的基本组GID:注释信息:家目录路径:用户的登陆shell

用户管理相关命令:

useradd:添加用户

使用格式:useradd  [选项]  登录名

常用选项:

-c, --comment COMMENT:注释信息,一般为Full Name;

-d, --home  /PATH/TO/HOME_DIR:家目录路径;目标路径不能事先存在,否则会有警告,不会得利skel相关的文件给用户;

-g, --gid GROUP:用户的基本组组名或GID;

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用户所属的附加组列表,彼此间用逗号隔开,中间没有空格;

-m, --create-home:强制创建家目录;

-M:不创建用户主目录,即使系统在 /etc/login.defs 中的设置 (CREATE_HOME) 为 yes;

-r, --system:创建一个系统账户

-s, --shell SHELL:用户的登录 shell 名,默认为留空,让系统根据 /etc/default/useradd 中的 SHELL 变量选择默认的登录shell。(注意:创建登录用户时,为其自定义的shell程序必须为可登录shell,且要位于/etc/shells文件中;)

-u, --uid UID:用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负,默认使用大于等于UID_MIN,且大于任何其他用户 ID 最小值。

-e, --expiredate  EXPIRE_DATE:用户账号的过期期限;过期后会被锁定;日期以 YYYY-MM-DD 格式指定                    -f, --inactive INACTIVE:密码过期后,账户被彻底禁用之前的天数。0 表示立即禁用,-1 表示禁用这个功能。使用示例:

创建用户MYS,UID为5500,基本组为MYS,附加组为TBS和GOO;登陆shell为/sbin/nologin,家目录路径为/home/mys

linux权限7777,Linux中用户和权限管理_第2张图片

984ad4350273056552aadb4c16883a2a.png

useradd -D:显示创建用户时的默认设置;

useradd -D  选项:设置某默认选项;

使用示例:

把添加用户时的默认配置用户的shell改为/sbin/nologin/

linux权限7777,Linux中用户和权限管理_第3张图片

90b5ab2840898b80806bc13fd355ba9a.png

为用户提供默认配置的配置文件:/etc/login.defs, /etc/default/useradd (也可以通过编辑这两个文件设置添加用户时的默认配置)

linux权限7777,Linux中用户和权限管理_第4张图片usermod:修改账号信息

使用格式:useradd  [选项]  用户名

常用选项:

-c, --comment  COMMENT

-d, --home  HOME_DIR:修改家目录为新的位置,但一般应该同时使用-m选项以保证原家目录中的文件会移动到新目录中;

-g, --gid GROUP

-G, --groups  GROUP1[,GROUP2,...[,GROUPN]]]:修改时会覆盖原有的附加组;一同使用-a选项,表示为用户添加新的附加组;

-l, --login  NEW_LOGIN:修改当前用户的用户名;

-s, --shell  SHELL

-u, --uid  UID

-L, --lock:锁定用户的密码。这会在用户加密的密码之前放置一个“!”

-U, --unlock:解锁用户的密码。这将移除加密的密码之前的“!”

使用示例:

修改用户MYS的UID为5510,基本组为TBS,附加组为YY,用户名为mys,附加信息为my family。登陆shell为/bin/bash.

f2a8941aba95f736a331838b7b958f07.png4d70b4edcb58ad36a02db65952497f48.png

984ad4350273056552aadb4c16883a2a.png

693ef9c2edfb72ece48ac90ab6cc2011.png

e8e96b03599ff076ca85adc80f6c5003.png

userdel:删除用户账号

使用格式:userdel [选项]  登录名

常用选项:-r, --remove:用户主目录中的文件将随用户主目录和用户邮箱一起删除

密码管理类命令

passwd:密码管理使用格式: passwd   [-l]  [-u  [-f]]  [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [--stdin] [username]

(1) passwd:修改自己的密码;

(2) passwd  username:修改其它用户的密码,仅root有此权限;

密码复杂度:  (1) 不能少于8个字符;

(2) 不能使用与过去的密码太相似的密码;

(3) 应该使用四类字符中的至少三类;

常用选项:   -l:锁定密码

-u:解锁解密

-d:清除密码

--stdin:从标准输入接收密码;(只有管理员才有权限使用)

echo "PASSWORD" | passwd  --stdin  USERNAME

使用示例:

修改用户mys的密码为 mageedu.com123

linux权限7777,Linux中用户和权限管理_第5张图片

943bf7a53976373037fcef85eb754b0b.png

用户影子口令文件:/etc/shadow

cbb824cc8b6b68b55a0740c3962473ca.png

格式(一共9个字段):登录名:密码:最近一次的修改时间:密码的最短使用期限:密码最长使用期限:提前警告的天数:非活动期限:账号的禁用日期:保留字段

chage命令:修改用户账号的各种期限;

id:查看用户相关的id信息;

使用格式:id  [OPTION]...  [USER]

-u:仅查看uid

-g:仅查看gid

-G:查看所属的所有组的ID;

-n:显示名称,而非ID;

su:switch user切换用户

使用格式:

切换用户时:

(1) 不读取目标用户的配置文件(非登录式切换,半切换);

su  USERNAME

(2) 读取目标用户的配置文件(登录式切换,完全切换);

su  -l  USERNAME

su  -  USERNAME

(3) su -c command USERNAME(--c= --command):仅以指定的用户的身份运行此处指定的命令,而不执行真正的身份切换操作;

示例:

linux权限7777,Linux中用户和权限管理_第6张图片

注意:root切换至任何其它用户无须认证密码;普通用户切换至其它用户,都需要密码;

gpasswd:为组添加密码(该命令只有管理员才有权限)

使用格式:gpasswd [选项] group

常用选项: -a USERNAME:把用户添加至组中;

-d USERNAME:从此组中移除此用户;

组影子口令文件:/etc/gshadow

newgrp命令:登录到一个新组,用该组作为它的主组

linux有一个基本哲学思想:一切皆文件。因此对用户的权限管理其实最终还是要通过对文件的权限的管理实现的。

文件的权限

通过ll命令查看一个文件的详细信息。

abae67dbc5ac83c4f3d7b5ef465f5803.png

第一个字段:-rw-------

-:一个字符,表示文件类型;

rw-------:9个字符表示,文件权限,permission;

perm:

r:readable

w:writable

x: excutable

权限三位一组:

左三位:属主的访问权限;

中三位:属组的所有用户的访问权限;

右三位:其它(other)用户的访问权限;

第二个字段:1,数字,表示文件被硬链接的次数;

第三个字段: root:一个用户名,表示当前文件的属主(owner);

第四个字段: root:一个组名,表示当前文件属组(group);

第五个字段: 1998:一个数值,表示当前文件的size,默认单位为字节;

第六个字段: 2月  29 16:34 :一个时间,表示文件最近一次被修改的时间;

第七个字段:anaconda:文件名;

linux的安全上下文:在linux系统中进程总是以某个用户的身份运行,进程对资源的操作权限取决于其所代表的用户。

权限模型生效的机制:首先判定进程的运行者是否与文件的属主相同,如果是,则以文件属主的身份来访问此文件;否则进入下一步,判定其是否属于文件的属组,如果是,则以文件属组的身份来访问此文件;否则以文件的其它用户的身份来访问此文件。

你可能感兴趣的:(linux权限7777)