centos9的用户权限问题
友友好,我现在碰到一个这样的问题,找了半天没找到相关资料
我新建了一个共享盘权限设置为rwx,如下命令:
chmod -R 770 /usr/share/public
然后user1在这个文件夹中新建一个文件
这个文件的权限却为rw,没有x了。
需要再执行一次
chmod -R 770 /usr/share/public
才有rwx
这到底是哪里出了问题呢?
我要的效果是我把这个文件夹及其子目录都设置为rwx
为什么在这个文件夹里新建的文件不会自动为rwx??? 本帖最后由 isdkz 于 2023-4-3 16:49 编辑
你好!
这个问题的原因在于,当用户创建一个新文件时,Linux 默认的行为是不分配执行权限。你可以通过设置文件创建掩码 (umask) 来改变这个默认行为。
umask 是一个控制默认文件和目录权限的设置。它通过从完全权限(通常为 777 文件夹和 666 文件)中减去指定的值,
从而决定新文件和目录的默认权限。例如,当 umask 设置为 002 时,新创建的文件将具有 664(rw-rw-r--)权限,新创建的目录将具有 775(rwxrwxr-x)权限。
也就是说不管怎样你新创建的文件都是没有执行权限的
Linux 系统默认不会让新创建的文件继承其父目录的权限。但是,你可以使用setfacl(文件访问控制列表)来实现类似的效果。
要让新创建的文件继承其父目录的权限,您可以使用 setfacl 命令来配置访问控制列表。这使您可以更精确地控制目录及其子文件的权限。
首先,确保您的系统已经安装了 acl 软件包。在基于 Debian 的系统中,使用以下命令安装:
sudo apt-get install acl
在基于 RHEL/CentOS 的系统中,使用以下命令安装:
sudo yum install acl
使用 setfacl 命令设置默认 ACL。例如,要为目录 /usr/share/public 设置默认 ACL,以便新创建的文件继承其父目录的权限,请执行以下命令:
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /usr/share/public
这会将默认用户(u)、组(g)和其他(o)权限分别设置为 rwx、rwx 和 r-x。
现在,新创建的文件将继承其父目录的权限。请注意,setfacl 需要文件系统支持 ACL,并且在不同的文件系统上,这些设置的效果可能略有不同。
isdkz 发表于 2023-4-3 16:42
你好!
这个问题的原因在于,当用户创建一个新文件时,Linux 默认的行为是不分配执行权限。你可以通过设 ...
原来这么麻烦,我就是想让同一个部门的人访问相应的文件夹,不管是谁上传的,有没有更简单的办法 pysunred 发表于 2023-4-3 16:58
原来这么麻烦,我就是想让同一个部门的人访问相应的文件夹,不管是谁上传的,有没有更简单的办法
那没必要给执行权限呀 isdkz 发表于 2023-4-3 16:58
那没必要给执行权限呀
如何没有执行权,同组其他用户双击都无法打开?我也觉得纳闷
为什么同一组用户,别人有rw权限,去无法打开查看?
pysunred 发表于 2023-4-3 17:05
如何没有执行权,同组其他用户双击都无法打开?我也觉得纳闷
为什么同一组用户,别人有rw权限,去无法打 ...
文件夹是需要执行权才能打开的,文件不需要 isdkz 发表于 2023-4-3 17:08
文件夹是需要执行权才能打开的,文件不需要
就是文件文本文档,打开时,也提示无权打开 -rwxrw---- 1 zengjh gklw 04月3 17:01 ddd.txt pysunred 发表于 2023-4-3 17:18
就是文件文本文档,打开时,也提示无权打开
可能别人访问你的smb使用的用户不是你那个文件所属用户,也不在文件所属的组里面
你先创建一个权限为666的文件测试一下看看能不能访问 isdkz 发表于 2023-4-3 17:28
可能别人访问你的smb使用的用户不是你那个文件所属用户,也不在文件所属的组里面
你先创建一个权限为6 ...
[综合共享资料]
comment = public data
path = /usr/share/public
valid users = @pubgroup
write list = @pubgroup
create mask = 770
directory mask = 770
用户是所属组,文件是组内另外一个用户创建的。我就是奇怪 按理来说,不管是谁创建的文件,只要组的权限是rw,同组成员就可以打开吧,为什么不行呢? 我刚刚试了下你建议使用ACL规则,但仍是这样,
应该系统默认创建的文件,其它成员最高只有rw权限,
现在的问题是,为什么组内其它成员无法打开?
这个跟主组,附组有关系吗?? 看看要查看的用户在那个组里 , 对应的组是否是文件的所属组里面 查看文件组是否有对应的权限 /etc/bashrc中有个 umask的参数。777 减去 这个参数 的值等于你新建文件的默认权限。
例如777 - 027 = 750 权限 根据您提供的信息,您希望将/usr/share/public文件夹及其子目录设置为rwx权限。您使用的命令chmod -R 770 /usr/share/public是正确的,应该可以实现这个目标。
然而,新创建的文件默认情况下可能不会继承父目录的权限。这是因为在Linux中,新创建的文件会继承默认的权限,通常是根据系统的umask值来确定的。
要解决这个问题,您可以通过更改umask值来设置新创建文件的默认权限。umask值是一个掩码,用于确定新创建文件的权限。默认情况下,umask值通常设置为022,这意味着新创建的文件权限会减去022。
您可以使用umask命令来查看当前的umask值。如果umask值不是您期望的权限设置,您可以使用umask命令来更改它。例如,如果您希望新创建的文件具有完全权限(rwx),可以执行以下命令:
umask 000
然后,再次创建文件,它应该继承父目录的权限并具有rwx权限。
请注意,更改umask值会影响系统中所有新创建的文件和目录的权限。如果您只想更改特定目录下新创建文件的权限,可以考虑使用ACL(访问控制列表)来设置更精细的权限控制。 因为你递归了这个目录文件夹/目录啊
当然这个文件的权限却为rw,没有x了
你需要把命令中的-R,去掉,取消递归
我解释一下递归recuisive:就是你设置的这个目录权限会“会传染”到它的子目录中
第二种情况说明:如果 我要的效果是我把这个文件夹及其子目录都设置为rwx
那就是你的权限写错了,把770改成777试试
让其他组的用户也有同样权限,祝你好运~
页:
[1]