Linux 权限

文章目录

  • 用户管理
    • 基本认识
    • 用户管理基本指令
  • 权限
    • 文件/目录权限
    • 权限修改
      • 文件/目录权限修改
      • 用户权限修改
    • 权限掩码
    • 目录的权限
    • 粘滞位

用户管理

基本认识

  1. Linux下有两种用户:超级用户(root)、普通用户。
    超级用户:可以再linux系统下做任何事情,不受限制
    普通用户:在linux下做有限的事情。
    超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

  2. 命令:su [用户名]
    功能:切换用户。
    普通用户切普通用户要密码
    普通用户切超级用户要密码
    超级用户切普通用户不要密码

  3. 每个文件和目录都有一个所有者(owner)和一个所属组(group)。这些属性用于控制对文件的访问权限和管理。

所有者(owner)是指文件或目录的创建者(用户),他拥有对该文件或目录的完全控制权,包括读取、写入和执行权限。只有文件的所有者和root用户才能修改文件的所有者或所属组

所属组(group)是指文件或目录所属的组,组内的用户拥有与所属组相关的一些权限。例如,如果一个文件的所属组是"developers",那么属于"developers"组的用户可能具有对该文件的读取和写入权限。(可能的含义是如果不做额外设置,同一组内成员对同一文的权限相同)

用户管理基本指令

  1. useradd:用于创建新用户。例如,useradd username会创建一个名为"username"的新用户。
  2. userdel:用于删除用户。例如,userdel username会删除名为"username"的用户。
  3. usermod:用于修改用户的属性,如用户名、密码、用户ID等。例如,usermod -l newusername oldusername会将"oldusername"修改为"newusername"。passwd:用于设置用户的密码。例如,passwd username会提示您输入新密码并将其与用户名关联。
  4. groupadd:用于创建新用户组。例如,groupadd groupname会创建一个名为"groupname"的新用户组。
  5. groupdel:用于删除用户组。例如,groupdel groupname会删除名为"groupname"的用户组。
  6. usermod -aG:用于将用户添加到其他用户组。例如,usermod -aG groupname username会将"username"添加到"groupname"用户组中。
  7. id:用于查看用户的详细信息,包括用户ID、所属组等。例如,id username会显示名为"username"的用户的详细信息

权限

文件/目录权限

ls -l :
Linux 权限_第1张图片

  1. 文件类型(记不住哒,知道就行)
    d:文件夹
    -:普通文件
    l:软链接(类似Windows的快捷方式)
    b:块设备文件(例如硬盘、光驱等)
    p:管道文件
    c:字符设备文件(例如屏幕等串口设备)
    s:套接口文件

  2. 权限表示方法
    Linux 权限_第2张图片
    Linux 权限_第3张图片

权限修改

文件/目录权限修改

chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

  1. 使用方法一:用户表示符 +/-= 权限字符

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
  1. 使用方法二 : 用三位八进制数
# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt

用户权限修改

chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
常用选项:-R 递归修改文件或目录的拥有者

chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

file
功能说明:辨识文件类型。
语法:file [选项] 文件或目录…

文件配置分配权限
(很难记住,知道有配置文件可以分配不同用户的登录、执行指令权限即可

  1. 进入配置文件
sudo visudo // 进入配置文件

Linux 权限_第4张图片
2.修改

username    ALL=(ALL:ALL) command

其中,username是要分配权限的用户名,command是允许执行的命令(因为平时执行的指令都是由环境变量自动补全,所以不用写出完整指令路径,这里要写出指令的完整路径)。

bob    ALL=(ALL:ALL) ALL

在sudoers文件中,(ALL:ALL) 表示允许用户在任何主机以任何用户身份执行任何命令。让我们对这个语法进行解释:
第一个 ALL 表示允许用户在任何主机上执行命令。
第二个 ALL 表示允许用户以任何用户身份执行命令。
第三个 ALL 表示允许用户执行任何命令。

示例:

示例:

bob ALL=(root:root) /bin/ls:允许用户bob在任何主机上以root用户身份执行/bin/ls命令。
bob localhost=(root) /sbin/reboot:允许用户bob在本地主机上以root用户身份执行/sbin/reboot命令。
bob ALL=(ALL:ALL) NOPASSWD: /usr/bin/apt-get:允许用户bob在任何主机上以任何用户身份执行/usr/bin/apt-get命令,而且无需输入密码。

sudo指令分配权限
示例:

/usr/sbin/useradd u2

解释一下该命令的各个部分:

sudo:表示以超级用户(root)的身份执行命令。
-u root:表示以root用户的身份执行命令。这是通过sudo命令指定要切换的用户。
/usr/sbin/useradd:是要执行的命令,即创建用户的命令。(要写出指令的完整路径)
u2:是要创建的用户名

权限掩码

umask
功能;查看或修改文件掩码
格式:umask 权限值
说明:

  1. 将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用
    户默认为0002。

  2. 新建文件夹默认权限=0666, 新建目录默认权限=0777 , 实际创建的出来的文件权限是: mask & ~umask .
    (即如果掩码为0022时创建出来目录的权限值为 0 7 5 5 ,即d rwx r-x r-x)

# umask //查看
# umask 044//设置

目录的权限

可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

粘滞位

概述:可以防止其他用户删除粘滞位目录内用户的文件,如果其他用户具有对文件的写权限,其他用户仍然可以修改文件内容

用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。
上述情况可以发生,为了防止这种现象发生,可以设置粘滞位,粘滞位(Sticky Bit)是一种特殊的权限位,用于设置目录的权限。当粘滞位被设置在一个目录上时,只有目录的所有者、文件的所有者和超级用户才能够删除或重命名目录中的文件’

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除/重命名
二、该目录的所有者删除/重命名
三、该文件的所有者删除/重命名

记忆:超级管理员是国家、目录所有者是土地局、文件所有者是

设置粘滞位的方法示例:


使用数字模式设置粘滞位为 t:

chmod 1777 directory_name
使用符号模式设置粘滞位为 t:

chmod +t directory_name
使用符号模式设置粘滞位为 T:

chmod +T directory_name

注意,只有对目录设置粘滞位才有意义,对于文件来说是没有作用的。此外,粘滞位只对目录中的文件生效,对目录本身没有影响。

你可能感兴趣的:(linux,服务器,个人学习)