将ubsadm文件夹所属用户修改为users
chown -R ubsadm:users /home/ubsadm
此命令将用户123的用户组改为root
usermod -g 123 root
【129】
在理解权限之前我们要知道linux中的用户组:
在Linux中每个用户都属于一个组,Linux中每个文件都都有所有者、所有组、其他组。这几个概念我们可以用现实中的例子来理解。比如说你有一本书,那么你就是这本书的所有者,你有这本书的最大权限,你可以使用,借出这本书,赋予这本书其他权限,你们班的其他同学和你可以看成一个组,其他班的同学可以看成不同组的同学。现在你有这本书最大的权限,你也可以将这本书和你的同班同学共享,这样你们就有相同的权限,你们班别的同学也可以修改这本书的权限,此时这本书就成了你们班共享的一本书,你们班的每个人都有相同的权限。
同时,Linux中还有一个root用户,这个用户拥有最高权限,他比任何其他用户的权限都高,所有他可以修改任何别的文件的权限。
文件的权限:
我们可以用指令ls -l查看文件的详细权限
r:表示可读
w:表示可写
x:表示可执行
也可以用数字表示这一点我们会在修改文件权限说明。
对于文件夹的rwx表示:
r表示可读及可以查看文件夹内容可以ls查看
w表示可写及可以向文件夹中传送内容如文件
x表示可执行及可以向文件夹中可以cd进去
权限的修改:
Linux中可以用chmod修改文件的权限
Linux中的rwx也可以用数字表示
r=4
w=2
x=1
这些转变成二进制就很好理解了:4=0000 0100
2=0000 0010
1=0000 0001
所以在平常通常这样来修改文件权限:
7=4+2+1及将rwx权限赋予所有者、组、其他用户
下面我们来看一下用户的权限:
如图我使用hja账户创建了一个test.txt 文件并且文件权限为所有者rw
组内的成员rw
其他组成员没有任何权限
现在我们切换hhh账户:
可以看到权限不足,因为hhh属于其他组所以没有读取权限同样也没有删除权限
Linux的粘贴为(sticky位):
要删除一个文件你不一定要有这个文件的写权限,但一定要有上级目录的写权限,也就是说即使你没有这个文件的写权限,但你有上级目录的写权限同样可以删除这个文件。sticky位作用就是使一个目录既可以让任何用户写入文件但是不能让其他用户删除文件。
权限简介
- Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。
- Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。Python系列教程,免费获取,遇到bug及时反馈,讨论交流可加扣裙<60 61 15 02 7>
- Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
- Linux上通常使用chmod命令对文件的权限进行设置和更改。
一、快速入门
更改文件权限 (chmod命令)
一般使用格式
chmod [可选项] <mode> <file...>
范例:
- 设置所有用户可读取文件 a.conf
- 设置 c.sh 只有 拥有者可以读写及执行
- 设置文件 a.conf 与 b.xml 权限为拥有者与其所属同一个群组 可读写,其它组可读不可写
- 设置当前目录下的所有档案与子目录皆设为任何人可读写
数字权限使用格式
在这种使用方式中,首先我们需要了解数字如何表示权限。 首先,我们规定 数字 4 、2 和 1表示读、写、执行权限(具体原因可见下节权限详解内容),即 r=4,w=2,x=1 。此时其他的权限组合也可以用其他的八进制数字表示出来,如: rwx = 4 + 2 + 1 = 7 rw = 4 + 2 = 6 rx = 4 +1 = 5 即
若要同时设置 rwx (可读写运行) 权限则将该权限位 设置 为 4 + 2 + 1 = 7 若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置 为 4 + 2 = 6 若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为 4 +1 = 5
上面我们提到,每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。语法格式为 :
chmod <abc> file...
范例:
- 设置所有人可以读写及执行
- 设置拥有者可读写,其他人不可读写执行
更改文件拥有者(chown命令)
linux/Unix 是多人多工作业系统,每个的文件都有拥有者(所有者),如果我们想变更文件的拥有者(利用 chown 将文件拥有者加以改变),一般只有系统管理员(root)拥有此操作权限,而普通用户则没有权限将自己或者别人的文件的拥有者设置为别人。
语法格式:
chown [可选项] user[:group] file...范例:
- 设置文件 d.key、e.scrt的拥有者设为 users 群体的 tom
- 设置当前目录下与子目录下的所有文件的拥有者为 users 群体的 James
二、Linux权限详解
Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。这也是Linux有别于Windows的机制,也是基于这个权限机智,Linux可以有效防止病毒自我运行,因为运行的条件是必须要有运行的权限,而这个权限在Linux是用户所赋予的。
Linux的文件权限有以下设定:
- Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
- Linux下权限的属组有 拥有者 、群组 、其它组 三种。每个文件都可以针对这三个属组(粒度),设置不同的rwx(读写执行)权限。
- 通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
- 如果我们要表示一个文件的所有权限详情,有两种方式:
- 第一种是十位二进制表示法,(三个属组每个使用二进制位,再加一个最高位共十位),可简化为三位八进制形式
- 另外一种十二位二进制表示法(十二个二进制位),可简化为四位八进制形式
- 十位权限表示
常见的权限表示形式有:
后九位解析: 我们知道Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。 上面我们用字符表示权限,其中 -代表无权限,r代表读权限,w代表写权限,x代表执行权限。
实际上,后九位每个位置的意义(代表某个属组的某个权限)都是固定的,如果我们将各个位置权限的有无用二进制数 1和 0来代替,则只读、只写、只执行权限,可以用三位二进制数表示为
转换成八进制数,则为 r=4, w=2, x=1, -=0(这也就是用数字设置权限时为何是4代表读,2代表写,1代表执行)
实际上,我们可以将所有的权限用二进制形式表现出来,并进一步转变成八进制数字:
由上可以得出,每个属组的所有的权限都可以用一位八进制数表示,每个数字都代表了不同的权限(权值)。如 最高的权限为是7,代表可读,可写,可执行。
故 如果我们将每个属组的权限都用八进制数表示,则文件的权限可以表示为三位八进制数
关于第一位最高位的解释: 上面我们说到了权限表示中后九位的含义,剩下的第一位代表的是文件的类型,类型可以是下面几个中的一个:
十二位权限(Linux附加权限)
附加权限相关概念
linux除了设置正常的读写操作权限外,还有关于一类设置也是涉及到权限,叫做Linxu附加权限。包括 SET位权限(suid,sgid)和粘滞位权限(sticky)。SET位权限:
suid/sgid是为了使“没有取得特权用户要完成一项必须要有特权才可以执行的任务”而产生的。 一般用于给可执行的程序或脚本文件进行设置,其中SUID表示对属主用户增加SET位权限,SGID表示对属组内用户增加SET位权限。执行文件被设置了SUID、SGID权限后,任何用户执行该文件时,将获得该文件属主、属组账号对应的身份。在许多环境中,suid 和 sgid 很管用,但是不恰当地使用这些位可能使系统的安全遭到破坏。所以应该尽量避免使用SET位权限程序。(passwd 命令是为数不多的必须使用“suid”的命令之一)。
- suid(set User ID,set UID)的意思是进程执行一个文件时通常保持进程拥有者的UID。然而,如果设置了可执行文件的suid位,进程就获得了该文件拥有者的UID。
- sgid(set Group ID,set GID)意思也是一样,只是把上面的进程拥有者改成进程组就好了。
- 如果一个文件被设置了suid或sgid位,会分别表现在所有者或同组用户的权限的可执行位上;如果文件设置了suid还设置了x(执行)位,则相应的执行位表示为s(小写)。但是,如果没有设置x位,它将表示为S(大写)。如:
SET位权限表示形式(10位权限):
设置方式:
SET位权限可以通过chmod命令设置,给文件加suid和sgid的命令如下(类似于上面chmod赋予一般权限的命令):
粘滞位权限:
粘滞位权限即sticky。一般用于为目录设置特殊的附加权限,当目录被设置了粘滞位权限后,即便用户对该目录有写的权限,也不能删除该目录中其他用户的文件数据。设置了粘滞位权限的目录,是用ls查看其属性时,其他用户权限处的x将变为t。 使用chmod命令设置目录权限时,+t、-t权限模式可分别用于添加、移除粘滞位权限。
粘滞位权限表示形式(10位权限):
一个文件或目录被设置了粘滞位权限,会表现在其他组用户的权限的可执行位上。如果文件设置了sticky还设置了x(执行)位,其他组用户的权限的可执行位为t(小写)。但是,如果没有设置x位,它将表示为T(大写)。如:
设置方式:
sticky权限同样可以通过chmod命令设置:
chmod +t <文件列表..>
十二位的权限表示方法
附加权限除了用十位权限形式表示外,还可以用用十二位字符表示。
SGT分别表示SUID权限、SGID权限、和 粘滞位权限,这十二位分别对应关系如下:
第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的三组rwx位(后九位)。
在这十二位的每一位上都置值。如果有相应的权限则为1, 没有此权限则为0。
如果将则前三位SGT也转换成一个二进制数,则
- suid 的八进制数字是4
- sgid 的代表数字是 2
- sticky 位代表数字是1
- 这样我们就可以将十二位权限三位三位的转化为4个八进制数。其中
- 最高的一位八进制数就是suid,sgdi,sticky的权值。
- 第二位为 拥有者的权值
- 第三位为 所属组的权值
- 最后一位为 其他组的权值
附加权限的八进制形式
通过上面,我们知道,正常权限和附加权限可以用4位八进制数表示。类似于正常权限的数字权限赋值模式(使用三位八进制数字赋值)- chmod <abc> file...
我们可以进一步使用4位八进制数字同时赋值正常权限和附加权限。
chmod <sabc> file...
其中s是表示附加权限的把八进制数字,abc与之前一致,分别是对应User、Group、及Other(拥有者、群组、其他组)的权限。因为SUID对应八进制数字是4,SGID对于八进制数字是2,则“4755”表示设置SUID权限,“6755”表示同时设置SUID、SGID权限。
我们进一步将上小节的例子中的二进制数转变为八进制表示形式,则
对比范例:
- 设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行
- 设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行,并且设置suid
chmod 4755与chmod 755对比多了附加权限值4,这个4表示其他用户执行文件时,具有与所有者同样的权限(设置了SUID)。
为什么要设置4755 而不是 755? 假设netlogin是root用户创建的一个上网认证程序,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令使其他用户也能运行netlogin。但假如netlogin执行时需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。
在 Linux 命令中,chmod
用于修改文件或者目录的权限。对于文件或者目录的普通权限,共有 3 种,分别为:
r
:读取;w
:写入;x
:执行。- 此外,还有 3 种特殊权限,分别为:
suid
:Set User ID;sgid
:Set Group ID;sticky
:粘滞位。- 在此,我们仅介绍如何利用
chmod
修改文件及目录的普通权限。
权限范围及代号
文件及目录的权限范围,包括:u
:User,即文件或目录的拥有者;g
:Group,即文件或目录的所属群组;o
:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;a
:All,即全部的用户,包含拥有者、所属群组以及其他用户。- 权限的代号包括:
r
:读取权限,数字代号为4
;w
:写入权限,数字代号为2
;x
:执行或切换权限,数字代号为1
;-
:不具任何权限,数字代号为0
;s
:当文件被执行时,根据who
参数指定的用户类型设置文件的setuid
或者setgid
权限。- 语法及选项说明
chmod
语法:
chmod [-cfRv][--help][--version][<权限范围>+/-/=<权限设置...>][文件或目录...]
chmod [-cfRv][--help][--version][数字代号][文件或目录...]
chmod [-cfRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
- 选项说明:
-c
或--changes
:效果类似-v
参数,但仅返回更改的部分;-f
或--quiet
或--silent
:不显示错误信息;-R
或--recursive
:递归处理,将指定目录下的所有文件及子目录一并处理;-v
或--verbose
:显示指令执行过程;--help
:显示在线帮助信息;--reference=<参考文件或目录>
:把指定文件或目录的权限全部设成和参考文件或目录的权限相同;--version
:显示版本信息;<权限范围>+<权限设置>
:开启权限范围的文件或目录的该项权限设置;<权限范围>-<权限设置>
:关闭权限范围的文件或目录的该项权限设置;<权限范围>=<权限设置>
:指定权限范围的文件或目录的该项权限设置。
- 示例
首先,我们通过ls -l
命令来看看文件及目录的相关信息:
如上图所示,以其为例,我们依次来分析各内容代表的含义,
- 第 1 行:
total 16
,表示所列出内容的磁盘占用空间总和值,单位为KB
;- 第 1 列:
dr-xr-x-r-x
,表示文件或目录的类型及权限;- 第 2 列:
4
,表示文件或目录的链接个数;- 第 3 列:
bin.guo
,表示文件或目录的所有者;- 第 4 列:
staff
,表示文件或目录的所在群组;- 第 5 列:
136
,表示文件或目录本身的大小;- 第 6 列:
Nov 24 11:26
,表示文件或目录的最后更新时间;- 第 7 列:
a
,表示文件或目录的名称。- 其中 第 1 列 的内容(除
total
外)特别丰富,以dr-xr-x-r-x
为例(共 10 个字符),我们对其进一步分析:- 第 1 个字符
d
,表示文件或目录的类型,其类型包括
p
,表示命名管道文件;d
,表示目录文件;l
,表示符号连接文件;-
,表示普通文件;s
,表示 Socket 文件;c
,表示字符设备文件;b
,表示块设备文件。
- 第 2 ~ 4 个字符
r-x
,表示文件或目录的所有者权限;- 第 5 ~ 7 个字符
r-x
,表示文件或目录的所有者同组用户权限;- 第 8 ~ 10 个字符
r-x
,表示文件或目录的其他用户权限。- 此外,大家可能还注意到有些文件或目录在其显示的权限后面还跟着一个字符,或者为
.
或者为@
,具体:- 在 Mac 终端中显示为
@
- 在 Linux 系统中显示为
.
- 这表示其所属的文件或目录开启了
SELinux
安全上下文标签,如果没有,则表示未开启。
接下来,演示一些具体的操作示例:- 示例 1:添加所有用户对
test-one
的执行权限
- 示例 2:取消
test-one
所有者群组用户的执行权限及其他用户的写入权限
- 示例 3:递归取消文件夹
a
的所有用户的执行权限
- 示例 4:添加所有用户对
test-one
的所有权限
- 示例 5:取消
test-one
所有者的执行权限及其他用户的所有权限
基本权限在linux系统中,最基本的权限分为三种:读、写、执行。这些权限作为目录或者文件的属性,被记录在目录或者文件上。根据记录的内容不同,我们的用户和用户组获得这个目录或者文件相对于的权限。我们可以通过命令【ls -l 路径】来查看这个属性。注意,如果查看目标是一个目录的话请再带上一个-d参数。
如上图所示,命令的输出中从第二位开始,每三位为一组,记录了不同用户对该文件拥有怎样能力。其中前三位,对应该文件的所属人,表示其所属人对其拥有怎么样的权限;中间三位,对应所属组,但值得注意的是如果更准确一些的描述的话,应该说是这个用户组内的成员对这个文件拥有怎样的权限;最后三位对应的就是其他人了,即既不是这个文件的所属人也不是这个文件所属组内的成员的用户对这个文件拥有怎样的权限。不过这个命令的输出中除了这九位字符,他们后面的那个点,也记录了一些权限信息,这个我们后面再说。
好了学会了怎么看权限,那么接下来我们就要来学习大招了——这些字母到底代表着什么?
由于对于目录和文件这几个字母所对应的含义并不相同,所以我们接来下分组讨论:
针对文件而言
r 读权限:表示可以读取到文件中写的内容,即可以对文件执行类似于cat等查看文件的命令;
w 写权限:表示可以对文件中的内容进行修改,即可以使用类似于vim编译器等方式修改文件内容,并且能保存;
x 执行权:执行权是一个特殊的权限,大部分的文件是没有执行权的。一般只有一些脚本,命令等可以用于执行的文件,才会被赋予执行权,那么拥有这个权限文件,才能被运行。比如,如果黑客向我们的计算机中植入了一个木马病毒,这个木马病毒想要被运行且产生一些破坏,那么黑客就必须想办法给这个木马病毒赋予一个执行权,并使用相对于的用户(一般是root,所以请保护好自己服务器的root密码)去执行,否则这个木马病毒是没有能力破坏我们的系统的。
针对目录而言
r 读权限:表示可以看到目录中的内容,即可以对目录执行ls命令;
w 写权限:表示可以向目录中写入内容,例如在目录内执行mkdir等创建的操作不会被拒绝;
x 执行权限:表示可以进入该目录,即可以对这个目录执行cd命令。
* - 无该权限:即权限位置使用-代替对于的字母,表示没有这个权限,文件与目录通用。
值得注意的是,我们的操作系统中存在一个皇帝级别的用户,那就是root,这个用户是无视上面所述的三大基本权限的。即使root没有对应的权限,root用户也能强制读取修改文件和目录。但是文件的执行权除外,如果文件没有执行权,root用户也不能以正常的方式使其执行,不过,对于脚本文件,即使没有执行权,root用户仍然能使用【sh 脚本路径】的方式使其运行。定期修改和设置复杂的root用户密码,是任何一名系统管理员必做的事情。
权限的另一种表达方式从上面的截图我们看出,权限是是以rwx-的组合来表达的。但是我们与其他人交流时,总不能将这9位权限读一遍吧,这也太麻烦了,所以呢我们权限还有另外一种表达方式,即数字表达法。
表达方式如下:
R=4
W=2
X=1
-=0
那么在表达时候,我们只需要将其三位为一组相加求和就行了。例如权限rwxr-xr-x即可表达为755
权限的修改方式修改权限使用命令为chmod,这个命令一共有两种用法,我们可以来看一下:
公式法
如上图所述,公式法的主要用法为【chmod 表示权限的公式路径】。
该用法中的公式有三部分组成,中间没有空格。
其中第一部分为who,即要修改谁对目标的权限,u表示所属人,g表示所属组,o表示其他人,a表示全部人即每个位置都要修改。
第二部分为how,即要怎么修改,+表示给予一个权限,-表示去掉一个权限,=表示等于一个权限
第三部分为what,即要改什么,r表示读,w表示写,x表示执行。rwx三位写全的情况一般是与第二部分的=连用,表示将对于位置直接修改为对于的权限,没有权限使用-表示,或者直接不写。
例如:
chmod u+w /tmp/testfile 表示给予testfile文件所属人,对这个文件的写权限。
chmod a-x /tmp/testfile 表示去除testfile文件包括所属人、所属组、其他人在内的全部位置的执行权限
chmod o=r-x /tmp/testfile 表示修改testfile文件其他人位置的权限为读执行,没有写也可以表达为chmod o=rx /tmp/testfile
数字法
chmod 表达权限的三位数字路径
这种用法非常简单,即提前算好要修改的权的三位数字为多少,直接将数字跟在chmod命令后面即可,例如
chmod 753 /tmp/testfile 表示修改文件权限为753,即修改后的权限如下图:
无论是是数字法还是公式法,都可以快速修改权限,同学们可以选择合适自己的方法去修改权限。不过通过命令使用的方法,我们不难看出公式法更适合去修改那种细节上的权限,比如我们想给予所属人写权限,而不讨论其他权限,就可以选择使用公式法。而如果要权限进行大范围的修改,数字法便是最好的选择。适当的选择合适的方法,可以大大的提高我们的工作效率,使工作起来更轻松。
为了方便广大Linux爱好学习者一起学(聚)习(众)交(搞)流(基),特开设微信/QQ网络运维Linux交流群,里面已经上传大量Linux学习资料,欢迎广大运维工程师进群学习!
扫码入群?
我就知道爱学习的你“在看”
将ubsadm文件夹所属用户修改为users
chown -R ubsadm:users /home/ubsadm
此命令将用户123的用户组改为root
usermod -g 123 root转载于:https://www.cnblogs.com/sea-stream/p/11019781.html