账号权限与环境变量配置
一、Linux账号与权限
1.用户账户
超级用户、普通用户、程序用户
超级用户 | root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有最高的权限。系统中超级用户是唯一的 |
普通用户 | 由root用户或管理员用户创建,拥有的权限会收到限制,一般只在用户自己的宿主目录中拥有完整u秦安县 |
程序用户 | 在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某给程序的正常运行,如 bin、daemon、ftp、mail等 |
2.组账户
基本组(私有组)
基本组账号只有一个,一般为创建用户时指定的组
在/etc/passwd文件中第4段记录的即为该用户的基本组GID号
附加组(公共组)
用户除了基本组以外,额外添加指定的组
3.UID和GID
- UID (User IDentity 用户标识号)
- GID (Group ID 组标识号)
root 用户账号的 UID和GID 号为固定值0
程序用户账号的 UID和GID 号默认为 1~499
普通用户的 UID和GID 号默认为500~60000
二、用户账户文件/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为禁止用户登陆系统)
三、用户账户文件/etc/shadow
保存用户的密码、账号有效期等信息
文件位置/etc/shadow
每一行对应一个用户的密码记录
默认只有root用户能够读取shadow文件在的内容,且不允许直接编译该文件的内容
shadow文件又被称为“影子文件”,其中保存有各种用户账号的密码信息,因此对shadow文件的访问应该进行严格限制
shadow文件的每一行内容中,包含了九个用冒号分隔的配置字段,示例如下>
字段 | 说明 |
---|---|
第一字段(root) | 用户账号名称 |
第二字段 | 使用MD5加密的密码字串信息,当为“*”或者“!!”时表示此用户不能登录到信息,若该字段内容为空,则该用户无需密码即可正常登陆系统 |
第三字段(14374) | 上次修改密码的时间,表示从1970年1月1日起到最近一次修改密码时间隔的天数 |
第四字段(0) | 密码的最短有效天数。自本次修改密码后,必须至少经过该天数才能再次修改密码,默认值为0,表示不进行限制 |
第五字段(99999) | 密码的最长有效天数,自本次修改后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制 |
第六字段(7) | 提前多少天警告用户口令将过期,默认值为7 |
第七字段 | 在密码过期后多少天内禁用此用户 |
第八字段 | 账号失效时间,此字段制定了用户作废的天数(从1970年1月1日算起),默认值为空,表示账号永久可用 |
第九字段 | 保留字段,目前没有特定用途 |
1.添加用户账号
useradd [选项] [用户名]
举例:添加一个用户
-d | 指定宿主目录 |
-e | 指定账户失效时间 |
-g | 指定用户基本组 |
-G | 指定用户附加组 |
-M | 不建立宿主目录 |
-s | 指定用户登录shell |
2.设置用户密码
passwd [选项] [用户名]
举例:给ggtt设置密码[如不设置密码账户不会激活]
-d | 清空密码(可以空密码登录) |
-l | 锁定用户 |
-s | 查询用户状态 |
-u | 解锁用户 |
3.修改用户账号的属性
usermod [选项] 用户名
举例:修改用户gt1
-d | 修改宿主目录 |
-e | 修改用户账户失效时间 |
-s | 指定用户登录shell |
-l | 更改用户登录名 |
-L | 锁定用户 |
-U | 解锁用户 |
-g | 修改用户所属的基本组 |
-G | 修改用户所属的附加组 |
4.删除用户
userdel -r 用户名:删除用户时将宿主目录连带删除
如果执行:userdel ggtt , /etc/passwd 中的 ggtt 信息没了,但是宿主目录的 ggtt 目录还在;
如果执行:userdel -r ggtt , /etc/passwd 中的 ggtt 信息没了,宿主目录的 ggtt 目录也被删除了;
四、用户账号的初始配置文件
我们在当前命令框中的操作都是在 当前 bash Shell 中进行的,如果切换了 bash 环境(切换了 bash Shell),之前的操作都没了(比如使用 PS1修改提示字符颜色)。
如果想让当前用户,切换 bash时,或者重启后 配置还在 可以修改 用户初始配置文件 [.bash_profile] 和 [.bashrv ]。这两个文件在用户登录时(当前用户)就会执行。
vim bashrc 加一行 PS1=…
文件来源:
- useradd 命令添加一个新的用户账号后,会在该用户的宿主目录中建立一些初始配置文件。
- 这些文件来自于账号模板目录 /etc/skell,基本上都是隐藏文件。
主要的用户初始配置文件:
~/.bash_profile
~/.bashrc
~/.bash_logout
全局配置文件:
/etc/profile
/etc/profile.d/
五、组账户
1.添加组账户
groupadd -g gid 组账户名
2.查询组账户
grep ”组账户“ /etc/group
3.将用户加入指定组中
gpasswd -a 用户名 组名
gpasswd -d 用户名 组名
4.查询账户信息
id 用户名 | 查询用户的uid和gid |
---|---|
groups 用户名 | 查询用户所属的组 |
finger 用户名 | 查询用户的详细信息 |
w | 查询当前主机用户登录情况 |
5.将多个用户加入新组
gpassed [用户名] [组名]
访问权限:
读取 r | 允许查看文件内容,显示目录列表 |
---|---|
写入 w | 允许修改文件内容,允许在目录中新建、移动、删除文件或子目录 |
可执行 x | 允许允许程序,切换目录 |
归属(所有权):
属主 | 拥有该文件或目录的用户账号 |
---|---|
属组 | 拥有该文件或目录的组账号 |
权限分三段:属主、属组、其他用户
设置文件和目录的权限chmod
chmod -R nnn 文件或目录
nnn为三个八进制数
*设置文件和目录的归属
*
chown 属主 文件或目录
chown 属组 文件或目录
chown 属主:属组 文件或目录
权限掩码
- 控制新建的文件或者目录的权限
默认权限去除umask的权限为新建的文件或者目录的权限
mas
umask 掩码
举例:
如果执行命令“umask 000”,代表文件的默认权限是“777”
如果执行命令“umask 022”,代表目录的默认权限是“755”