设为首页 加入收藏

TOP

跟运维学 Linux - 03(一)
2023-08-06 07:49:37 】 浏览:130
Tags:Linux

权限机制和性能指标

前面我们学完了操作文件用户相关知识,本篇学习权限性能相关知识。

文件的属性看起

看 linux 的权限,先从文件的属性看起

ls -l 加 -d 是只看这个文件夹:

pjl@pjl-pc:~$ sudo ls -ld /root
drwx------ 8 root root 4096 7月  18 16:20 /root

最左侧的 d 表示目录,这个前面已经说过,后面的又是什么?我们两部分来讲:rwx------root root

属主和属组

root root,第一个 root 表示这个文件夹是 root 用户,后一个 root 表示这个文件夹是 root 组的。

专业的叫法,前者叫做文件夹的属主,后者叫做文件夹的属组

我们再来看一个:

pjl@pjl-pc:~$ ls -ld /home/test19
drwxr-xr-x 2 test19 test19 4096 7月  18 15:32 /home/test19

这里说明 /home/test19 文件夹的主人是 test19 用户,test19 组成员也是这个文件夹的主人。

既然 root 用户和 root 组成员是 /root 文件夹的主人,是否就可以对其为所欲为

权限位

明白了属主和属组,如何看一个一个的文件以及文件夹的权限?

我们把 rwx------ 拆成三部分来看:rwx------

root 用户的权限对应第一部分:rwx。可读,可写,可执行。

root 组成员的权限对应第二部分:---。不可读、不可写、不可执行

权限位由三部分组成:读权限(r/-) + 写权限(w/-) + 执行权限(x/-)。

位权限和普通文件的关系

普通文件和文件夹的权限位,代表的意思不一样。

先看普通文件:

pjl@pjl-pc:~/linux-test$ ls -l
总用量 4
-rwxrw-r-- 1 pjl pjl 6 7月  19 17:14 a.txt

pjl 用户对应的权限是可读可写可执行(rwx)。

对于 pjl 组成员的权限是可读可写不可执行(rw-)。

对于普通文件,可读就是能读取(例如 cat、head)文件内容:

pjl@pjl-pc:~/linux-test$ cat a.txt
apple

对于普通文件,可写权限就是可以通过编辑保存。如果没有写权限,vim 不让你保存。

执行权限,后续讲脚本的时候再说,简单理解:是否可以运行脚本。

// 创建一个脚本
pjl@pjl-pc:~/linux-test$ ls -l
-rw-rw-r-- 1 pjl pjl 26 7月  19 17:40 a.sh
// 没有执行权限
pjl@pjl-pc:~/linux-test$ ./a.sh
-bash: ./a.sh: 权限不够
// 增加执行权限
pjl@pjl-pc:~/linux-test$ chmod u+x a.sh
pjl@pjl-pc:~/linux-test$ ls -l
-rwxrw-r-- 1 pjl pjl 26 7月  19 17:40 a.sh
// 能执行了
pjl@pjl-pc:~/linux-test$ ./a.sh
hello
位权限和文件夹的关系

以这个文件夹为例:

pjl@pjl-pc:~/linux-test$ ls -ld dir1
d-wxrwxr-x 2 pjl pjl 4096 7月  19 18:38 dir1

文件夹如果有读权限,才能使用 ls:

pjl@pjl-pc:~/linux-test$ ls dir1
ls: 无法打开目录'dir1': 权限不够

文件夹写权限,表示我们可以改变这个文件夹下的内容。比如创建文件、删除文件、创建子文件夹。

pjl@pjl-pc:~/linux-test$ touch dir1/b.txt
pjl@pjl-pc:~/linux-test$ ls dir1
ls: 无法打开目录'dir1': 权限不够

文件夹执行权限,表示能不能进入这个文件夹。最直接就是 cd 能不能用:

pjl@pjl-pc:~/linux-test$ cd dir1
pjl@pjl-pc:~/linux-test/dir1$ ls
ls: 无法打开目录'.': 权限不够
// 虽然文件夹没有读权限,但可以查看里面的文件内容
pjl@pjl-pc:~/linux-test/dir1$ cat b.txt
i am b.txt
其他用户权限

rwx------ 的最后三位(---)表示其他用户的权限。也就是属主和属组以外的用户。

例如 /root 文件夹对于其他用户的权限是---:不可读、不可写、不可执行

drwx------ 12 root root 4096 6月  14 09:35 /root

我们创建用户 user1 去读、写和执行:

// 不可读
user1@pjl-pc:~$ ls /root
ls: 无法打开目录'/root': 权限不够
// 不可执行
user1@pjl-pc:~$ cd /root
-bash: cd: /root: 权限不够
// 不可写
user1@pjl-pc:~$ touch /root/a.txt
touch: 无法创建 '/root/a.txt': 权限不够
user1@pjl-pc:~$

修改权限

如何修改权限,用一个小任务来举例说明。

linux 下有一个用户 user1,他的家目录是 /home/user1,不过目前他无法进入自己的家目录。

pjl@pjl-pc:~/linux-test$ su - user1
输入密码
su: warning: cannot change directory to /home/user1: 权限不够
-bash: /home/user1/.bash_profile: 权限不够
user1@pjl-pc:/home/pjl/linux-test$ ls /home/user1
ls: 无法打开目录'/home/user1': 权限不够

作为系统管理员,我们要查看原因:

pjl@pjl-pc:~/linux-test$ ls -ld /home/user1
d--------- 4 root root 4096 7月  19 19:01 /home/user1

这里有两个问题:

  • 属主和属组不应该是 root,而应该是用户自己
  • 位权限都是 -

使用 chown 改变属主和数组:

pjl@pjl-pc:~/linux-test$ sudo chown -R user1:user1 /home/user1
pjl@pjl-pc:~/linux-test$ ls -ld /home/user1
d--------- 4 user1 user1 4096 7月  19 19:01 /home/user1

现在还是进不去,需要修改位权限。

使用 chmod 修改位权限:

// u=rwx 给属主位权限设置成 rwx
pjl@pjl-pc:~/linux-test$ sudo chmod u=rwx /home/user1
pjl@pjl-pc:~/linux-test$ ls -ld /home/user1
drwx------ 4 user1 user1 4096 7月  19 19:01 /home/user1
// g=rx 给属组位权限位设置成 rx
pjl@pjl-pc:~/linux-test$ sudo chmod g=rx /home/user1
pjl@pjl-pc:~/linux-test$ ls -ld /home/user1
drwxr-x--- 4 user1 user1 4096 7月  19 19:01 /home/user1

Tip

首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【技术积累】Linux中的命令行【理.. 下一篇Centos 7安装k8s 报hostPath type..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目