Linux用户组权限以及sudo命令-04

一:文件权限

  • 用户组:是具有相同特征用户的逻辑集合。基于用户组管理权限比直接基于用户管理权限效率要高。
  • 用户组的作用:允许一组用户共享对文件的访问控制,而无需将所有用户都设置为文件的所有者。这在团队协作中尤其有用,因为团队成员可以被添加到同一个组中,从而共享对某些文件的访问权限。 为了保障系统的安全性和文件的隐私性,一个文件针对不同权限的账户有着不同的权限,如下图

        如图所示,文件权限是由一个字符串所表示,其所代表的含义为

77430f4a65244432aabbbd37e6c825a7.png

 

文件类型

  • d:表示目录(Directory)。目录是一种特殊的文件,用于存储其他文件和目录。
  • -:表示普通文件(Regular File)。这是最常见的文件类型,包含用户数据,如文本文件、二进制文件等。
  • l:表示符号链接(Symbolic Link)。符号链接类似于Windows中的快捷方式,它指向另一个文件或目录。
  • b:表示块设备文件(Block Device)。这是系统用来访问如硬盘驱动器、光驱等的设备接口。
  • c:表示字符设备文件(Character Device)。这些文件代表串行端口设备,如键盘和鼠标,它们以字符为单位进行数据传输。

权限

权限由三组字符(每组三个)组成,分别表示文件所有者(user)、所属组(group)和其他用户(others)的权限。每组字符中的rwx分别代表读(Read)、写(Write)和执行(eXecute)权限。如果某个用户类别没有某个权限,则用-表示。

  • r(读):允许用户读取文件内容或列出目录中的文件和子目录。
  • w(写):允许用户修改文件内容或在目录中创建、删除文件。
  • x(执行):允许用户执行文件作为程序,或进入目录(对于目录而言)。

目录的x权限

对于目录来说,x权限尤为重要,因为它允许用户进入目录并读取其中的内容。如果目录没有x权限,则用户无法列出目录中的文件或进入该目录,即使他们有读(r)权限也是如此。

隐藏文件

在Linux中,如果文件名以.开头,那么该文件被视为隐藏文件。隐藏文件在默认情况下不会通过ls命令列出,但可以通过ls -a命令查看,该命令会显示包括隐藏文件在内的所有文件。

 

 

二:用户和用户组

2.1:分类

超级用户:root

普通用户

 

2.2:查看用户信息

当前系统中的用户组信息

vim /etc/group
或者
cat /etc/group

97f9822d42ba4fc08701edd775aef876.jpeg

注意:  

  1. 当该组内只有一个用户,并且用户名和组名相同时,在组列表中,包含用户一列可以为空

  2. 系统中root分组的组编号一定为0

  3. 组号1~499为系统预留的组编号,一般是预留给系统安装的软件或者服务的编号,越早安装的软件或者服务的组编号约早。用户手动创建的用户组编号从500开始

  4. 组密码占位符,无一例外,全部用x表示

当前系统中用户组的密码信息

vim /etc/gshadow

ef96a6bfcd09458eb9a8df1a57bc6ce8.jpeg

注意:

  1. 如果组密码处为“*” “!”或者为空时候,则该组没有密码

  2. 如果组管理者为空,则表示该组内所有成员都可以管理该组

当前系统中所有的用户信息

/ect/passwd

720c76defcfc4d92953295b57879239a.jpeg

注意:在linux中,超级管理员root的用户编号一定为0

 

当前系统中所有用户的密码信息

/ect/shadow

9b1a87aaf1d449ff8343c47d2dc8ac38.jpeg

注意:密码是一个单向加密过的字符串

 

2.3:用户出操作

2.3.1:创建用户

命令格式

useradd [参数] 用户名

参数:

  • -d:设置该用户的home目录,默认在home/用户名

例如:useradd -d /home/helloworld hello //新建hello用户,并且将其home目录设置为/home/helloworld

  • -u:设置其userid,默认自动生成

例如:useradd -u 668 hello //新建一个hello用户,将他的id设置为668

  • -g:设置其主组,默认自动添加一个同名的用户组

例如:useradd -g root hello //新建一个hello用户,并将其加入root组

  • -m:生成home目录的文件夹

 

2.3.2 修改用户信息

命令格式:

usermod [参数] 用户名

参数:

  • -l :修改新用户名

例如:usermod -l helloworld hello 将hello用户名改为helloworld,但其home目录不改变

  • -u :修改用户的userid

例如:usermod -u 888 hello 将hello的userid改为888

  • -d :修改用户的home目录,不声明,默认在/home/用户名

  • -g :修改用户的主用户组,不声明,创建同名的用户组

  • -L :锁定用户,使其不能登录

  • -U :解除锁定

 

2.3.3 删除用户

命令格式:

userdel [参数] 用户名

参数:

  • -r 删除用户的同时将其home目录也删掉

 

2.3.4 设置密码

passwd 用户名

然后系统会提醒你输入并确认密码

 

2.3.5 切换用户

 su 用户名

 

2.4 用户组操作

2.4.1:创建用户组

groupadd 组名

 

2.4.2:修改用户组

groupmod -n 新组名  旧组名           //修改组名

groupmod -g 新组id   旧组id           //修改组id

 

2.4.3:删除用户组

groupdel 组名

 

 

三、权限管理

3.1:权限概述

在Linux系统中,权限是指特定用户或用户组对系统资源(如文件、目录等)的使用权力。这些权力包括读(r)、写(w)和执行(x)三种基本权限。权限的设置是为了保护系统资源不被未授权的用户访问或篡改。

 

3.2:文件访问者分类

在Linux中,文件和目录的访问者通常分为三类:

  1. 文件所有者(Owner):文件或目录的创建者,默认拥有该文件或目录的所有权限。
  2. 所属组(Group):文件或目录所属的用户组,组内的成员可以拥有该文件或目录的特定权限。
  3. 其他人(Others):除了文件所有者和所属组成员之外的所有用户。

 

3.3:权限的表示方法

  1. 例如,-rw-r--r--表示文件所有者有读写权限,所属组有读权限,其他人也有读权限。

    • 读(r):用字符r表示,数字表示为4。
    • 写(w):用字符w表示,数字表示为2。
    • 执行(x):用字符x表示,对于目录来说表示可以进入目录,数字表示为1。
    • 如果没有相应权限,则用-表示。
      • 八进制数值表示法
        将读、写、执行权限分别用数字4、2、1表示,然后将每种身份(所有者、所属组、其他人)的权限值相加,得到一个三位数的八进制数。

        例如,755表示文件所有者有读(4)+写(2)+执行(1)=7的权限,所属组和其他人都有读(4)+执行(1)=5的权限                                                。

 

3.4:权限设置方法

Linux提供了多种命令来设置文件和目录的权限,包括chmodchownchgrpumask等。

  • 所有者(u) ,组(g) ,其他用户(o) ,全部(a)

  • 新增(+), 撤销(-)

  1. chmod:用于修改文件或目录的权限。
    • 字符形式:chmod u+x,g+w file(给所有者增加执行权限,给所属组增加写权限)。
    • 八进制形式:chmod 755 file(设置文件权限为所有者读写执行,所属组和其他人读执行)。
  2. chown:用于修改文件或目录的所有者。
    • 语法:chown username file(将文件的所有者更改为指定用户)。
  3. chgrp:用于修改文件或目录的所属组。
    • 语法:chgrp groupname file(将文件的所属组更改为指定组)。
  4. umask:用于设置文件创建时的默认权限掩码。
    • umask的值是一个八进制数,它决定了新创建的文件或目录的默认权限。例如,umask值为022时,新创建的文件默认权限为644(rw-r--r--),新创建的目录默认权限为755(rwxr-xr-x)。

 

chmod例子:

# 文件所有者新增写的权限
chmod u+w 1.txt

# 文件所有者撤销写的权限
chmod u-w 1.txt

# 其他用户新增读的权限
chmod o+r 1.txt

# 所有都新增读的权限
chmod a+r 1.txt

 

# 所有者执行权限,组写权限,其他用户写执行权限
chmod 123 1.txt

chmod 755 1.txt

chmod 777 1.txt

 

 

chown例子:

注意:change owner 的缩写。

改变文档所有者,可使用参数 -R使得其子目录也同时修改

chown username 文件名

# 同时修改文档或目录的拥有者和所在组
chown username:group 文件名 

 

 

chgrp例子:

change group的缩写

改变文档所有组,可使用参数 -R使得其子目录也同时修改

chgrp 组的名字 文件名

 

umask例子:

假设你的umask是022:

  • 对于文件,权限将是666 - 022 = 644(rw-r--r--)
  • 对于目录,权限将是777 - 022 = 755(rwxr-xr-x)

 

 

3.5:特殊权限

Linux还提供了几种特殊权限,用于增强文件和目录的安全性或灵活性。

  1. SUID(Set User ID):只对二进制文件有效,让执行程序的用户临时获取所有者的权限。
  2. SGID(Set Group ID):对二进制文件,可以让执行者临时拥有所有属组的权限;对目录,可以让目录内新建的文件自动继承该目录原有用户组的名称。
  3. SBIT(Sticky Bit):可以保障用户只能删除自己的文件,而不能删除其他人的文件。对目录设置SBIT权限后,该目录中的文件只能被所有者删除。

 

 

3.6:总结

Linux权限管理是系统安全的重要组成部分,通过合理的权限设置,可以保护系统资源不被未授权的用户访问或篡改。Linux提供了多种权限设置方法和特殊权限,以满足不同场景下的需求。管理员和用户应该熟悉这些权限设置方法和规则,以确保系统的安全性和稳定性。

 

 

四:sudo命令

如果系统中没有 sudo,需要先安装。

# Debian
apt install sudo -y
# Centos
yum install sudo -y
 

 4.1:sudo命令的概述

Linux中的sudo命令是一个非常重要的系统管理指令,全称为“SuperUser Do”,意为“以超级用户身份执行”。它允许系统管理员授权普通用户执行一些或全部通常需要root权限才能执行的命令,如halt、reboot、su等。这样做不仅减少了root用户的登录和管理时间,还提高了系统的安全性。以下是关于sudo命令的详细介绍:

 

4.2:sudo的特性

  1. 权限管理:sudo能够限制用户只在某台主机上运行某些命令。
  2. 日志记录:sudo提供了丰富的日志,能够详细记录每个用户通过sudo执行了哪些操作,并且这些日志可以被传送到中心主机或日志服务器。
  3. 时间戳文件:sudo使用时间戳文件来执行类似的“检票”系统。用户输入密码后,会获得一张默认存活期为5分钟的“入场券”,超时后需要重新输入密码。

 

4.3:sudo的配置

  • 配置文件:sudo的配置文件是/etc/sudoers,它允许系统管理员集中地管理用户的使用权限和使用的主机。该文件通常只有超级用户才能修改,并且建议使用visudo命令来编辑,因为它能在保存时进行语法检查。
  • 配置示例
    • 允许用户以root身份执行任何命令:用户名 ALL=(ALL) ALL
    • 允许用户以特定用户身份执行特定命令:用户名 主机名=(目标用户) 命令列表
    • 无需密码执行命令:用户名 主机名=NOPASSWD: 命令列表

 

4.4:sudo的使用

一般用在非root用户下,临时提升非root用户的权限。

普通用户使用 sudo 命令需要输入 password 确认是否执行特权命令,而 root 用户使用 sudo 命令不需要输入 password, 因为在 /etc/sudoers 文件中默认配置,允许 root 用户可以在系统任何地方执行任何命令。

  • 基本语法sudo [选项] [命令]
  • 常用选项
    • -b:在后台执行指令。
    • -h:显示帮助。
    • -H:将HOME环境变量设为新身份的HOME环境变量。
    • -k:结束密码的有效期限,即下次执行sudo时需要再次输入密码。
    • -l:列出当前用户可以执行与无法执行的指令。
    • -p:改变询问密码的提示符号。
    • -u<用户>:以指定的用户作为新的身份执行命令。
    • -v:延长密码有效期限5分钟。
    • -V:显示版本信息。

例子:

# 查看版本信息
sudo -V

# 以root身份使用useradd命令创建cat用户
sudo -u root useradd cat

# 更改用户密码:
sudo passwd user

# 更改用户组:
sudo usermod -G group user

# 更改用户主目录的权限:
sudo chown -R user:group /home/document

# 更改文件所有者和所属组
sudo chown user:group /home/file

# 更改文件权限
sudo chmod -R 755 /home/file

 

4.5:普通用户

普通用户不能直接使用

898d242e6df447bbaf02d09d81ab7d0c.png

# 方法1:使用 root 用户编辑 /etc/sudoers 文件,将用户名添加到 %wheel 组中。
# 例如:%hzk  ALL=(ALL) ALL
%用户名 ALL=(ALL) ALL

# 方法2:使用 root 用户编辑 /etc/sudoers 文件,将用户添加到 %wheel 组中,设置不需要密码。
# 例如:%hzk  ALL=(ALL) NOPASSWD: ALL
%用户名 ALL=(ALL) NOPASSWD: ALL

d21980504f4b4035b88ad7c45bdd62d0.png

945c3529a0234aa6832b7b3d5d7e3941.png

2d41dc4bffc14efa98ddee6ea5b24c8b.png

 

4.6:注意事项

  • 使用sudo时,用户必须输入自己的密码,而不是目标用户的密码。
  • 未经授权的用户尝试使用sudo会收到警告,并且系统可能会向管理员发送邮件。
  • sudo的配置和管理需要谨慎进行,错误的配置可能导致系统安全问题。

通过以上介绍,可以看出sudo命令在Linux系统管理中的重要性。它不仅是一个强大的权限管理工具,还能通过详细的日志记录为系统管理员提供审计依据。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值