linux账号和权限管理
- 用户账号
- Linux基于用户身份对资源访问进行控制
- 1.用户账户概述:Linux系统中,根据系统管理的需要,将用户账号分为不同的类型,其拥有的权限,担任的角色也各不相同。
- 2.组账号概述:对于用户账号来说,对应的组账号可以分为基本组(私有组)和附加组(公共组)两种。每一个用户账号可以是多个组账号的成员,但是其基本组账号只有一个。在”/etc/passwd“文件中第四个字段记录的即为该用户的基本组GID号。而对于该用户还属于那些附加组,需要在对应组账号文件中才被体现。
- 3.UID和GID概述:Linux系统中的每一个用户账号和组账号都有一个数字形式的身份标记,称为UID(User IDentity,用户标识号)和GID(Group IDentify,组标识号)。对于系统核心来说,UID是作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的。
- 4.用户账户文件/etc/passwd
- 5.用户账户文件/etc/shadow
- 6.添加用户账号
- 7.设置/更改用户口令passwd
- 8.修改用户账号属性usermod
- 9.删除用户账号userdel
- 10.用户账户的初始配置文件
- 组账号
- 文件与目录的权限和归属
用户账号
Linux基于用户身份对资源访问进行控制
1.用户账户概述:Linux系统中,根据系统管理的需要,将用户账号分为不同的类型,其拥有的权限,担任的角色也各不相同。
●超级管理员:root用户式Linux操作系统中默认的超级用户账号,对本机拥有最高的权限,系统中的超级管理员是唯一的
●普通用户:由root用户或者其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限
●程序用户:在安装Linux系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行。例如:bin,daemon,ftp,mail等。
●匿名用户:Windows中的匿名用户时guest,Linux系统中匿名用户是nobody。
2.组账号概述:对于用户账号来说,对应的组账号可以分为基本组(私有组)和附加组(公共组)两种。每一个用户账号可以是多个组账号的成员,但是其基本组账号只有一个。在”/etc/passwd“文件中第四个字段记录的即为该用户的基本组GID号。而对于该用户还属于那些附加组,需要在对应组账号文件中才被体现。
基本组(私有组):随着用户的建立而建立,与用户同名
附加组(公有组 ):直接创建空组,可以自由添加已有用户。给组设置权限后,该组中的所有用户都具备此权限。
3.UID和GID概述:Linux系统中的每一个用户账号和组账号都有一个数字形式的身份标记,称为UID(User IDentity,用户标识号)和GID(Group IDentify,组标识号)。对于系统核心来说,UID是作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的。
用户 | UID号和GID号 |
---|---|
普通用户 | UID和GID 500—6万 |
程序用户 | UID和GID 1—499 |
root用户 | UID和GID=0 |
4.用户账户文件/etc/passwd
●保存用户名称、宿主目录、登陆shell等基本信息
●文件位置:/etc/passwd
●每一行对应一个用户的账号记录
●所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改
●早期系统中,账号密码存放在passwd文件中,因为很容易被暴力破解,后期账户密码放入到了shadow文件中,而passwd文件仅保留了密码占位符X
●passwd文件中每一行包含了7个冒号分隔的配置字段,示例如下:
☛
第一段:用户账号—用户账号的名称,也是登录系统时使用的识别名称
第二段:密码占位符—表示自己有密码
第三段:用户账号ID(UID)—用户账号的UID号
第四段:组账号ID(GID)—所属基本组账号的GID号
第五段:用户说明—用户全名,可以填写与用户相关的说明信息
第六段:宿主目录(家目录)—该用户登录后所在的默认工作目录
第七段:登录Shell—登录shell等信息,用户完成登录后使用的shell(/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)
5.用户账户文件/etc/shadow
●保存用户的密码、账号有效期等信息
●文件位置/etc/shadow
●每一行对应一个用户的密码记录
●默认只有root用户能够读取shadow文件在的内容,且不允许直接编译该文件的内容
●shadow文件又被称为“影子文件”,其中保存有各种用户账号的密码信息,因此对shadow文件的访问应该进行严格限制。
●shadow文件的每一行内容中,包含了九个用冒号分隔的配置字段,示例如下
☛
字段 | 说明 |
---|---|
第一字段(root) | 用户账号名称 |
第二字段 | 使用MD5加密的密码字串信息,当为“*”或者“!!”时表示此用户不能登录到信息,若该字段内容为空,则该用户无需密码即可正常登陆系统 |
第三字段(14374) | 上次修改密码的时间,表示从1970年1月1日起到最近一次修改密码时间隔的天数 |
第四字段(0) | 密码的最短有效天数。自本次修改密码后,必须至少经过该天数才能再次修改密码,默认值为0,表示不进行限制 |
第五字段(99999) | 密码的最长有效天数,自本次修改后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制 |
第六字段(7) | 提前多少天警告用户口令将过期,默认值为7 |
第七字段 | 在密码过期后多少天内禁用此用户 |
第八字段 | 账号失效时间,此字段制定了用户作废的天数(从1970年1月1日算起),默认值为空,表示账号永久可用 |
第九字段 | 保留字段,目前没有特定用途 |
6.添加用户账号
●useradd命令
useradd [选项] 用户名
常用选项
-u→指定用户的UID号,要求UID号码未被其他用户使用
-d→指定用户的宿主目录位置(当与 -M 一起使用时,不生效)
-e→指定用户的账户失效时间,可以使用YYYY-MM-DD的日期格式
-g →指示基本组
-G→指示附加组
-M→不建立宿主目录,即使/etc/login.defs系统配置中已设置要建立宿主目录
-s→指定用户的登录shell
7.设置/更改用户口令passwd
●root用户可以指定用户名作为参数,对指定账号的密码进行管理,不指定用户时,修改当前账号的密码
●普通用户却只能执行单独的“passwd”命令修改自己的密码
●passwd 命令
passwd [选项] 用户名
常用选项
-d→清空指定用户的密码,仅使用用户名即可登录系统
-l→锁定用户账户
-S→查看用户账户是否被锁定
-u→解锁用户账户
● 修改密码的第二种方法:
eho “密码” | passwd --stdin 用户名
8.修改用户账号属性usermod
●usermod [选项] 用户名
●常用选项:
-u 修改用户uid号
-d 修改宿主目录
-e 修改用户账户失效时间,可使用YYYY-MM-DD的日期格式
-s 指定用户登录shell
-l更改用户登录名
-L锁定用户
-U 解锁用户
-g 修改用户所属的基本组(使用GID号)
-G 修改用户所属的附加组(使用GID号)
9.删除用户账号userdel
●userdel [-r] 用户名
●注意:添加-r时,表示连用户的宿主目录一起删除
●killall -u 关闭用户的所有的进程
10.用户账户的初始配置文件
●文件来源
1.useradd命令添加一个新的用户账号后会在该宿主目录中建立一些初始配置文件
2.这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件
主要的用户初始配件文件
●~/.bash_profile 此文件中的命令将在该用户每次登陆时被执行,它会设置一些环境变量,并且会调用该用户的~/.bashrc文件
●~/.bashrc 此文件中的命令会在每次打开新的bash shell时(也包括登陆系统)被执行,并且会调用/etc/bashrc文件
●~/.bash_logout 此文件中的命令将在用户每次退出登陆或退出bash shell时执行
●/etc/profile 这个文件是为系统全局变量配置文件,可通过重启系统或者执行source /etc/profile 命令使profile文件被读取
●/etc/profile.d这个文件实际是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本
●/etc/bashrc 每一个运行bash shell的用户都会执行此文件,可通过执行bash 命令打开一个新的bash shell 时,时bashrc文件被读取
PATH变量用于设置可执行程序的默认的搜索路径
PATH生效的原理
●每次启动系统的时候会初始化命令,会执行/etc/profile 和~/.bash_profile会将历经/usr/local/bin、/usr/bin、/usr/local/sbin、/usr/sbin
追加到PATH中去,然后调用/etc/profile.d 目录下的脚本
组账号
1.组账号文件信息
●/etc/group 保存组账号基本信息
●/etc/gshadow 保存组账号的密码信息
第一段:组账号的名称
第二段:占位符“X”
第三段:组账号的GID号
第四段:组账号包含的用户成员(一般不包括基本组对应的用户账号),多个成员之间以逗号“,”分隔
2.添加组账号groupadd
●group命令
groupadd [-g GID] 组账号名
-g 指定GID号
3.添加删除组成员gpasswd
● gpasswd命令
设置组账号密码、添加/删除组成员
gpasswd [选项] 组账号名
● 常见选项
-a 向组内添加一个用户
-d 从组中删除一个用户成员
-M 定义组成员列表,以逗号分隔
4.groupdel命令删除组账号
●groupdel 组账号名
5.查询账号信息
●在用户管理工作中,虽然直接查看用户账号,组账号的配置文件也可以查询相关信息,但不是很乐观。在Linux系统中,还可以使用几个常用的命令查询工具。
●id命令:查询用户账号的身份标识
●使用id命令可以快速查看指定用户账号的UID,GID等表示信息。
●id命令
id [用户名] 查询用户身份标识
●groups命令
groups [用户名] 查询用户属的组
●finger 命令
finger [用户名] 查询用户登陆属性
注意:finger 需要额外安装
检查有没有安装rpm -qa | grep finger
yum安装yum install -y finger
●w who users
查询一登陆到主机的用户信息
文件与目录的权限和归属
●访问权限
读取r:允许查看文件内容,显示目录列表
写入w:允许修改文件内容,允许在目录中新建,移动,删除文件或子目录
可执行x:允许运行程序,切换目录
●归属(所有权)
属主: 拥有该文件或目录的用户账号
属组 :拥有该文件或目录的组账号
●理解权限字段-rw-r–r–的含义
字符 | 说明 |
---|---|
第一个字符“-” | 表示文件类型。可以是d(目录),b(块设备文件),c(字符设备文件),“-”普通文件,字母“l”(链接文件)等 |
第2-4个字符“rw-” | 表示该文件的属主用户(User)对该文件的访问权限。 |
第5-7个字符“r–” | 表示该文件的属组内每个成员用户(Group)对该文件的访问权限 |
第8–10个字符“r–” | 表示其他任何用户(Other)对该文件的访问权限 |
●其他字段含义
字段 | 说明 |
---|---|
1 | 子文件数量 |
第一个root | 属主 |
第二个root | 属组 |
34298 | 大小,单位:字节 |
04-02 00:23 | 创建时间 |
●我们可以使用-rwxrwxrwx来表示权限也可以用777来表示权限。
●rwx采用累加数字形式表示成 7 , r-x 表示成 5 , rwxr-xr-x 表示成755,rw-r–r–表示成644
●数字固定不会变,一个普通的数据文件没有执行权限。
设置文件/目录的权限chmod 命令
●chmod [ugoa] [±=] [rwx] 文件或目录
(u,g,o,a分别表示属主,属组,其他用户,所有用户)(±=分别表示增加,去除,设置权限)
●chmod nnn 文件或目录 (最常用) (nnn表示三位八进制数字,如刚刚提到的 777,755,644等)
●-R 递归修改指定目录下所有子项的权限
● chown 属主 文件或目录
●chown:属组 文件或目录
●chown 属主:属组 文件或目录
权限掩码 umask
● umask作用:
1.控制新建的文件或目录的权限
2.默认权限去除umask的权限就为新建的文件或者目录的权限
3.默认普通文件最大权限为6,目录为7
●umask的分数指的是“该默认值需要减掉的权限,”因此,如果执行“umask 022”,代表group和other被拿掉了权限“2”,也就是被拿掉了写的权限。
如果执行命令“umask 000”,代表文件的默认权限是“777”
如果执行命令“umask 022”,代表目录的默认权限是“755”