首页 > 编程知识 正文

linux查看文件命令,在用户user1主目录下创建目录test

时间:2023-05-06 19:36:28 阅读:50886 作者:632

微信公众号:关注CodingTechWork,一起学习进步。

引言登录Linux系统后,您是否想过我们创建的目录或文件的权限为什么每次创建都是统一的? 进行以下实验。 创建新的用户userA,并分别创建目录dir01和dir02以及文件t1.txt和t2.txt。

[ root @ linux01~] # useradd usera [ root @ linux01~] # su-usera [ usera @ linux01~] $ ll total0[ usera @ linux01~] $ $touchT2.txt[usera@Linux01~] $ ll total8drwxr---2 usera usera 4096 mar 2710336025 di r01 drwxr----2usera usera 4096 mar 2710336025 dir 02-rw-r------233333333336 5t2.txt根据上述实验,每次创建目录时的权限都是drwxr-x---即750,所有文件权限-rw-r-我们可以想到的一定是默认权限,其默认权限答案是“umask”。

[userA@linux01 ~]$ umask0027是,您可以更改在umask中创建用户文件和目录的默认权限。 Linux是一个注重安全的操作系统,安全离不开权限的设置。 要设置创建新目录和文件所需的初始权限,Linux和Windows的权限相差很大。Linux使用在umask中设置的默认权限,为新创建的目录和文件授予初始权限。 接下来将一起进入umask的学习和使用。

umask umask首先需要了解Linux文件的最大权限为666,目录的最大权限为777,为什么目录大于文件的权限。 因为访问目录需要执行权(x )。

umask的作用是,在用户登录到Linux系统的环境中,设置用户创建目录和文件的初始化权限。

umask命令语法:

umask [-p] [-S] [mode]

表示要完全打印参数:-p:umask的内容。 -S :表示以符号表示设定。 mode :表示设定权限。 mode和chmod的命令格式相同。

示例[ usera @ linux01~] $ umask-pumask 0027 [ usera @ linux01~] $ umask-su=rwx,g=rx,o=[ usera @ linux01~] o=[ usera @ linux01~] $ umask-pumask 0127 [ usera @ linux01~] $ umasku=rwx [ usera @ linux01~] $ umask-pumask 0027

# by默认, wewantumasktogetset.thissetsitforloginshell # currentthresholdforsystemreserveduid/GID sis 200 # youcouldcheckuidgidreservatuid 在setup-*/uidgidfileif [ $ uid-gt 199 ] [ ' `/usr /闪闪发光的棉花糖then umask 002 else umask 022 fiumask 027中,帐户

umask 027表示当前用户的umask掩码值设置为027。

umask值的计算一直在谈论umask掩码值,这个值到底怎么计算呢? 或者,此掩码值与目录或文件的默认权限关系如何?

[userA@linux01 ~]$ umask0027使用umask命令获取当前用户的umask掩码值为0027,为什么是4位? 其实真正有效的是后三位。 第一名是代表文件具有的特殊权限(SetUID、SetGID、Sticky BI

T)。
  通过umask值我们可以反推出用户新建目录和文件的默认权限是什么。

原理 将目录或文件的默认最高权限(目录777、文件666)和umask掩码值都转换为二进制。对umask取反。将两个二进制值做与运算。将与运算后的二进制值转换为十进制,即为用户的新建目录或文件的默认权限。 示例

目录场景

掩码值:0022目录默认最高权限:777

计算默认权限:

转为二进制:
777 = 0111 0111 0111
022 = 0000 0010 0010umask取反
NOT运算:1111 1101 1101与运算
0111 0111 0111 总权限777
1111 1101 1101 umask取反
====================
0111 0101 0101 新建目录默认权限转为十进制
0111 0101 0101=755
即该用户新建目录的默认权限为755,即为rwxr-xr-x。

文件场景

掩码值:0022目录默认最高权限:666

计算默认权限:

转为二进制:
666 = 0110 0110 0110
022 = 0000 0010 0010umask取反
NOT运算:1111 1101 1101与运算
0110 0110 0110 总权限666
1111 1101 1101 umask取反
====================
0110 0100 0100 新建目录默认权限转为十进制
0110 0100 0100 = 644
即该用户新建目录的默认权限为644,即为rw-r--r--。 公式

  按照umask计算的原理很麻烦,所以弄一个公式来总结计算如下:

目录(文件)的初始权限 = 目录(文件)的最大默认权限 - umask权限

  而这种公式方式需要注意分类:

目录公式:
用户目录默认权限 = 777 - umask值

文件公式:
1)偶数umask:用户文件默认权限 = 666 - umask偶数值
2)奇数umask:用户文件默认权限 = 666 - umask奇数值 + 1

示例

对照原理示例umask值=022,计算如下:
用户目录默认权限:777-022=755,即为rwxr-xr-x。
用户文件默认权限:666-022=644,即为rw-r--r--。

对照引言中的实验umask值=027,计算如下:
用户目录默认权限:777-027=750,即为drwxr-x---。
用户文件默认权限:666-027+1=640,即为-rw-r-----。

umask值修改 暂时修改

  暂时修改的方式,可以通过umask命令来更改,比如计算出权限对应的umask值要改为027,则直接用该用户登录Linux系统后,使用命令umask 027即可。但是,一旦用户退出登录后,umask将恢复默认值,刚才设置的将会失效。所以,这种umask命令方式,只是适合当前会话。

永久修改

  除了使用umask命令进行当前会话的用户默认权限设置外,我们还可以对该用户永久性修改umask值。针对某个用户修改,需要用该用户登录Linux,然后修改/etc/profile文件中的umask值。
  修改前:

[userA@linux01 ~]$ umask0027[userA@linux01 ~]$ vim /etc/profile



  修改后:

[userA@linux01 ~]$ vim /etc/profile[userA@linux01 ~]$ umask0022[userA@linux01 ~]$ mkdir dir03[userA@linux01 ~]$ touch t3.txt[userA@linux01 ~]$ lltotal 12drwxr-x--- 2 userA userA 4096 Mar 27 10:25 dir01drwxr-x--- 2 userA userA 4096 Mar 27 10:25 dir02drwxr-xr-x 2 userA userA 4096 Mar 27 21:48 dir03-rw-r----- 1 userA userA 0 Mar 27 10:25 t1.txt-rw-r----- 1 userA userA 0 Mar 27 10:25 t2.txt-rw-r--r-- 1 userA userA 0 Mar 27 21:48 t3.txt

  明显可以看出修改后,新建目录和文件的权限已经发生变化。

总结

  如果我们登陆Linux系统后,新建目录或者文件很多,且权限都是某种特定的,则可以通过umask命令来暂时设置当前会话的默认权限。如果后期需要永久性的可以修改/etc/profile中的umask值。
  当然,对于应用程序一些吐文件时需要先新建的目录或者文件设置权限时,我们为了安全方式,可能不能永久性修改umask值,但,我们可以在启动脚本里面加上umask 022这种命令,来使得当前应用启动时受到当前启动脚本中的umask来控制应用程序输出的文件或目录的默认权限。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。