目录
一、用户账号和组账号概述
1.1 用户账号
- 超级用户:root 用户是 Linux 操作系统中默认的超级用户账号对本主机拥有最高的权限。系统中超级用户是唯一的。
- 普通用户: 由root用户或其他管理员用户创建拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。
- 程序用户: 在安装Linux操作系统及部分应用程序时会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail 等。
1.1.1 su 命令
su :
su 用户 #切换到指定用户
su root #只是切换了root的身份,但是shell环境、环境变量、工作目录等还是普通用户的shell。
su - root #完全切换至root用户,shell、环境变量、工作目录等都是root用户的
1.2 组账号
- 基本组(私有组):基本组账号只有一个,一般为创建用户是指定的组
- 附加组(公共组):用户除了基本组之外,额外添加指定的组,可有可无,可以有多个。
1.3 UID和GID
在Linux系统中,UID(User ID,用户ID)和GID(Group ID,组ID)是用于唯一标识用户和用户组的数字标识符。这些标识符在文件系统中用来确定文件的拥有者和所属组,以及控制对文件的访问权限。
UID: UID是分配给每个用户账户的唯一数字标识符。Linux系统通过UID来识别和管理用户。
UID的取值范围:
管理员root: 0
程序用户:1-999 对守护进程获取资源进行权限分配
普通用户:1000+ 给用户进行交互式登录使用
GID: GID是分配给每个用户组的唯一数字标识符。与UID类似,GID也用于控制对文件和目录的访问权限。用户可以是多个组的成员,但每个用户都有一个主组(primary group),该组在创建用户时指定,并且用户的默认GID就是其主组的GID。
二、用户账号管理和组账号管理
2.1 用户账号管理
2.1.1 用户账号文件
用户账号文件存储位置:/etc/passwd
cat /etc/passwd :
[root@linianhui ~]# 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
以root账号为例:
root:x:0:0:root:/root:/bin/bash
“ :”冒号间隔表示一个字段字段1:用户账号的名称
字段2:用户密码占位符“x” 占位符表示此用户有密码
字段3:用户账号的UID号
字段4:所属基本组账号的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录shell信息(/bin/bash为可登录系统,/sbin/nologin和/bin/false为进制用户登录系统)
常用的shell环境:/bin/bash /bin/sh /sbin/nologin /sbin/sync
2.1.2 用户密码文件
用户密码玩家存储位置:/etc/shadow
cat /etc/shadow:
[root@linianhui ~]# cat /etc/shadow
root:$6$QUuidnJCkVD1OApX$FmbWIMAwXMn0eOHUjyQg8ijW9Z8CVN1Dh.bSCKYZ8UvCHT8ftrN6NlcPMTlyReqZC7iJyR7ZpTAKPBxLZXxeT1::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
还是以root账号为例:
默认只有 root 用户能够读取 shadow 文件中的内容,且不允许直接编辑该文件中的内容。
root:$6$QUuidnJCkVD1OApX$FmbWIMAwXMn0eOHUjyQg8ijW9Z8CVN1Dh.bSCKYZ8UvCHT8ftrN6NlcPMTlyReqZC7iJyR7ZpTAKPBxLZXxeT1::0:99999:7:::
“ :”冒号间隔表示一个字段
字段1: 用户帐号的名称
字段2: 使用MD5加密的密码字串信息,当为“*”或“!!”时表示此用户不能登录到系统,若该字段内容为空,则该用户无须密码即可登录系统
字段3: 上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数
字段4: 密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制
字段5: 密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制
字段6: 提前多少天警告用户密码将过期,默认值为7
字段7: 在密码过期之后多少天禁用此用户
字段8: 帐号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算),默认值为空,表示账号永久可用。
字段9: 保留字段(未使用)
2.1.3 uesradd命令---添加用户账号
常用选项:
选项 | 说明 |
-u | 指定用户的 UID 号,要求该 UID 号码未被其他用户使用。 |
-d | 指定用户的宿主目录位置(当与-M 一起使用时,不生效) |
-e | 指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。 |
-g | 指定用户的基本组名(或使用 GID 号),对应的组名必须已存在。 |
-G | 指定用户的附加组名(或使用 GID 号),对应的组名必须已存在。 |
-M | 不建立宿主目录。 |
-s | 指定用户的登录 Shell,(比如/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)。 |
示列:
useradd -u 1002 -d /opt/test -g dn -G ky30 -s /bin/bash test
###创建一个名为test的用户,UID是1002 宿主目录是/opt/test,基本组是dn,附加组是ky30
登录的shell环境为 /bin/bash
用户创建完成后可以用 id + 用户名 来查看这个用户的信息
例:
[root@linianhui ~]# id zhangsan
uid=1005(zhangsan) gid=1008(zhangsan) 组=1008(zhangsan)也可以检测是否有这个用户
例:
[root@linianhui ~]# id lisi
id: lisi: no such user
查询用户详细信息
finger
需要先进行安装finger软件包
yum install -y finger
用法
finger [用户名]
示列
[root@linianhui ~]# finger zhangsan ###查询zhangsan账号详细信息
Login: zhangsan Name:
Directory: /home/zhangsan Shell: /bin/bash
On since 二 8月 6 16:03 (CST) on :0 from :0 (messages off)
On since 二 8月 6 16:04 (CST) on pts/1 from :0
1 day 5 hours idle
Last login 三 8月 7 20:20 (CST) on pts/0
No mail.
No Plan.
查询已经登录到主机的用户信息
w、who、users
示列
[root@linianhui ~]# who
root pts/0 2024-08-07 20:01 (192.168.23.1)
zhangsan :0 2024-08-06 16:03 (:0)
zhangsan pts/1 2024-08-06 16:04 (:0)
roo :1 2024-08-06 16:05 (:1)
2.1.4 usermod命令---修改用户账号属性
常用选项:
选项 | 说明 |
-u | 修改用户的 UID 号。usermod -u uid号 用户名 |
-d | 修改用户的宿主目录位置 |
-e | 修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。 |
-g | 修改用户的基本组名(或使用 GID 号) |
-G | 修改用户的附加组名(或使用 GID 号)。 |
-s | 指定用户的登录 Shell。 |
-L | 锁定用户账户。 |
-U | 解锁用户账户。 |
示列:
usermod -s
[root@linianhui ~]# cat /etc/passwd ##查看原本lilei用户shell环境为/bin/bash
lilei:x:1004:1006::/home/lilei:/bin/bash
[root@linianhui ~]# usermod -s /sbin/nologin lilei ###修改lilei的shell环境为/sbin/nologin
[root@linianhui ~]# cat /etc/passwd ###查看
lilei:x:1004:1006::/home/lilei:/sbin/nologin ###环境变更成功
2.1.5 passwd命令---修改用户密码
root用户可以指定用户名作为参数,对指定账号的密码进行管理普通用户却只能执行单独的“passwd”命令修改自己的密码。
常用选项:
选项 | 说明 |
-d | 清空指定用户的密码,仅使用用户名即可登录系统 |
-l | 锁定用户账户,锁定的用户账号将无法再登录系统。#图形化界面可以登录,文字界面无法登录 |
-S | 查看用户账户状态 |
-u | 解锁用户密码 |
示列:passwd -d
[lilei@linianhui root]$ su zhangsan ###没清除之前需要密码
密码:
[root@linianhui ~]# passwd -d zhangsan ###清除zhangsan的密码清除用户的密码 zhangsan。
passwd: 操作成功 ###提示清除成功
[root@linianhui ~]# su lilei
[lilei@linianhui root]$ su zhangsan ###切换zhangsan用户验证
[zhangsan@linianhui root]$ ###无需输入密码登录
扩展:免交互修改密码
[root@linianhui ~]# echo 123123 | passwd --stdin zhangsan #将数字123123写入 zhangsan密码中
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
2.1.6 userdel命令----删除用户账号
userdel [r] 用户名
添加“r”选项时可以将该用户的宿主目录一并删除
2.2 组账号管理
2.2.1 组账号文件
/etc/group: 保存组账号基本信息
/etc/gshadow: 保存组账号的密码信息
[root@linianhui ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:以root账号为例:
root:x:0:
字段1: 组帐号的名称
字段2: 占位符“x”
字段3: 组账号的GID号
字段4: 组账号包含的用户成员(一般不包括基本组对应的用户帐号),多个成员之间以逗号“,”分隔
2.2.2 groupadd命令 ----添加组账号
用法:
groupadd [-g GID] 组账号名
示列
groupadd -g 1000 market ###指定1000为组market的GID
查询用户所属组
[root@linianhui ~]# groups zhangsan ###查询用户zhangsan所属组
zhangsan : zhangsan
2.2.3 gpasswd命令---添加删除组成员
用法:
gpasswd [选项]...组账号名
常用选项:
选项 | 说明 |
-a | 向组内添加一个用户 |
-d | 从组内删除一个用户成员 |
-M | 定义组成员列表,以逗号分隔 |
示列:gpasswd -M
gpasswd -M yht,hcy,qzz dn #将用户yht、华晨宇、qzz加入到dn用户组中
2.2.4 groupdel 命令---删除组账号
用法:
groupdel 组账号名
示列:
groupdel market ###删除组账号market
三、文件和目录得权限和归属
3.1 文件/目录基本权限
- 读(r/4):对文件而言,具有读取文件内容的权限;对于目录而言,具有浏览该目录信息的权限
- 写(w/2):对文件而言,具有修改文件内容的权限;对于目录而言,具有删除和移动目录内文件的权限
- 执行(x/1):对文件而言,具有执行文件的权限;对于目录而言,具有进入目录的权限
八进制数字表示r:4 w:2 x:1
完整的属主、数组、其他用户权限展示 是 777
3.2 chmod命令 ---修改文件或目录的权限
用法
chmod [ugoa..][+-=][rwx] 文件或目录
“ugoa” 表示该权限设置所针对的用户类别
常用选项
选项 | 说明 |
u | 代表文件属主 |
g | 代表文件数组内的用户 |
o | 代表其他任何用户 |
a | 代表所有用户(缺省时为a) |
+-= | 表示设置权限的操作动作。“+”代表增加相应权限,“-”代表减少相应权限“=”代表仅设置对应的权限。 |
R | 递归修改指定目录下所有子目录及文件的权限 |
示列
chmod g+x123.sh:将文件的群组(group)权限设置为可执行
chmod g+w 123.sh:将文件的群组权限设置为可写
chmod u-x123.sh:将文件的用户权限设置为不可执行
或者数字表示
chmod 441 123.sh:该文件属主只读属组只读其他用户可执行
chmod -R递归修改
mkdir -p aa/bb/cc #递归创建目录aa目录下bb目录下cc
chmod -R 777 aa #给与aa目录下所有子目录所有用户可读可写可执行权限
3.3 chown命令----设置目录和文件的归属
chown 属主:属组 文件或目录
-R:递归修改目录下所有子目录及文件归属
示列
[root@linianhui mnt]# ll #查看yewu目录属主和数组
总用量 0
drwxr-xr-x. 2 root root 6 8月 5 20:30 jiaoxue
drwxr-xr-x. 2 root root 6 8月 5 20:30 shichang
drwxrwxrwx. 2 root root 71 8月 6 14:58 yewu
[root@linianhui mnt]# chown zhangsan:zhangsan yewu/ ## 更改目录属主数组
[root@linianhui mnt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 8月 5 20:30 jiaoxue
drwxr-xr-x. 2 root root 6 8月 5 20:30 shichang
drwxrwxrwx. 2 zhangsan zhangsan 71 8月 6 14:58 yewu ##再次查看属主属组一变更
[root@linianhui mnt]#
3.4 默认权限
设置目录和文件的默认权限 umask
指定目前用户在新建文件或目录时的权限默认值
新建的文件或者目录的权限为默认最大权限减去umask(普通文件的最大默认权限为6,目录的最大默认权限为7)
权限的奇数会往前加1,目录不影响
文件默认权限是:666 目录默认权限是:777
umask查看: umask
umask设置:umask 000