2. chown 更改拥有者
我们可以使用chown更改拥有者
但是当我们直接这样使用的时候,我们发现是不可以的
这里其实是因为jby这个拥有者无法直接将这个文件的拥有者交给qyt,因为还需要考虑qyt是否想要。
所以在这里我们需要使用sudo来进行指令的提权,不过这种方式目前我们的linux系统还是无法可以进行的。因为系统不信任我们。所以我们后序在讨论如何进行提权
所以我们可以先使用root用户进行提权
现在拥有者变为了qyt,我们还让jby去修改文件属性的话,那么是不可以的
所以我们可以先让root修改一下文件的属性
然后我们在让jby去读写文件发现是不可以的
不过虽然jby不是拥有者,但他还是所属组,所以我们可以给他加上所属组的权限
然后它就可以进行读写了
3. chgrp更改所属组
既然拥有者都可以更改,那么所属组当然也是可以更改的了
不过还是一样的, 我们无法直接使用jby去更改所属组吗,即便我们本身就是所属组,但我们仍需要使用root去更改,或者如果是拥有者也是可以更改的
如下是拥有者进行的更改
如下是root进行的更改
4.chown一次性更改拥有者和所属组
如下所示,在使用chown的时候,我们在中间加上冒号,然后就可以一次性连续更改拥有者和所属组了
5. 权限认证的细节
在如下的文件中
jby既是拥有者又是所属组,但是我们给它的权限是拥有者只可以读,但是所属组可以读写。
我们会发现,我们正在实际的写入的时候是无法进行写入的
这是因为在进行身份认证的时候,只能选择一个身份进行认证,即我已经是拥有者了,就不会在考虑所属组的权限了。所以无法修改
反而是我们将上面的拥有者给换为了qyt以后,反而是可以进行修改了
五、起始权限问题
当我们创建了一个新的文件的时候,我们发现它的起始权限是如下的
如果我们又创建了两个目录,它的起始权限是这样的
- 那么为什么我们创建文件的默认权限是是我们所看到的样子?
- 为什么普通文件是664?
- 为什么目录文件是775?
其实上面的都只是我们看到的样子
实际上在linux系统中,默认给普通文件的起始权限其实是666,给目录文件的起始权限其实是777
那么为什么默认给的起始权限和我们所看到的不一样么?
这是因为在linux中有一个权限掩码的东西,我们可以使用umask去查看
这个0002就是一个八进制数,第一个0代表它是一个八进制数,后面的三位才是关键的。后面的三个八进制数刚好可以形成9个比特位
权限掩码:凡是在umask中出现的权限,不会在最终的文件权限中出现
所以最终,才有了本应该是666和777,但是最终确变为了664和775
110 110 110 ---普通文件的起始权限 000 000 010 ---权限掩码umask 110 110 100 ---普通文件的最终权限
111 111 111 ---目录文件的起始权限 000 000 010 ---权限掩码umask 111 111 101 ---目录文件的最终权限
它的运算规则类似于如下
最终权限 = 起始权限 & (~umask)
如果我们想要修改umask,我们直接它在后面添加八进制数字即可
六、目录文件的读写执行权限
如下所示,当我们创建了两个文件以后
对于test.c文件它的读写执行,我们都很好理解,可是对于dir这个目录文件,它的读写执行就有点奇怪了,那么究竟都代表什么意思呢?
如果我们对这个目录文件的读权限给去掉了,那么我们可以看到,我们仍然可以进去这个文件,并且在这个目录文件中创建文件,但是我们可以使用ls去读取里面的东西
所以读权限并不影响能否进入,但是影响我们可不可以看
接下来我们继续将写权限给关掉,那么我们可以看到,我们仍然可以进去这个文件,但是我们不可以读也不可写了
所以写权限并不影响能否进入,但是影响我们可不可以写
如果我们继续将这个目录文件的x给去除掉,我们会发现,我们无法进入这个文件了,但是我们可以去查看这个文件的内容
所以目录文件的
r : 是否允许我们查看指定目录下的文件内容
w : 是否允许我们在当前目录下进行创建、更改、删除
x : 是否允许用户进入对应的目录
七、粘滞位
我们可以看一下我们的家目录里面的信息
可以看到,每一个用户它的拥有者和所属组都是它自己,并且只有拥有者有权限,其它的都没有权限
所以普通用户自己的家目录权限是700,我在我的家目录创建的文件,别人都看不到
但是有时候,我们多个用户想要进行文件数据的共享
所以就说明了我们所建立的共享文件,不能在任何一个人的家目录下
所以我们可以使用root账号在根目录下创建一个共享文件shared
然后我们将这个文件的权限全部公开
然后我们可以这样做,就可以共享一个文件了
但是这里出现了一个问题,那就是如果jby不让qyt看这个文件的内容的话,把它的权限给关了,那么如果qyt一气之下直接将文件给删了那就糟糕了。
这就有点不合理了
而我们知道一个文件能否被删除,并不由这个文件所决定,而是由这个文件所处的目录所决定
所以为了避免被qyt删除我们的文件,我们可以去关掉这个shared目录的写权限
可是这样做的话如果我们去掉了共享目录的w权限,我们也同时无法创建文件了,那么谈何共享呢???
为了使得让其他人无法删除文件,所以我们可以使用一个新的位,也即是粘滞位
即直接o+t就可以了
这时候,如果jby让qyt不高兴了,这下qyt想要删文件也删不了了
当然如果是我们文件的创建者要删除的话还是可以的
所以粘滞位:给目录设置,一般是共享目录,大家可以在目录进行各自文件的增删查改,但是只允许文件的拥有者和root去删除文件,其他人一概不允许,t就是一种特殊的x权限
也就是说root用户是可以无视前面的一切规则的。在比如root自己的文件,即便我将我自己的权限都给关了,我照样进的去,改的了,看的了
不过如果每次我们想要共享文件的话,这样是不是有点太费劲了呢?
其实在linux中,根目录下就有一个文件tmp,他就是带了粘滞位的