草庐IT

【Linux】一文掌握Linux权限

诺诺的包包 2023-04-03 原文

环境:centos7,腾讯云服务器

Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹


前言

权限 一词相信大家都不陌生,与我们的生活密切相关。小区里的门禁制度、公司里的管理制度、学校里的校规规定、甚至是社交平台上的一些设置等。可以说我们人类是被生活中的种种“权限”所“约束”着。

在Linux中同样存在着权限的概念,最主要分为:文件权限以及目录权限,所“约束”的对象则为各种用户。

权限是什么?

简单来说,权限就是一件事情是否允许被“谁”来做。这里的“”是用来限制的,而人所访问的对象可能天然没有某种“属性

就比如说,我们不可能在爱奇艺里打英雄联盟、也不可能在英雄联盟里观看电影,因此我们可以这样认为:权限=人+事物属性

Linux中的用户分类

Linux中主要分为两类用户:超级用户(root)、普通用户
超级用户(root):权限非常高、几乎可以做任何事情、有且仅有一个。
普通用户:由超级用户创建、可以有很多个,在涉及到某些操作时会权限不足。

普通用户的创建以及删除

adduser 用户:增加用户
userdel -r 用户:删除用户并删除该用户所在的家目录
passwd 用户:为用户增加密码

用户的切换

su 用户切换到指定用户(root下可以随意切换,且不需要输入用户密码)另外,假如 没有指定用户,则会切换到root

su - 切换到超级用户家目录(类似于重新登陆),并显示最近登录信息

Linux的文件属性

文件的类型与权限

文件的权限分为以下三种:可读(r)、可写(w)、可执行(x)

Linux不用文件的后缀来区分文件类型,而是用文件属性中第一列的第一个字符来区分文件类型。

Linux下的文件类型主要有以下几种:

-:普通文件(文本、可执行、归档文件(压缩包)等)
d:目录
b:块设备(磁盘)
c:字符设备(键盘、显示器)
l:链接文件
s:网络socket文件
p:管道文件

目前最常见的是前两种,即普通文件以及目录,其余的后面遇到再细说。

文件后缀存在的意义

想用就用,方便人来看的
看作文件名的一部分
Linux虽不区分,但一些软件会区分,比如gcc/g++等

角色划分

Linux中对该用户所处的角色也进行了划分,主要分为以下三种:
文件拥有者:顾名思义即拥有该文件的人
文件所属组:文件所属的组群、一个组里可以有好多个用户
文件的Other:除了以上两种角色之外的所有人

分别对应文件属性中的以下位置:

注意:超级用户不受权限的约束,就比如这里的test.txt文件,所属组以及拥有者都是qidunyan,root对于该文件来说就属于Other,权限只有可读权限,但是root一样可以进行修改里面的内容!

文件角色权限的修改

我们可以使用chmod命令来修改文件的权限,但是只有文件的拥有者,以及root可以进行修改该文件。
chmod 用户符号 +/- 权限 目标文件
用户符号:
g:所属组
o:Other
u:拥有者
+:增加权限
-:减少权限
权限:
r:可读
w:可写
x:可执行

当然,我们除了用此方法外,还可以使用八进制数字进行权限修改,1表示有该权限,0表示无该权限。如下:

文件的拥有者以及所属组的更改

对于一个文件的拥有者以及所属组,我们也可以用chown以及chgrp进行更改。当然,作为普通用户,我们的权限是不足以对文件进行拥有者以及所属组的修改,所以我们需要进行切换为root,或者用sudo对指令进行提权。
chown 用户名 目标文件 :更改文件的拥有者
chgrp 用户名 目标文件:更改文件所属组
-R:进行递归式更改

file命令

file 目标文件:直接识别文件类型
-c: 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z:尝试去解读压缩文件的内容

目录权限

我们可以很清晰的知道,一个普通文件的rwx,r代表可以查看该文件,w表示可以对该文件的内容进行修改,x表示该文件可以被执行,那么对于一个目录来说,rwx又意味着什么呢?
r(可读):可以查看该目录下的内容(即该目录下的所有文件以及文件属性)
w(可写):可以在该目录下创建新的文件或目录
x(可执行):可以进入该目录
-:无权限
(当然,这些权限限制的对象为普通用户,root无所畏惧)

文件的默认权限

在创建一个新的普通文件或目录时,创建出来的文件会自带默认权限。普通文件的默认权限为:664,目录文件的默认权限为:775。并且我们发现,Other的默认权限都不具有w,这主要是为了保护文件的安全性

默认权限是如何来的?

其实默认权限只是系统给我们看到的,不管是普通文件还是目录文件,其实都具有起始权限,也就是最开始的权限,普通文件的起始权限为:666,目录文件的起始权限为:777,而系统为了更好的控制文件权限,系统会自带默认的权限掩码,我们可以用umask进行查看,umask 0八进制数 进行修改默认的权限掩码。
默认权限=起始权限&(~umask)

粘滞位

先看以下这种情况,就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.

换句话来说,当一个文件被所有人共享时,用户会收到权限的约束,但是拦不住用户进行删文件,所以,为了制裁这种不合理的现象,粘滞位就出来了。

chmod +t 目标目录:给目标目录增加粘滞位

-t:去除粘滞位

粘滞位只能给目录添加,一般给共享目录添加,防止乱删文件


end

生活原本沉闷,但跑起来就会有风!🌹

有关【Linux】一文掌握Linux权限的更多相关文章

  1. ruby - rbenv 安装权限被拒绝 - 2

    大家好,我正在尝试设置一个开发环境,并且我一直在关注以下教程:Linktotutorial我做得不是很好,除了最基本的版本控制内容外,我对终端命令没有任何实际经验。我点击了第一个链接并尝试运行source~/.bash_profile我得到了错误;mkdir:/usr/local/rbenv/shims:权限被拒绝mkdir:/usr/local/rbenv/versions:权限被拒绝现在每次我加载终端时都会出现错误。bash_profile的内容;exportPATH=/usr/local/rbenv/bin:$PATHexportRBENV_ROOT=/usr/local/rbe

  2. ruby-on-rails - 为什么用户必须输入 7 位数的 Twitter PIN 才能授予我的应用程序访问权限? - 2

    我正在为我的用户实现一些ruby​​onrails代码推特内容。我正在创建正确的oauth链接...类似http://twitter.com/oauth/authorize?oauth_token=y2RkuftYAEkbEuIF7zKMuzWN30O2XxM8U9j0egtzKv但在我的测试帐户授予对twitter的访问权限后,它会弹出一个页面,上面写着“您已成功授予对.我不知道用户应该在哪里输入此PIN以及他们为什么必须这样做。我认为这不是必要的步骤。Twitter应该将用户重定向到我在应用程序设置中提供的回调URL。有谁知道为什么会这样?更新我找到了thisarticle声明我需

  3. ruby - rbenv:权限被拒绝 - 2

    我正在关注Ryan的RailsCast第339集。我已经安装了rbenv并且可以运行ruby-v。我退出了我的session,当我试图返回时(通过root的sudeployer,我得到了这个错误/home/deployer/.rbenv/bin/rbenv:line20:cd:/root:Permissiondenied这是rbenv文件:#!/usr/bin/envbashset-e[-n"$RBENV_DEBUG"]&&set-xresolve_link(){$(type-pgreadlinkreadlink|head-1)"$1"}abs_dirname(){localcwd="

  4. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  5. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

  6. ruby - 如何在 Ruby 中获取 linux 系统信息 - 2

    如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack

  7. ruby - rbenv:在 Linux Mint 上找不到 gem 命令 - 2

    我在LinuxMint17.2上。我最近使用apt-getpurgeruby​​删除了ruby​​。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,

  8. ruby - 在 Linux 上编译 Ruby 1.9.2 所需的先决条件? - 2

    我是Ruby和RoR的新手。我有一个带有Ubuntu镜像的干净Linode实例,我想从源代码编译Ruby而不是使用apt-get。我已经在谷歌上搜索了执行此操作的说明,但经过一些尝试后,当我尝试运行一些教程示例时,我不断收到有关缺少zlib和其他一些包的错误。任何人都可以给我详细的说明(或链接),教我如何在从源代码编译Ruby之前安装必要的必备包吗?我的目的是编译Ruby的最新稳定版本,然后安装Rubygems和Rails。提前感谢您的帮助!!! 最佳答案 Thisblogpost涵盖从源代码编译ruby​​所需的包和安装过程;它引

  9. ruby-on-rails - 在服务器上没有互联网访问权限的 Capistrano 部署 - 2

    如何使用Capistrano将Rails应用程序部署到无法访问外部网络或存储库的生产或暂存服务器?我已经设法完成部署的一半,并意识到Capistrano没有在我的本地机器上下载gitrepo,但它首先连接到远程服务器并尝试在那里下载Git存储库。我希望有一个类似Javaee的构建系统,其中创建可交付成果并将该可交付成果发送到服务器。就像您构建.ear文件并将其部署到您想要的任何服务器上一样。显然在RoR中,你被迫(据我所知)在该服务器上构建应用程序,在那里创建一个gem存储库,在那里克隆最新的分支等等。有什么方法可以将准备运行的包发送到远程服务器吗? 最佳答

  10. ruby-on-rails - 使用 Ruby on Rails 处理回形针文件夹和文件权限 - 2

    我在运行Ubuntu10.04LTS的远程VPS机器上以生产模式运行RubyonRails3.0.9(在开发模式下,我在MACOSSnow上使用RoRLeopard),我想知道如何管理以下场景。我使用Apache2和PhusionPassenger并且我将虚拟主机设置为如下所示:ServerNameproject_name.comDocumentRoot/srv/www/project_name.com/publicAllowOverrideallOptions-MultiViews此外,我使用Paperclipgem,由于网上很多人在生产模式下使用它,我在处理(图像)文件时遇到以下错

随机推荐