Linux用户权限

Linux用户权限

Linux用户和用户组

image-20240115191356567

image-20240116214749719

用户概念

通过前面对Linux多用户的理解,我们明白Linux是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)

用户组概念

用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的,

Linux用户和组的关系

用户和用户组的对应关系有以下4种:

  1. 一对一:一个用户可以存在一个组中,是组中的唯一成员;
  2. 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
  3. 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
  4. 多对多:多个用户可以存在多个组中,也就是以上3种关系的扩展。

Linux用户管理

image-20240116215403876

Liux系统的管理员之所以是root,是因为该用户的身份号码即UID的数值为0,UID就相当于我们的身份证号码一样具有唯一性,因此可通过用户的UID值来判断用户身份。

  • 管理员UID为0:系统的管理员用户。
  • 系统用户UID为1 ~ 999:Liux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
  • 普通用户UID从1000开始:是由管理员创建的用于日常工作的用户。需要注意的是,UID是不能冲突的,而且管理员创建的普通用户的UID默认是从1000开始的(即使前面有闲置的号码)
添加用户

useradd [选项] 参数

选项说明:

  • -d 指定用户的家目录(默认为/home/username)
  • -e 账户的到期时间,格式为YYYY-MM-DD.
  • -u 指定该用户的默认UID
  • -g 指定一个初始的用户基本组(必须已存在)
  • -G 指定一个或多个扩展用户组
  • -N 不创建与用户同名的基本用户组
  • -s 指定该用户的默认Shell解释器

参数:

用户名: 要创建的用户名。

案例实战

实例1:下面我们创建一个普通用户并指定家目录的路径、用户的UID以及Shll解释器。在下面的命令中,请注意/sbin/nologin,它是终端解释器中的一员,与Bash解释器有着天壤之别。一旦用户的解释器被设置为nologin,则代表该用户不能登录到系统中:

[root@node1 ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe
[root@node1 ~]# id linuxprobe
uid=8888(linuxprobe) gid=8888(linuxprobe) groups=8888(linuxprobe)
修改帐号

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

修改已有用户的信息使用usermod命令,其格式如下:

usermod [选项] 用户名

选项

  • -c<备注>:修改用户帐号的备注文字;
  • -d<登入目录>:修改用户登入时的目录;
  • -e<有效期那限>:修改帐号的有效期限;
  • -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号:
  • -g<群组>:修改用户所属的群组;
  • -G<群组>;修改用户所属的附加群组;
  • -l<帐号名称>:修改用户帐号名称;
  • -L:锁定用户密码,使密码无效;
  • -s:修改用户登入后所使用的shell;
  • -u:修改用户D;
  • -U:解除密码锁定

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

案例实战:

实例1:将用户jinxf的登录Shell修改为bash,主目录改为/home/z,用户组改为root。

[root@node1 ~]# cat /etc/passwd|grep gem
gm:x:1003:1000::/home/gm:/bin/sh
[root@node1 ~]# id gem
uid=1003(gem) gid=1000(gtjin)=1000(gtjin),0(root),4(adm)
[root@node1 ~]# usermod -s /bin/bash –g root gem
[root@node1 ~]# usermod -d /home/z -m gem
[root@node1 ~]# cat /etc/passwd|grep gem
gem:x:1003:0::/home/z:/bin/bash
删除帐号

如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

删除一个已有的用户账号使用userdel命令,其格式如下:

userdel [选项] 用户名

选项

  • -f:强制删除用户

  • -r:同时删除用户及用户家目录

    这个命令的目的删除用户,与它相关的文件有:

    ①/etc/passwd

    ②/etc/shadow

    ③/home/username

常用的选项是-r,它的作用是把用户的主目录一起删除。

[root@node1 ~]# userdel jinxf

此命令删除用户jinxf在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

用户口令的管理

用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:

passwd [选项] 用户名

可使用的选项:

  • -d:删除密码,仅有系统管理者才能使用;
  • -f:强制执行;
  • -k:设置只有在密码过期失效后,方能更新;
  • -l:锁住密码;
  • -s:列出密码的相关信息,仅有系统管理者才能使用;
  • -u:解开已上锁的帐号。

如果默认用户名,则修改当前用户的口令。

例如,假设当前用户是jinxf,则下面的命令修改该用户自己的口令:

[root@node1 ~]# passwd 

Old password:

New password:*

Re-enter new password:*

如果是超级用户,可以用下列形式指定任何用户的口令:

[root@node1 ~]#  passwd jinxf

New password:*

Re-enter new password:*

普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。

为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。

为用户指定空口令时,执行下列形式的命令:

[root@node1 ~]#  passwd -d jinxf

此命令将用户jinxf的口令删除,这样用户jinxf下一次登录时,系统就不再询问口令。

passwd命令还可以用-l(lock)选项锁定某一用户,使其不能登录,例如:

[root@node1 ~]#  passwd -l jinxf

用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

添加新组groupadd

语法:

groupadd [选项] 用户组

选项:

  • -g:指定新建工作组的id;
  • -r:创建系统工作组,系统工作组的组ID小于500;
  • -K:覆盖配置文件"/ect/login.defs";
  • -o:允许添加组D号不唯一的工作组。

实例1:添加用户组group1

[root@node1 ~]# groupadd group1

此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。

实例2:向系统中增加了一个新组group2,同时指定新组的组标识号是101

[root@node1 ~]# groupadd -g 101 group2

此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。

删除用户组groupdel

语法:

groupdel 用户组

实例1:从系统中删除组group1

[root@node1 ~]# groupdel group1
修改群组groupmod

语法:

groupmod [选项] 用户组

常用的选项有:

  • -g<群组识别码>:设置欲使用的群组识别码;
  • -o:重复使用群组识别码;
  • -n<新群组名称>:设置欲使用的群组名称。

实例1:将组group2的标识号改为10000,组名修改为group3

[root@node1 ~]# groupmod –g 10000 -n group3 group2
用户切换组

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。

用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:

[root@node1 ~]# newgrp root

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。

Linuxi超级用户与伪用户

image-20240116222824144

Liux下用户分为三类:超级用户、普通用户、伪用户

  1. 超级用户:用户名为root,具有一切管理权限,UID为0,可以创建多个管理员。
  2. 普通用户:在默认情况下,普通用户UID是介于500~6000;
  3. 伪用户:这些用户的存在是为了方便系统管理,满足相应的系统进程对文件属主的要求。伪用户不能够登录,他的UID值介于1 ~ 499。
用户身份切换

由于超级权限在系统管理中的不可缺少的重要作用,为了完成系统管理任务,必须用到超级权限。

su

su命令就是切换用户的工具。

语法

su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]

参数说明:

  • -c command或-command=command变更为帐号为USER的使用者并执丸行指令(command)后再变回原来使用者
  • –i或–login这个参数加了之后,就好像是重新login为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定USER,内定是root
sudo

sudo的全称为:super user do。

顾名思义:干超级用户才能干的事!所以Sudo最常用的功能就是提升一个命名的执行权限。

语法:

sudo [参数] 命令名称

参数:

  • -h:列出帮助信息
  • -l:列出当前用户可执行的命令
  • -u:用户名或UD值以指定的用户身份执行命令
  • -k:清空密码的有效时间,下次执行sudo时需要再次进行密码验证
  • -b:在后台执行指定的命令
  • -p:更改询问密码的提示语

总结

sudo命令具有如下功能:

  • 限制用户执行指定的命令:
  • 记录用户执行的每一条命令;
  • 配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;
  • 验证密码的后5分钟内(默认值)无须再让用户再次验证密码。

**编辑配置文件命令:visudo**来配置用户权限。

按照下面的格式将第99行(大约)填写上指定的信息:

谁可以使用 允许使用的主机 =(以谁的身份)可执行命令的列表

niit ALL=(ALL) ALL

⚠️注意:

编辑sudo的配置文件/etc/sudoers,是一般不要直接使用vi(vi/etc/sudoers)去编辑,因为sudoers配置有一定的语法,直接用vi编辑保存系统不会检查语法,如有错也保存了可能导致无法使用sudo工具,最好使用visudo命令去配置。虽然visudo也是调用vi去编辑,但是保存时会进行语法检查,有错会有提示。

sudo免密配置:

visudo
niit ALL=NOPASSWD:  ALL

Linux文件基本属性

image-20240116224902477

显示文件属性

image-20240116225005946

ls命令

Linux ls(英文全拼:list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。

语法:

ls [参数]

参数:

  • -a 显示所有文件及目录(以 . 开头的隐藏文件也会列出)
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • ls -l 的缩写 ll
Linux文件类型

Linux可以支持长达256个字符的文件名称,且文件名是区分大小写的,“abc”与"ABC"所代表的是不同文件。

image-20240116225544617

Linux文件类型

  1. 普通文件(-):存放数据,程序等信息的文件,一般为文本文件和二进制文件。
  2. 目录文件(d):文件系统中一个目录所包含的目录文件,包括文件名和子目录名
  3. 链接文件(l):可以在不同的文件系统之间建立链接关系来实现对文件的访问。
  4. 设备文件©:把IO设备映射为一个设备文件。
  5. 管道文件§:主要用于在进程间传递数据。
文件权限

所谓的文件权限,是指对文件访问权限,包括对文件的读、写、删除、执行操作。Linux是一个多用户操作系统,它运行多个用户同时登陆和工作,因此Linux将一个文件或者目录与一个用户和组联系起来。

image-20240116230013223

  • r(read):可读取此文件的实际内容,如读取文本文件的文字内容等;

  • w(write):可以编辑、新增或者是修改该文件的内容

  • x(execute):该文件具有可以被系统执行的权限。

⚠️**注意:**在Linux中,文件是否能被执行是由是否具有x这个权限来决定,与拓展名无关。

image-20240116230515478

Linux权限字和权限操作

image-20240116230825844

  1. chgrp:改变文件所属群组;
  2. chown:改变文件所有人;
  3. chmod:改变文件的属性;
改变所属群组chgrp

改变一个文件的群组很简单,直接用chgrp命令,这个命令是change group的缩写。

语法:

chgrp [-R] 属组名 文件名

参数选项

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数那么该目录下的所有文件的属组都会更改。
改变文件属性chmod

Liux文件属性有两种设置方法,一种是数字,一种是符号。

Linux文件的基本权限就有九个,分别是owner/group/others(拥有者/组/其他)三种身份各有自己的read/write/execute权限。

文字设定法

基本上就九个权限分别是:

  • user:用户
  • group:组
  • others:其他

那么我们就可以使用u,g,o来代表三种身份的权限。

此外,a则代表all,即全部的身份。读写的权限可以写成r,w,x,也就是可以使用下表的方式来看:

image-20240116231650874

语法:
chmod [who] [+ | - | =] [mode]

chmod niit+w a.txt

数字设定法

我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u) (g) (o)。

例如,如果想让某个文件的属主有“读/写”二种权限,需要把 4(可读)+ 2(可写)= 6(读写)。

先复习一下刚刚上面提到的数据:文件的权限字符为:-rwxrwxrwx,这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4
  • w:2
  • x:1
改变文件拥有者chown

更改文件属主,也可以同时更改文件属组

语法:

chown [-R] 属主名 文件名

chown [-R] 属主名:属组名 文件名

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值