Linux账号和权限管理

目录

一.用户账户

1.用户帐号类型

2.组帐号

2.1基本组(私有组)

2.2附加组(公共组)

3.uid及范围

4.GID

5.用户和组的关系

6.添加账户

7.密码管理

8.修改账户

9.删除用户

10.组的增删改查

10.1添加组

10.2组内管理

10.3删除组账号

11.用户登录信息查询

二.文件/目录的权限和归属

1.访问权限

2.修改文件权限

3.umask

4.特殊权限

5.修改文件所属主和所属组


一.用户账户

1.用户帐号类型

Linux中是通过UID号标识用户的类型,新建用户的UID号范围在1 ~ 60000之内,总共有65536个端口号即0 ~ 65535

超级用户:root用户 ,UID=0

                root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有至高 无上的权限,类似于 Windows 操作系统中的 Administrator 用户。

程序用户:UID = 1 ~ 499(CentOS 6版本以前),1 ~ 999(CentOS 7版本以后)

                CentOS 6与CentOS 7的区别:程序用户的UID号范围不同

                在安装 Linux 操作系统及部分应用程序时,会添加一些特定的低权限用 户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运 行,如 bin、daemon、ftp、mail 等

普通用户:UID = 500+(CentOS 6版本以前)   1000+(CentOS 7版本之后),若不指定用户的UID号,按顺序排。

                普通用户的账号需要由 root 用户或其他管理员用户创建,拥有的权限受 到一定限制,处理问题受到限制,一般只在用户自己的宿主目录中拥有完整权限。

  • 超级管理员:最高权限拥有者,uid=0的用户,默认是root。

  • 普通用户:有一定权限的用户,但是权限受限制。

  • 系统(程序)用户:不是给人用的,是给程序用的,无法直接登录系统的用户。主要是出于安全性考虑,若是某个程序被攻破账户密码泄露,黑客只能攻击此程序,但是不能通过这个账户密码登录系统,保证了系统的安全性。

#1、查看当前登录用户信息 
who命令: 
[root@localhost ~]# whoami
root
[root@localhost ~]# who
root     pts/0        2021-08-17 14:16 (192.168.91.1)
root     pts/1        2021-08-17 14:30 (192.168.91.1)
[root@localhost ~]# who -b
         系统引导 2021-08-17 14:15

补充:
#2、last命令 
选项: 
(1)-x:显示系统开关机以及执行等级信息 
(2)-a:将登陆ip显示在最后一行 
(3)-f :读取特定文件,可以选择 -f /var/log/btmp文件 
(4)-d:将IP地址转换为主机名 
(5)-n:设置列出名单的显示列数 
(6)-t:查看指定时间的用户登录历史 

3、lastlog 查看所有用户的最近一次登录

#-u 查看指定用户
[root@localhost ~]# lastlog -u root
用户名           端口     来自             最后登陆时间
root             pts/1    192.168.91.1     二 8月 17 14:30:01 +0800 2021


#-t 表示几天之内的
[root@localhost ~]# lastlog -t 1
用户名           端口     来自             最后登陆时间
root             pts/1    192.168.91.1     二 8月 17 14:30:01 +0800 2021
gdm              :0                        二 8月 17 14:15:56 +0800 2021
zhangsan         :0                        二 8月 17 16:25:37 +0800 2021

2.组帐号

如何理解组?组相当于 职位 运维工程师 都具有大概相同的权限

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

组账号是一类人拥有相同的权限

2.1基本组(私有组)
  • 建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组默认只容纳了一个用户。

  • 在用户所属组中的第一个组称为基本组,基本组在 /etc/passwd 文件中指定

基本组:有且唯一

附加组:可有可无,可以有多个

默认新建用户时自动添加同名的组

2.2附加组(公共组)

附加组:除了第一个组外的其他组为附加组或公共组,附加组在 /etc/group 文件中指定

3.uid及范围

UID(User IDentity,用户标识号):Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(UserIDentity,用户标识号),对于操作系统核心来说,UID 是区分用户的基本依据,原则上每个用户的 UID 号应该是唯一的。root 用户账号的 UID 号为固定值 0,而程序用户账号的 UID号默认为1~499,500~60000 的 UID 号默认分配给普通用户使用。

centos7登录用户是从1000起到60000

centos6 500~60000

1-999 预留给系统,叫系统用户,某个程序比如数据库

给人使用的账户是从1000开始

[root@test1 ~]# id root
[root@test1 ~]# id zhangsan
uid=1000(zhangsan) gid=1000(zhangsan) 组=1000(zhangsan),10(wheel)


[root@localhost ~]#vim /etc/login.defs
#uid 的范围定义在此文件中

uid:linux系统用于区分用户的号码。

uid范围:

系统版本超级管理员系统(程序)用户普通用户
Centos 6uid=01-499500-60000
Centos 7uid=01-9991000-60000

4.GID

GID(Group IDentify,组标识号):与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为 1~499,500~60000 的 GID 号默认分配给普通组使用。

5.用户和组的关系

用户 是员工 组 是职位

员工 可以兼职多个岗位

总有一个最重要的身份 主要组合附加组

主要组 必须要一个组 有且唯一

附加组 可有可无 有可以有多个

默认行为当你创建一个新用户时会自动创建一个和之同名的主组

  • 用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时会自动创建和用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组

  • 用户的附加组(supplementary group): 一个用户可以属于零个或多个辅助组,附属组

root    zhangsan 用户 使用不同的工具
cat /etc/shadow
vim /etc/shadow

①基本组:有且只有一个基本组,使用id命令查看,谁在最前面谁是基本组

②附加组:可以没有或者有多个,id命令查看,除最前面一个后面的都是附加组

6.添加账户

添加用户:查看是否在 passwd和shadow文件中生成信息

命令:useradd (新建用户)

基本格式: useradd   [选项]   用户名

[选项] -u 创建时指定uid号 通过UID区分

          -d 创建时直接家目录,指定文件可以不存在。默认是在/home下生成一个同名文件

          -M 创建时不生成家目录

          -s 创建时指定shell类型,例如指定/sbin/nologin则此用户不能登录系统

          -e 创建时指定账户失效时间,格式为"yy-mm-dd"

          -g 创建时指定基本组

          -G 创建时指定附加组
          -c 备注信息

          -u 创建时指定uid号

7.密码管理

passwd(这个文件现在不存密码)虽然叫密码,但是他是存用户信息

passwd命令

为用户账号设置密码

passwd [选项]... 用户名

基本用法 不加选项 可以添加密码

[root@test1 /]# passwd lisi    修改lisi 用户密码输入两次密码
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

选项

  • -d:清空指定用户的密码,仅使用用户名即可登录系统。

  • -l:锁定用户账户。

  • -S:查看用户账户的状态(是否被锁定)。

  • -u:解锁用户账户。

8.修改账户

命令:usermod

基本格式:usermod   [选项]   用户名

 [选项]     -l  修改已有账户名称,格式,usermod 更改后名称  更改前名称

               -L   锁定用户账户

               -u 修改已有账户的uid号

               -U 解锁锁用户账户

               -d 为已有账户指定新的家目录

               -m 将原家目录文件移动到新家目录,与-d配合使用

               -s  修改已有用户的shell用户

               -e   为已有账户设置失效时间,格式为"yy-mm-dd"

               -g   为已有账户修改基本组

               -G  为已有账户添加附加组

               -e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。

9.删除用户

命令:userdel

基本格式:userdel [选项] 用户名

[选项]        -r 删除用户时将家目录一起删除

[root@test1 etc]# userdel -r zhou1    //连宿主目录一起删除
[root@test1 etc]# id zhou1            //验证
id: zhou1: no such user
[root@test1 etc]# cd /home/
[root@test1 home]# ls
lisi  zhangsan

10.组的增删改查

10.1添加组

groupadd命令

groupadd [-g GID] 组账号名

[root@test1 /]# groupadd zhou           //添加组账号
[root@test1 /]# tail -1 /etc/group
zhou:x:1002:
[root@test1 /]# groupadd -g 88 zhou    //-g指定组id
[root@test1 /]# tail -1 /etc/group
zhou:x:88:

10.2组内管理

gpasswd 命令——添加、设置、删除组成员

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

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

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

[root@test1 /]# useradd zhou1             //组内加入新成员
[root@test1 /]# gpasswd -a zhou1 zhou
正在将用户“zhou1”加入到“zhou”组中 用户在前,组在后
[root@test1 /]# gpasswd -d zhou1 zhou
正在将用户“zhou1”从“zhou”组中删除
[root@test1 /]# gpasswd -M zhou1,zhou zhou
[root@test1 /]# grep "^zhou" /etc/group
zhou:x:88:zhou1,zhou

10.3删除组账号

groupdel 组帐号名

[root@test1 /]# groupdel zhou

添加组:groupadd  组名  

删除组:groupdel   组名

组内用户管理:

组内添加用户  gpasswd  组名   -a   用户名

组内删除用户  gpasswd  组名   -d   用户名

批量添加用户  gpasswd  组名   -M  用户名,用户名。用逗号隔开
 

11.用户登录信息查询

finger命令查询用户帐号的详细信息(finger [用户名])

[root@test1 Packages]# finger zhangsan
Login: zhangsan       			Name: zhangsan
Directory: /home/zhangsan           	Shell: /bin/bash
Last login 五 7月  2 09:17 (CST) on pts/0
No mail.
No Plan.

finger命令:查看登录信息,谁在登录,tty,时间,主机ip

 w命令:查看登录信息,谁在登录,什么时候登录的,tty,主机ip,已经显示1、5、15分钟内cpu使用情况(查询已登录到主机的用户信息 )

标题含义
USER登录到系统的用户。
TTY登录终端。
FROM表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。
LOGIN@用户登陆的日期和时间。
IDLE表示某个程序上次从终端开始执行到现在所持续的时间。
JCPU和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。
PCPU当前进程所占用的 CPU 运算时间。
WHAT当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。
  • who

[root@localhost ~]# w [选项] [用户名]
-h	不显示输出信息的标题
-l	用长格式输出
-s	用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间
-V	显示版本信息
[root@test1 Packages]# w
 11:20:58 up  2:05,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.100.99   09:16    2.00s  0.74s  0.02s w

相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知晓每个用户正在执行的命令。 who 命令的基本格式如下:

[root@localhost ~]# who [选项] [file]

选项含义
-a列出所有信息,相当于所有选项。
-b列出系统最近启动的时间日期。
-l列出所有可登陆的终端信息。
-m仅列出关于当前终端的信息,who -m 命令等同于 who am i
-q列出在本地系统上的用户和用户数的清单。
-r显示当前系统的运行级别。
-s仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。
-u显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。
-T 或 -w显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。

who命令:查看登录信息,谁在登录,登录时间,登录ip

 users命令:查看登录信息,只显示登录正此终端登录的账户

二.文件/目录的权限和归属

1.访问权限

访问人群分为了三类

  1. 所属主(u)

  2. 所属组(g)

  3. 其他人 (o)

权限分为三种

  1. r读权限:允许查看文件内容,显示目录列表

  2. w写权限:允许修改文件内容,允许在目录中新建和移动

  3. x执行权限:允许运行程序、切换目录

第1段:文件所属主的权限

第2段:文件所属组的权限

第3段:其他用户的权限

 二进制数字表示法

           rwx    rwx    rwx

二进制111    111    111

十进制 7         7        7

由此算出r=100(二进制)=4(十进制)

              w=010(二进制)=2(十进制)

              x=001(二进制)=1(十进制)

对文件的权限

  1. r 可使用文件查看类工具,比如:cat,可以获取其内容

  2. w 可修改其内容

  3. x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)

对目录的权限

  1. r 可以使用ls查看此目录中文件列表

  2. w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关

  3. x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限

2.修改文件权限

模式法:

chmod 对谁(所有者,所属组,其他)操作(+ - =)权限 文件

谁:u,g,o,a

操作:+,-,=

权限:r,w,x(普通权限对root无效)

数字法:

1 2 4

x w r

命令:chmod

基本格式:chmod   [选项]     主权限 组权限 其他用户权限     文件名

                   [选项]  -R 递归,将该文件夹下所有文件权限一起修改

实例:修改/date及所属文件为777 ,chmod  -R 777  /data

3.umask

umask 的值可以用来保留在创建文件权限

实现方式:

新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变

新建目录的默认权限: 777-umask

非特权用户umask默认是 002

root的umask 默认是 022

4.特殊权限

访问控制列表 ACL

ACL:Access Control List,实现灵活的权限管理

除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

CentOS7 默认创建的xfs和ext4文件系统具有ACL功能

CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m,       --modify-acl 更改文件的访问控制列表
-M,       --modify-file=file 从文件读取访问控制列表条目更改
-x,       --remove=acl 根据文件中访问控制列表移除条目
-X,       --remove-file=file 从文件读取访问控制列表条目并删除
-b,       --remove-all 删除所有扩展访问控制列表条目
-k,       --remove-default 移除默认访问控制列表
          --set=acl 设定替换当前的文件访问控制列表
          --set-file=file 从文件中读取访问控制列表条目设定
          --mask 重新计算有效权限掩码
-n,       --no-mask 不重新计算有效权限掩码
-d,       --default 应用到默认访问控制列表的操作
-R,       --recursive 递归操作子目录
-L,       --logical 依照系统逻辑,跟随符号链接
-P,       --physical 依照自然逻辑,不跟随符号链接
          --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
          --test 测试模式,并不真正修改访问控制列表属性
-v,       --version           显示版本并退出
-h,       --help              显示本帮助信息

5.修改文件所属主和所属组

命令:chown

基本格式:chown    [选项]  要改的主 :要改的组      文件

                [选项]  -R 递归将该文件夹下所有文件所属主、组一起修改。

实例:若只修改该文件及所属文件的所属主 chown  -R    主   文件

           若只修改该文件及所属文件的所属组 chown  -R   :组  文件

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值