Linux账号与权限管理

目录

一、账号管理

1. 用户账号

1.1 概述

1.2 用户账号类型

1.3 用户账号区分

2. 组账号

2.1 概述

2.2 区分

3. 用户账号管理

3.1 重要文件存放位置

3.2 基本信息

3.3 添加用户

3.3.1 通式

3.3.2 选项示例

3.4 密码管理

 3.4.1 通式

3.4.2 选项示例

3.4.3 免交互修改密码

3.4.4 随机生成密码 

3.5 修改用户账号的属性

3.5.1 通式

3.5.2 选项示例 

3.6 删除用户 

4. 组账号管理 

4.1 组账号文件

4.2 添加组

4.3 组内管理

4.3.1 通式

4.3.2 选项示例

4.4 删除组

5. 手动删除指定用户

6. 查询

二、权限管理

1. 权限查看与修改

1.1 访问人群分为了三类

1.2 权限分为三种

1.3 对文件的权限

1.4 对目录的权限

1.5 权限修改

1.5.1 模式法

1.5.2 数字法

2. umask应用 

3. 特殊权限管理

3.1 sticky位(沾滞位、冒险位)

3.2 suid权限

3.3 sgid权限

4. 权限访问控制列表ACL

三、总结


一、账号管理

1. 用户账号

1.1 概述

用户账户是用来记录用户的用户的和口令、隶属的组、可以访问的资源,以及用户的个人文件和设置。每个用户在系统中都有一个用户账号。

1.2 用户账号类型

普通用户:权限受到限制的用户

超级管理员:拥有至高无上的权限

程序用户:不是给用户使用的,供程序使用(不允许登录,安全性考虑)

1.3 用户账号区分

系统根据用户身份使用的uid号来辨识

超级管理员:默认是0

普通用户:centos7:1000-60000;centos6之前:500开始

程序用户:centos7:1-999;centos6之前:1-499

2. 组账号

2.1 概述

按照一定的宗旨和系统建立起来的集体。linux和windows中的组就是将多个用户集合起来,统一分配某种相同的权限(开通或关闭)。

2.2 区分

基本组:“主岗位”,私有组,有且唯一;用户所属组中的第一个组称为基本组

附加组:公共组,可有可无,可能有多个;除了第一个组外的其他组为附加组或公共组

附加组说明:

[root@localhost ~]# id zhangsan; id  lisi          
uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan)
uid=1002(lisi) gid=1002(lisi) 组=1002(lisi)
[root@localhost ~]# gpasswd -a lisi zhangsan 
正在将用户“lisi”加入到“zhangsan”组中
[root@localhost ~]# id zhangsan; id  lisi
uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan)
uid=1002(lisi) gid=1002(lisi) 组=1002(lisi),1001(zhangsan)

相对于用户lisi,zhangan组是他的附加组,用户lisi拥有lisi组和zhangsan组权限。 

3. 用户账号管理

3.1 重要文件存放位置

/etc/passwd:存放用户的信息

/etc/shadow:存放用户的密码信息

3.2 基本信息

  • passwd分为七段,每段用:隔开
[root@localhost ~]# cat /etc/passwd | head -n1
root:x:0:0:root:/root:/bin/bash

① 用户名,登录系统的名字,唯一

② 密码占位符,具体内容不在这里

③ uid,用户的身份证

④ gid,group组号

⑤ 备注信息,如经理、职员

⑥ 家目录位置

⑦ 默认的shell类型,/bin/bash

  • shadow分为九段,每段用:隔开
[root@localhost ~]# head -1 /etc/shadow
root:$6$Mx……8vV/L0Hxd1::0:99999:7:::

① root,用户名

② 加密的密码,*或!!代表不可以登录

③ 最近一次修改密码的时间,使用:date -d "1970-01-01 19717 days"可以查看具体时间

④ 如果这里是7,代表7天后才可以修改密码,0代表随时可以修改

⑤ 密码有效期,99999永久有效

⑥ 7代表密码过期前7天会提醒你一次

⑦ 如果这里是7,代表密码过期7天后会被锁定

⑧ 失效时间,如:19718代表明天过期,超过有效期也无法登录

⑨ 保留字段,未使用

3.3 添加用户

3.3.1 通式
useradd [选项]…… 用户名
[root@localhost ~]# useradd zhangsan               #创建用户zhangsan
[root@localhost ~]# tail -1 /etc/passwd
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
3.3.2 选项示例

-u:指定uid

-M:不生成家目录

-s:指定shell类型

-e:指定失效时间

-c:备注信息

-d:指定家目录

-g:指定基本组

-G:指定附加组

-p:指定密码

[root@localhost ~]# useradd -u 1500 -M -s /sbin/nologin lisi
#添加用户李四指定uid1500,不生成家目录且不允许登录
[root@localhost ~]# tail -1 /etc/passwd
lisi:x:1500:1500::/home/lisi:/sbin/nologin

3.4 密码管理

 3.4.1 通式
passwd [选项] 用户
[root@localhost ~]# passwd zhangsan
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
3.4.2 选项示例

-l:锁定用户

-u:解锁用户

-S:查看当前用户状态

-d:清空密码,直接登录

[root@localhost ~]# passwd -l zhangsan
锁定用户 zhangsan 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -S zhangsan
zhangsan LK 2023-12-26 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# passwd -u zhangsan
解锁用户 zhangsan 的密码。
passwd: 操作成功
3.4.3 免交互修改密码
[root@localhost ~]# echo 123456 | passwd zhangsan --stdin
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
3.4.4 随机生成密码 
[root@localhost ~]# cat /dev/random | tr -cd [a-zA-Z0-9] | head -c 12
F2Py]]O[ei6F[root@localhost ~]# 
#随机生成内容 | 删除字符取补集(取反) | 前面12个字符

3.5 修改用户账号的属性

3.5.1 通式

useradd  [选项]…… 用户

3.5.2 选项示例 

-l:修改用户名

-L:锁定用户

-U:解锁用户

选项与useradd基本一致

[root@localhost ~]# usermod -l wangwu zhangsan | id wangwu
uid=1001(wangwu) gid=1001(zhangsan) 组=1001(zhangsan)

3.6 删除用户 

userdel [选项] 用户
[root@localhost ~]# userdel -r wangwu  #-r将宿主(家)目录一起删除
[root@localhost ~]# id wangwu
id: wangwu: no such user

4. 组账号管理 

4.1 组账号文件

/etc/group:保存组帐号基本信息

/etc/gshadow:保存组帐号的密码信息基本不使用

4.2 添加组

groupadd  [-g GID]  组账号名 
[root@localhost ~]# groupadd fql
[root@localhost ~]# tail -1 /etc/group
fql:x:1501:

4.3 组内管理

4.3.1 通式

gpasswd [选项] 用户、组成员

4.3.2 选项示例

 -a:向组内添加一个用户

 -d:从组内删除一个用户成员

 -M:定义组成员列表,以逗号分隔

[root@localhost ~]# useradd zhangsan
[root@localhost ~]# groupadd fql
[root@localhost ~]# gpasswd -a zhangsan fql
正在将用户“zhangsan”加入到“fql”组中
[root@localhost ~]# id zhangsan
uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan),1002(fql)

4.4 删除

groupdel 组账号名

5. 手动删除指定用户

#建立新 user01用户
[root@localhost ~]# useradd user01
[root@localhost ~]# passwd user01
#为user01用户设置密码,由此user01用户才算是创建成功
#下面开始手动删除 user01
[root@localhost ~]# vi /etc/passwd
user01:x:501:501::/home/user01:/bin/bash   <--删除此行
#修改用户信息文件,删除user01用户行
[root@localhost ~]#vi /etc/shadow
user01:$6$KoOYtcOJ $56Xk9vp3D2vMRBxibNOn.21cVJ9onbW8IHx4WrOx6qBqfGa9U3mjMsGjqYnj L/4t3zt3YxElce2X8rbb12x4a0:15716:0:99999:7:::   <--删除此行
#修改影子文件,删除user01用户密码行,注意,这个文件的权限是000,所以要强制保存;
[root@localhost ~]#vi /etc/group
user01:x:501:  <--删除此行
#修改组信息文件,删除user01群组信息
[root@localhost ~]#vi /etc/gshadow
user01:!::  <--删除此行
#修改组影子文件,删除user01群组密码信息。同样注意需要强制保存
[root@localhost ~]# rm -rf /var/spod/mail/user01     #删除用户邮箱
[root@localhost ~]# rm -rf /home/user01/             #删除用户的家目录
#至此,用户彻底删除,再新建用户user01。如果可以正常建立,则说明我们手工删除干净了
[root@localhost ~]# useradd user01
[root@localhost ~]# passwd user01                    
#重新建立同名用户,没有报错,说明前面的手工删除是可以完全删除用户的

6. 查询

  • finger命令:查询用户帐号的详细信息(finger [用户名])
[root@localhost ~]# finger zhangsan
Login: zhangsan       			Name: 
Directory: /home/zhangsan           	Shell: /bin/bash
Never logged in.
No mail.
No Plan.
  • 补充:finger命令,本地yum仓库rpm安装,这个命令不需要依赖包
[root@localhost ~]# rpm -ivh /mnt/Packages/finger-0.17-52.el7.x86_64.rpm
准备中...                          ################################# [100%]
	软件包 finger-0.17-52.el7.x86_64 已经安装
[root@localhost ~]# finger
Login     Name       Tty      Idle  Login Time   Office     Office Phone   Host
root      root       pts/0          Dec 27 09:48                           (192.168.190.1)
  • w命令:查询已登录到主机的用户信息
[root@localhost ~]# w
 23:25:58 up  1:38,  2 users,  load average: 0.22, 0.06, 0.06
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.190.1    21:47    1:02  17.29s 17.04s /usr/bin/python
root     pts/1    192.168.190.1    23:25    5.00s  0.08s  0.01s w
标题含义
USER登录到系统的用户。
TTY登录终端。
FROM表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。
LOGIN@用户登陆的日期和时间。
IDLE表示某个程序上次从终端开始执行到现在所持续的时间。
JCPU和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。
PCPU当前进程所占用的 CPU 运算时间。
WHAT当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。
  • who命令:相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知晓每个用户正在执行的命令。 who 命令的基本格式: who [选项] [file]
[root@localhost ~]# who
root     pts/0        2023-12-26 21:47 (192.168.190.1)
root     pts/1        2023-12-26 23:25 (192.168.190.1)
选项含义
-a列出所有信息,相当于所有选项。
-b列出系统最近启动的时间日期。
-l列出所有可登陆的终端信息。
-m仅列出关于当前终端的信息,who -m 命令等同于 who am i
-q列出在本地系统上的用户和用户数的清单。
-r显示当前系统的运行级别。
-s仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。
-u显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。
-T 或 -w显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。
  • user命令
[root@localhost ~]# users
root root

二、权限管理

1. 权限查看与修改

1.1 访问人群分为了三类

  • 所属主(u)
  • 所属组(g)
  • 其他人 (o)

1.2 权限分为三种

  • 读(r,4)
  • 写(w,2)
  • 执行(x,1程序,脚本)

1.3 对文件的权限

  • r 可使用文件查看类工具,比如:cat,可以获取其内容
  • w 可修改其内容
  • x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)

1.4 对目录的权限

  • r 可以使用ls查看此目录中文件列表
  • w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
  • x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限

1.5 权限修改

1.5.1 模式法
chmod  对谁(ugoa) 操作(+-=)权限(rwx)  文件
[root@localhost ky35]# touch 1.txt | ll
总用量 0
-rw-r--r--. 1 root root 0 12月 27 10:24 1.txt
[root@localhost ky35]# chmod u+x 1.txt | ll      #给1.txt属主增加执行权限
总用量 0
-rwxr--r--. 1 root root 0 12月 27 10:24 1.txt    
[root@localhost ky35]# chmod o-rwx 1.txt | ll    
总用量 0 
-rwxr-----. 1 root root 0 12月 27 10:24 1.txt
[root@localhost ky35]# chmod a+rwx 1.txt | ll
总用量 0
-rwxrwxrwx. 1 root root 0 12月 27 10:24 1.txt
1.5.2 数字法
chmod (421)(421)(421) 文件
[root@localhost ky35]# ll 1.txt
-rwxrwxrwx. 1 root root 0 12月 27 10:24 1.txt
[root@localhost ky35]# chmod 666 1.txt | ll       #给1.txt文件赋予读取,修改权限
总用量 0
-rw-rw-rw-. 1 root root 0 12月 27 10:24 1.txt

2. umask应用 

umask 的值可以用来保留在创建文件权限:默认文件夹权限777,默认文件权限666(为了安全性考虑,文件默认去掉执行权限);新建文件夹默认权限755,新建文件默认权限644。

  • 实现过程:
[root@localhost ~]# umask
0022

新建文件夹默认权限=777-022=755

新建文件默认权限=666 -022=755

  • 自定义umask值
[root@localhost ~]# umask 123 | umask
0123

新建文件夹默认权限=777-123=754

由于文件已经去掉执行权限,这里没有1,666即42-,42-,42-,只能减去022

新建文件默认权限=666 -022=644

或者遇到umask值为有奇数位,文件默认权限666减去umask奇数位值后+1即可

3. 特殊权限管理

3.1 sticky位(沾滞位、冒险位)

  • 作用:只有自己和超级管理员可以删除该文件,只能对文件夹有效
  • 权限设定:
[root@localhost ky35]# chmod o+t a           #a为文件夹,为文件夹a添加sticky位
[root@localhost ky35]# ll
总用量 0
drwxr-xr-t. 2 root root 19 12月 27 15:39 a

3.2 suid权限

  • 作用:加了此权限能否打开文件就和用户无关了,以下权限s表示当使用这个命令程序时,把当前用户当成文件的所属主,把当前用户当成文件的主人
  • 权限设定:没有给vim添加suid权限前,普通用户无法通过vim工具修改用户信息文件内容,添加权限后可以强制修改 

[root@localhost ~]# chmod u+s /usr/bin/vim                 #给vim命令加上suid权限
[root@localhost ~]# ll /usr/bin/vim
-rwsr-xr-x. 1 root root 2289640 8月   2 2017 /usr/bin/vim

3.3 sgid权限

  • 作用:给文件加上sgid权限后,代表开放该文件所属组的权限给其他用户使用,即其他用户会拥有该文件所属组的权限
  • 权限设定:
[root@localhost ~]# ll /usr/bin/vim
-rwxr-xr-x. 1 root root 2289640 8月   2 2017 /usr/bin/vim
[root@localhost ~]# chmod g+s /usr/bin/vim                 #为vim命令添加sgid权限
[root@localhost ~]# ll /usr/bin/vim
-rwxr-sr-x. 1 root root 2289640 8月   2 2017 /usr/bin/vim

4. 权限访问控制列表ACL

  • 作用:对具体用户进行访问规则
  • 权限设定:
[root@localhost ~]# ll /etc/passwd
-rw-r--r--. 1 root root 2105 12月 27 16:13 /etc/passwd
[root@localhost ~]# setfacl -m u:fql:rw /etc/passwd  
#-m代表添加规则,更改文件的访问控制列表;即:给用户添加对文件passwd查看修改权限

[root@localhost ~]# su fql                   #切换用户fql,并编辑/etc/passwd末行内容
[fql@localhost root]$ tail -n1 /etc/passwd   #用户fql已经获得修改权限,可以修改内容
qqqqqqqqqqqq

三、总结

Linux系统账号权限管理方式多种多样,可以根据具体需求,选择合适的管理规则。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值