大家在学习Linux操作系统的时候肯定遇到过umask,大部分的书籍会对umask从原理到各种情况下的应用都讲的非常详细,洋洋洒洒一大篇,然后呢?然后你就看得云里雾里似乎明白了,可是又不太懂这个东西干嘛搞这么复杂,再加上它不像ls命令那样经常用,三五天的时间估计就忘的一干二净了。

好了不废话了,其实我对于umask的理解也是经历过很多次这方面的坑才慢慢理解了它的作用的。简单一句话umask是配合Linux的权限管理机制,用来控制用户新建文件夹和新建文件的权限属性的,如果你在实际的工作当中遇到了相关权限问题时可以考虑从umask上进行排错。

1.查看系统的umask

命令

umask

image.png 大家使用Linux久了就会渐渐明白一个道理,像这种系统变量值这些只要是能够使用命令来配置的,一般都会有相应的配置文件。

umask的配置信息就在/etc/profile

 vim /etc/profile

image.png 我们已经知道如果查看当前用户的umask值了,那么umask有什么用呢?我前面说了umask就是控制用户新建文件夹及新建文件的默认属性的,那么在Linux系统中用户新建文件夹及新建文件的默认属性是什么呢?

:notebook: 在linux系统中用户新建文件夹的默认属性是777,新建文件的默认属性是666。(敲黑板、记结论,这个东西没有什么理解不理解的)

光这么说你可能还是不太明白,接下来就要一番操作猛如虎了。

root用户在/home目录下新建一个文件夹。

mkdir /home/test

image.png 看上图,你是不是有疑问啊?老师,你刚才不是说新建文件夹的默认属性不是777吗?怎么我新建的文件夹属性是755呢?

轮到umask上场了。 image.png 明白没?

再来,换个用户。 image.png 怎么样,只要小学毕业了,上面的算术题应该会算吧?

再来,新建文件的默认属性呢?

上操作。

cd /home/test
touch hello.txt
ll

image.png 换成普通用户再来。

cd /home/alfiy/test/
touch hello.txt
ll

image.png 好了,如果你明白了,我就不讲了,讲多了我也就不会了(哈哈):smile_cat:

如果你这大聪明看到上面的这些就大明白了,我这个老师也就应该休息了:smile:

老师决定坑你一把,记住了在学习的路上“不坑不长记性”,“一次被坑,终生难忘”,“这世界上并没有什么高手,只不过被坑的多了,便有了高手”。

空泛的讲你的记忆是不会深刻的。

这一次你们的老大给你下任务了。小X,你帮开发部在生产服务器上搭建一个FTP去。你心想,就这?前两天我老师刚教会我如何搭建FTP服务器,老师厉害了,不仅开了防火墙连"Selinux",都没关,不信你瞧这里centos8.5 Vsftpd 搭建FTP服务器

按照老师的教程,你三下五除六,一番操作猛如虎的不到半个小时搞定了,正当你高兴的把FTP的址发给你老大,心中暗自得意的时候,没想到得到的是老大的一顿臭骂。“什么,我生产服务器上让你搭个FTP服务器,你竟然不使用SSL?” ”我开了防火墙的,SE也没关。” 你小声的诺诺道,“你建的服务器是明文传输的知道不?有多可怕明白不?” 老大几乎吼起来了,边说边打开了他的“大鲨鱼”(Wireshark),输入FTP网址、用户名、密码,一番操作后,你设置28个字符的密码赫然出现在老大的大鲨鱼中。这时的你挠着头说,“我再去把SSL功能打开吧。“

接着你又开始了疯狂面向百度编程,我说何必呢,来这里centos8 配置vsftpd的SSL/TLS功能

好了,这次你接受了上次的教训,先默默的验证吧

一切都很正常的样子,登录时也提示了SSL信息。 进入FTP的根目录新建一个文件夹。 image.png image.png image.png image.png 接着我想在/images文件夹下再新建一个'headers'文件夹 image.png image.png 这:question:

肯定是文件夹属性出现了问题,登录服务器看看吧。 image.png 再进入'images'文件夹看看。 image.png 如果真的想不起来那就接着听老师往下讲吧。

这次我们换一个用户登录,在前面的教程里我们不是建了两个虚拟用户吗,一个'ftpuser',一个'ftptest',这次我给'ftptest'用户动一下手脚。

:notebook: 虚拟用户的配置文件在/etc/vsftpd/vusers_dir文件夹下,以用户名命名的文件。

vim /etc/vsftpd/vusers_dir/ftptest

添加anon_umask=0002

或者你直接使用我下面的命令

 echo "anon_umask=0002" >> /etc/vsftpd/vusers_dir/ftptest

重启vsftpd服务

systemctl restart vsftpd

使用filezilla登录服务器。 image.png image.png image.png 是不是很爽?

登录服务器看看。 image.png image.png image.png 是不是和想像的一样啊?

至此,你品,你细品,关于Linux umask是否弄懂了呢?