Linux系统下文件或目录的权限

Linux是一个优秀的多用户系统,其严格的权限机制确保了其安全性,所以大部分人很少听到Linux系统下的安全事故。下面我们来了解下Linux系统下文件或目录的权限。

基础知识

Linux下,可以从文件的角度将用户分为3类:

用户 对应的字符表示
文件创建者(又称文件所有者) u
与文件创建者同组的用户 g
其他用户 o

注意,我们用 a 表示所有用户。

Linux下,文件或目录的权限分为:

文件或目录的权限 对应的字符表示 对应的数字表示
r 4
w 2
执行 x 1

注意,0代表没有权限。

查看文件或目录的权限

查看文件和目录的权限可以用两个命令: llls -l

1
2
3
4
sam@sam-WRT-WX9:~/Music$ ls -l hi
-rw-r--r-- 1 sam sam 3 Oct 5 21:45 hi
sam@sam-WRT-WX9:~/Music$ ll hi
-rw-r--r-- 1 sam sam 3 Oct 5 21:45 hi

命令返回值中,我们最关心的主要是第一个字段-rw-r--r--。那么这串鬼符到底啥意思呢?

该字段中的首字符(-)指定该文件的类型,本例中它是一个常规文件。Linux系统下,文件类型主要有四种:普通文件、目录链接文件、设备。如果ls -l命令的参数实际是个目录,那么该字段的首字符就是d。文件类型和字符之间的对应关系如下:

文件类型 对应的字符 备注
普通文件(regular file) - 普通文件通常分为两种:纯文本文件(ascii)和二进制文件(binary)。纯文本文件可通过cat命令直接查看内容,而二进制文件不能。需要注意的是,Linux系统并不以文件名中的后缀来区分文件类型(和Windows不一样),比如将test.txt中的.txt去掉,该文件依然能被Linux识别为文本文件
目录(directory) d 也就是Windows下的文件夹
链接文件(link) l 类似于Windows下的快捷方式
设备(device) b(块设备文件)、c(字符设备文件) 设备文件通常分为两种:块(block)设备文件和字符(character)设备文件。块设备(可以简单理解为硬盘)用于存储数据并提供系统存取接口,字符设备是一些串行端口的接口设备(比如键盘鼠标)
1
2
3
4
sam@sam-WRT-WX9:/dev$ ls -l | grep cpu_dma_latency #用ls -l查看cpu_dma_latency的文件类型,输出结果中的首字符为c,说明是字符设备文件
crw------- 1 root root 10, 58 Oct 22 07:20 cpu_dma_latency
sam@sam-WRT-WX9:/dev$ file cpu_dma_latency #用file命令验证cpu_dma_latency的文件类型,确实字符设备文件
cpu_dma_latency: character special (10/58)

该字段的其余部分由三个三元组字符组成。第一个三元字符组代表文件创建者的权限,第二个代表与文件创建者同组的用户的权限,第三个代表所有其他用户的权限。

本例中,文件创建者对该文件具有读、写权限,与文件创建者同组的用户和所有其他用户具有读权限。

修改文件或目录的权限

修改文件和目录的权限可以用chmod命令。我们来看几个例子:

1
chmod 777 update.sh # 所有用户都将获得对update.sh文件的读、写、执行权限

这里的7是什么意思呢?通过这个等式就很容易理解了:7 = 4(读)+2(写)+1(执行)

第一个7对应着文件创建者,第二个7对应着与文件创建者同组的用户,第三个7对应者其他用户。这三类用户就是Linux下的所有用户了。也就是说系统中,所有用户都将获得对该文件的全部权限。

1
2
3
4
chmod 750 update.sh
# 文件创建者将获得对update.sh文件的读、写、执行权限
# 与文件创建者同组的用户将获得对update.sh文件的读、执行权限
# 其他用户对update.sh文件不具备任何权限

chomd可以配合加减号,来形象地表示权限赋予和剥夺操作。“+”表示添加权限,“-”表示取消权限。

1
chmod a-x # 所有用户将对失去对该文件的执行权限

新的开始

记得当初看周围的大pro都有自己的blog,心里琢磨着也建一个自己的blog。当然不要那种托管的blog,虽然在托管的blog平台上发博文啥的都是傻瓜式操作挺方便,但too simple to attract me.

于是买了阿里云的服务器和域名,开始入坑。结果发现这个坑不是想入就入,需要学习的东西还挺多的。遂开始一点一点学,中途因为很多其他事项就搁浅了。回顾过去自己的博客搭建之路,虽然九曲十八弯,但一路走来学到了不少东西(尤其在Linux系统方面更加自信了),同时也更加深刻地感受到了自己知识储备上的局限,需要学习的东西真的不少。

回顾大一大二的时光,并不觉得有多么不舍。只觉得每一步都走得很充实,遇到了很多很nice的小伙伴和前辈,学到了不少东西,不论是知识上还是内在上。这次给自己blog换的Hexo专门为blog而生,一如官网所言——fast, simple, powerful。作为计算机专业的同学,Hexo我肯定早闻大名了,最近试了下果真是相见恨晚。具体怎么个强法?emmmm,官网上介绍得很到位了。具体而言:

  • Blazing Fast: 渲染静态网页速度确实挺快的,同时由于是服务器上存储的是静态网页,网站访问速度相对于WordPress也挺占优势。
  • Markdown Support: 排版上默认使用GitHub Flavored Markdown,同时支持Octopress plugins,既简单又强大。
  • One-Command Deployment: 编辑啥的直接在本地计算机上进行,然后hexo g一键部署上云,简直太方便。
  • Plugins: 很多实用的插件,在用的几个插件质量都挺高。

现在PHP的地位,emmmm,就身边小伙伴们的说法好像有点悬吧。而WordPress就是使用PHP语言开发的,所以就目前来看,Hexo戏路子还是挺广的。

同时Hexo官网上的banner上的这三个词也正契合了我对自己的一种期许——敏捷、简单、专注。总而言之,Hexo和本人很对位~

在大学剩下的宝贵时光里,我会多刷一些算法题,想到一些奇淫巧技也会整理到博客上,一来提炼了自己的知识体系,二来要是能给其他小伙伴提供一些思路倒也不错。

新的框架,新的开始。愿你珍惜好每一天,沉下心来多学点东西,向身边的优秀小伙伴们看齐~

我的一些翻译小项目

轻听是我常用的一个英语听力软件。不论从软件用户体验上看,还是从听力资源质量上看,轻听目前做得都挺不错。

有一天,看到了Microsoft Office 365 全新图标这个视频后,突然很想试试给它添加字幕,于是就上手翻译了。翻好后找了轻听的laowang,调整了下上传上去作为轻听听力资源的一部分,然后就正式“入坑”了~

还记得当时听译这篇时,有几个单词怎么听也没听出来,尤其是hue。后来根据视频内容推测一番,又有幸在网上找到了一位大神的听译版本,这几个单词才最终确定下来。

听译完了后又为翻译琢磨了不少时间,当时尝试了很多种翻译版本,力图将这则微软的宣传片要表达的东西完整准确地呈现给大家。今天大家看到的这个版本,算是最终比较完善的版本了。当时提交给admin时,心里还是挺有底气的。如有可改进的地方,欢迎进来踩踩~

以下为截止到今天本人上传的一些翻译

需要注意的是,轻听那边会对听力资源按topic进行reorganize,我翻译的听力资源一般是被分组到「潮流科技大事件!」等教材下。

当然了,我也单独负责一本教材:「杨安泽的竞选之路」,会收录美国2020年总统候选人华裔杨安泽的听力资源。

总的来说,翻译英文听力资源对听译能力和翻译能力都是一种锻炼吧。以后准备试着翻译一些英文官方文档,欢迎一块交流下。

vpakati’s blog

Welcome to vpakati’s blog~

l hope you enjoy here 😉

Introduction

A student major in computer science. l love programming and reading.

Book recommendation

Below are the books of high quality that l pick up for others from the book l have read:

  • 肠子的小心思
  • 认知天性:让学习轻而易举的心理学规律
  • 高效程序员的45个习惯 : 敏捷开发修炼之道
  • 啊哈!算法
  • 大话数据结构
  • 逆境成长 : 坚韧人格养成手册
  • 黑客与画家 : 硅谷创业之父Paul Graham文集
  • 编程之美:微软技术面试心得
  • 刷新 : 重新发现商业与未来
  • 国王 武士 祭司 诗人 : 从男孩到男人,男性心智进阶手册
  • 牛奶可乐经济学
  • How to read a book

Repositories

l have built up some repositories, some public and some private. l have plan to open some of my private repositories to everyone as my part of contribution to the open-source world.

Contact

You can access me in the following ways:

特殊回文数

题目

问题描述

123321是一个非常特殊的数,它从左边读和从右边读是一样的。

输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n。

输入格式

输入一行,包含一个正整数n。

输出格式

按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入

52

样例输出

899998

989989

998899

数据规模和约定 1<=n<=54。

分析

注意题中的“五位和六位十进制数”,这暗示了循环变量i的类型应该为long

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>;

int main()
{
long i;
long n;
scanf("%d", &amp;n);
long a, b, c, d, e, f;
for(i = 10000;i &lt; 1000000;i ++){
a = i/100000;
b = (i/10000)%10;
c = (i/1000)%10;
d = (i/100)%10;
e = (i/10)%10;
f = i%10;
if(n == a+b+c+d+e+f){
if((a == 0)&amp;&amp;(b == f)&amp;&amp;(c == e))
printf("%d\n", i);
if((a != 0)&amp;&amp;(a == f)&amp;&amp;(b == e)&amp;&amp;(c == d))
printf("%d\n", i);
}
}
return 0;
}