用户账号和组账号概述
1.1用户帐号类型
Linux中每个用户是通过 User Id (UID)来唯一标识的 新建用户 1-60000 自动分配 0-65535 端口号
超级管理员:root, 0
程序用户:1-499 (CentOS 6以前), 1-999 (CentOS 7以后) 不是给人登录使用的,给系统使用的
普通用户:500+ (CentOS6以前), 1000+(CentOS7以后)权限受限的用户
给用户进行交互式登录使用
- 超级用户
- 普通用户
- 程序用户
1.2组账号
基本组(私有组)
- 建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组默认只容纳了一个用户。
- 在用户所属组中的第一个组称为基本组,基本组在 /etc/passwd 文件中指定
附加组(公共组)
附加组:除了第一个组外的其他组为附加组或公共组,附加组在 /etc/group 文件中指定
[root@localhost ~]# id lisi
uid=1002(lisi) gid=1002(lisi) 组=1002(lisi)
1002为基本组或是私有组
基本组:有且唯一
附加组:可有可无,可以有多个
默认新建用户时自动添加同名的组
1.3ID
UID
UID(UserIDentity,用户标识号):Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID,对于操作系统核心来说,UID 是区分用户的基本依据,原则上每个用户的 UID 号应该是唯一的。
uid范围0-60000
centos7 | centos6 | |
超级用户 | 0 | 0 |
普通用户 | 1000开始 | 500开始 |
系统用户 | 1-999 | 1-499 |
GID
GID(Group IDentify,组标识号):与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID。root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为 1~499,500~60000 的 GID 号默认分配给普通组使用。
系统是靠uid 来区分用户身份的
用户的uid 为0 就是 超级管理员,不是应为他叫root
二、用户账号管理
2.1用户信息文件位置:
/etc/passwd
存放保存用户名称、宿主目录、登录 Shell 等基本信息,
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
后面还有很多就此省略
第一字段 | 用户名 | root |
第二字段 | 密码占位符 | x |
第三字段 | UID | 0 |
第四字段 | GID | 0 |
第五字段 | 备注信息 | root |
第六字段 | 家目录路径 | /root |
第七字段 | 登录时默认的加载的shall类型 | /bin/bash |
用户相关的文件
用户信息文件:/etc/passwd
用户密码文件:/etc/shadow
shadow 文件
作用:存放密码、密码策略的文件
[root@localhost ~]# head -1 /etc/shadow
root:$6$t859EzzPP0OSGZMi$ILdrs7LdQZ43f0YMBcByHYlb0paFXD0W50pmjJFDtI9GdXfXzQmNgK.L.DRrqD/yWKnuv6Qy3HcCf5tFw.MNL/:
:0
:99999
:7
:
:
:
第一字段:用户名:root
第二字段:密码: $6$t859EzzPP0OSGZMi$ILdrs7LdQZ43f0YMBcByHYlb0paFXD0W50pmjJFDtI9GdXfXzQmNgK.L.DRrqD/yWKnuv6Qy3HcCf5tFw.MNL 当为*或!!时表示用户不能登录到此系统,若该字段为空,则表示无需密码即可登录
第三字段:上次修改密码时间,最后一次修改密码的时间
第四字段 0:最小修改密码间隔时间
第五字段 99999:密码有效
第六字段 7:密码到期提前7天提醒提醒(提示密码即将过期时间)
第七字段:密码过期后的宽限天数 (密码过期后多少天禁用此用户)
第八字段:账号失效时间
第九字段:保留字段收费内容
2.2添加用户
useradd命令
基本格式
useradd 【选项】 用户名
添加用户:查看是否在 passwd和shadow文件中生成信息
- 在/etc/passwd 文件和/etc/shadow 文件的末尾增加该用户账号的记录
- 若未明确指定用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿
主目录,并在该目录中建立用户的各种初始配置文件。
- 若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账
号的记录信息将保存到/etc/group 和/etc/shadow 文件中。
[root@localhost ~]# useradd lisi
[root@localhost ~]# id lisi
uid=1002(lisi) gid=1002(lisi) 组=1002(lisi)
[root@localhost ~]# cat /etc/passwd |grep lisi
lisi:x:1002:1002::/home/lisi:/bin/bash
[root@localhost ~]# tail -1 /etc/shadow
lisi:!!:19823:0:99999:7:::
选项
-u | 指定用户的 UID 号,要求该 UID 号码未被其他用户使用。 |
-s | 指定用户的登录 Shell /sbin/nologin |
-M | 不建家目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录。 |
-d | 指定家目录 |
密码管理
passwd命令:为用户账号设置密码
passwd [选项]... 用户名
基本用法 不加选项 可以添加密码
[root@test1 /]# passwd lisi 修改lisi 用户密码输入两次密码
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
选项
-u | 指定用户的 UID 号,要求该 UID 号码未被其他用户使用。 |
-d | 指定用户的宿主目录位置(当与-M 一起使用时,不生效)。 |
-e | 指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。 |
-g | 指定用户的基本组名(或使用 GID 号)。 |
-G | 指定用户的附加组名(或使用 GID 号)。 |
-M | 不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录。 |
-s | 指定用户的登录 Shell /sbin/nologin |
-l | 锁定用户无法登录 |
免交互设置密码
echo "12341234" | passwd lisi --stdin
[root@localhost ~]# passwd -d lisi
清除用户的密码 lisi。
passwd: 操作成功
[root@localhost ~]# passwd -S lisi
lisi NP 2024-04-10 0 99999 7 -1 (密码为空。)
[root@localhost ~]# passwd -u lisi
解锁用户 lisi 的密码。
passwd: 警告:未锁定的密码将是空的。
passwd: 不安全的操作(使用 -f 参数强制进行该操作)
[root@localhost ~]# passwd -uf lisi
解锁用户 lisi 的密码。
passwd: 操作成功
[root@localhost ~]# echo "12341234"|passwd --stdin lisi
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
2.3修改用户账号的属性
usermod命令
usermod [选项]... 用户名
常见选项
-l | 更改用户账号的登录名称(Login Name) |
-L | 锁定用户账户 |
-u | 修改用户的 UID 号 |
-U | 解锁锁用户账户 |
-d | 修改用户的宿主目录位置。 |
-e | 修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。 |
-g | 修改用户的基本组名(或使用 GID 号) |
-G | 修改用户的附加组名(或使用 GID 号) |
-s | 指定用户的登录 Shell |
[root@localhost ~]# echo "12341234" | passwd --stdin ky36 //免交互修改密码
更改用户 ky36 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# usermod -L ky36 //锁定用户
[root@localhost ~]# passwd -S ky36 //查看状态
ky36 LK 2024-04-10 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# usermod -U ky36 //解锁用户
[root@localhost ~]# passwd -S ky36
ky36 PS 2024-04-10 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@localhost ~]# usermod -l ky3 ky36 //修改用户名
[root@localhost ~]# id ky36 //验证查看
id: ky36: no such user
[root@localhost ~]# id ky3
uid=1002(ky3) gid=1002(ky36) 组=1002(ky36)
删除用户
userdel [选项] 用户
-r 将宿主目录一起删除
[root@localhost etc]# userdel -r ky3
[root@localhost etc]# id ky3
id: ky3: no such user
[root@localhost etc]# cd /home
[root@localhost home]# ls
w wu
用户账号的初始配置文件
用户宿主目录下的初始配置文件只对当前用户有效
~/ .bash_profile
#此文件中的命令将在该用户每次登录时被执行,他会设置一些环境变量,并且会调用该用户的~/.bashrc文件
~/.bashrc
#此文件中的命令将在该用户每次打开新的bash shell时(包括登录系统)被执行(登录 切换 新的bash环境)
~/.bash_logout
#此文件中的命令将在该用户每次退出时bash shell时使用
/etc/bashrc
三、文件/目录的权限和归属
程序访问文件时的权限,取决于此程序的发起者
- 进程的发起者,同文件的属主:则应用文件属主权限
- 进程的发起者,属于文件属组;则应用文件属组权限
- 应用文件“其它”权限
属主:文件的主人,文件的拥有者
属组:
例子 root用户和普通用户 是否都可以看 (cat /etc/shadow)
3.1访问人群分为了三类
1. 所属主(u)
2. 所属组(g)
3. 其他人 (o)
3.2权限
权限分为三种
1. 读(r,4)
文件:可以看里面的内容
文件夹:可以用ls看文件夹中的文件列表
2. 写(w,2)
文件(需要读):可以修改文件的内容
文件夹:新建文件夹、文件,删除文件夹、文件,移动文件夹、文件
3. 执行(x,1程序,脚本)
文件: 可以运行(命令,脚本)颜色是绿色
文件夹: 执行是最小的权限,没有执行 读写无法使用
对文件而言:如果大家都没有 执行权限,那超级管理员也没有执行权限,只要有一个人有执行权限那么超级管理员就有执行权限
3.3 chmod
chmod 可以修改文件的权限
-R 递归
模式法:
chmod 对谁(所有者,所属组,其他)操作(+ - =)权限 文件
谁: 属主u
属组g
其他人o
所有人a
操作:+加上
-减去
=赋予
权限:r,w,x(普通权限对root无效)
chmod u或g或o或a+r 文件名 | 文件加上权限 |
chmod u或g或o或a=r 文件名 | 给文件赋予权限 |
chmod u或g或o或a-r 文件名 | 给文件减去权限 |
chmod a+r 文件名 | 给所有人加上权限 |
chmod +x 文件名 | 不指明对象,只可以给所有人夹执行权限 |
数字法:
r | 4 | 读 |
w | 2 | 写 |
x | 1 | 执行 |
文件夹 一定要有执行权限
你去切知道文件夹的名字才能
执行 cp /etc/issue /data/dir/ 所需要的最小权限?
/bin/cp 需要x权限
/etc/ 需要x权限
/etc/issue 需要r权限
/data 需要x权限
/data/dir 需要w,x权限
修改属主,属组
chown 属主 文件名 | 只改文件的属主 |
chown :属组 文件名 | 只改文件的属组 |
chown 属主:属组 文件名 | 属主属组都改变 |
[root@localhost opt]# chown -R lisi:lisi /opt/a
[root@localhost opt]# ll
总用量 20
-rw-r--r--. 1 lisi lisi 22 4月 2 09:46 a
-rw-r--r--. 1 root root 18 4月 1 14:23 b
-rw-r--r--. 1 root root 541 4月 1 11:28 fstab
-rw-r--r--. 1 root root 2107 4月 1 12:26 passwd
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
----------. 1 root root 1193 4月 1 11:28 shadow
3.4umask
在linux中规定了新建文件和新建文件夹的权限
默认umask 为0022,是你没有的权限
拿最高的权限减去umask就是你的最终权限
文件夹的最高权限为777
777-022=755 所以文件夹的落地的权限为 rwx r-x r-x
文件的最高权限为666 执行权限对于文件而言非常危险
666-022=644 所以文件的落地的权限为 rwx r-- r--
直接使用 umask 可以看到 当前的umask 设置
umask后面跟上数值 可以设置 umask的值umask123
文件夹一样
文件的权限,用666-umask 结果有奇数自动加一
文件666 -123 =543 奇数 再加1,偶数不变
三种特殊权限:
suid : | 如果拥有该权限,把当前用户当成文件的属主 |
guid: | 如果拥有该权限,把当前用户当成文件的属组 |
stickey 粘贴位 | 拥有 该权限的 文件夹, 该文件内的文件 只有超级管理员和属主可以删除, 其他人不可以删除 |
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
sticky 设置在文件上无意义