首页 > 编程知识 正文

无法创建目录权限不够,为什么新建文件夹需要管理员权限

时间:2023-05-03 18:11:11 阅读:45002 作者:4365

作为系统管理员,对linux的基本常识应该是最不清楚的。 当一个用户创建文件或文件夹时,我们通过ls -l获得这些权限。 这些权限是怎么计算出来的?

众所周知,文件/文件夹具有以下访问权限:所有者权限(User )、所有组权限(Group )和其他人权权限(Other )。 那么,在创建文件(cd . test.txt或文件夹) mkdir test时,他们有什么权限呢?

实际上,创建新文件夹和文件的权限是从所谓的基本代码中减去一个称为umask的掩码位。

根据FreeBSD的规定,文件夹的基本代码为rwxrwxrwx(777 ),文件的基本代码为rw-rw-rw-) 666 )

另一方面,屏蔽位由/etc/bashrc (所有者)或(~/.bashrc )设置。 如果上述文件中没有设置,则默认值为022。

可以在shell下输入umask命令以显示/更改当前系统掩码位。

$ umask 033

$ umask

$ 033

$ umask 022

因此,新文件夹为777-022=755(rwxr-xr-x ),新文件为666-022=644(rw-r--r-- )。

$ mkdir test

$ cd . test.txt

$ ll

$ drwxr-xr-x . test/

如何使用mdmd/p umask

首次登录系统时,u m a s k命令确定创建文件的缺省模式。 这个命令实际上是

c h m o d命令正好相反。 系统管理员必须设置合理的u m a s k值,以确认已创建

文件具有所需的默认权限,防止其他异步组的用户对您的文件具有写入权限。

登录后,可以使用u m a s k命令更改文件创建的默认权限,以满足个人的喜好。 相应地

的变更在退出本s h e l l或使用其他u m a s k命令之前有效。

通常,u m a s k命令设置在/e t c/bashrc文件中,每个用户在登录时都会引用此文件,因此如果希望更改所有用户的u m a s k,可以在此文件中添加相应的条目。 如果想永久设置自己的u m a s k值,请将其放入自己$ H O M E目录下的. p r o f i l e或. b a s h _ p r o f i l e文件中。

如何计算umask值

通过u m a s k命令,可以设定创建文件时的默认模式,并根据不同的用户类型进行对应。 (文件所有者、同一组的用户、

其他用户)中,存在对应的u m a s k值中的数字。 对于文件,此数字的最大值分别为6。

创建文本文件时不允许授予执行权限,创建后必须使用c h m o d命令添加此权限

权限。 目录允许设置执行权限。 由此,对于目录,u m a s k的各数字最多可达7个。

其使用方法与网络上子网掩码的作用略有相似,不同的是网络上的子网掩码与

ip地址进行与运算,跟在umask后面的数和最大权限值进行异或运算。

例如,与u m a s k值002对应的文件和目录创建的默认权限分别为6 6 4和7 7 5

说明: 1文件和目录不同。

2异或运算法则:均为0时,才等于0; 如果都是1,则为0;一个为0;如果一个为1,则为1。 eg:1100异或0101=1001 (如果一个为0,一个为1,则为1; 其他情况为0 )

因此,前面提到的简单减法很牵强。 (例如umask=033 )真正的结果是通过异或运算得到的。

备注:普通根用户的umask为022,普通用户为002,从配置文件/etc/bashrc可以看出

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