有人能解释一下如何正确管理权限吗?我有一个具有以下权限的文件:
8 -rw-r--r--+ 1 sntecard sntecard 4669 Sep 18 12:34 index.php
我正在以用户 myuser 的身份访问此文件夹并尝试对其进行修改。当然,我不能。好的,我正在添加组写入权限并将自己添加到 sntecard 组(作为 root):
usermod -a -G sntecard myuser
chmod g+w index.php
让我们检查权限:(ls -ls)
8 -rw-rw-r--+ 1 sntecard sntecard 4669 Sep 18 12:34 index.php
现在让我们检查一下我是否在一个组中:(grep sntecard /etc/group)
sntecard:x:503:sntecard,myuser
太棒了,我加入了一个群组,现在应该有权限了!但是不行。我无法写入此文件。通过 sFTP 无法写入,通过 nano index.php 永远都无法写入。写入文件时出现访问错误。
我做错了什么?
PS 权利行末尾的“+”到底是什么意思?
答案1
您应该使用id
查看您当前的用户和组 ID。实际上,您应该再次登录以获取新的组 ID。
PS 权利行末尾的“+”到底是什么意思?
这隐藏在信息页面 (info ls) 中
Following the file mode bits is a single character that specifies whether an alternate access method such as an access control list applies to the file. When the character following the file mode bits is a space, there is no alternate access method. When it is a printing character, then there is such a method. GNU `ls' uses a `.' character to indicate a file with an SELinux security context, but no other alternate access method. A file with any other combination of alternate access methods is marked with a `+' character.
答案2
在输出中ls -ls
:
8 -rw-r--r--+ 1 sntecard sntecard 4669 Sep 18 12:34 index.php
该数字是选项和文件大小(以块为单位)的8
结果。-s
以下顺序-rw-r--r--+
依次是文件所有者 ( -rw
)、文件组中的其他用户 ( -r-
)、不在文件组中的其他用户 ( -r-
) 或所有用户 ( -
) 的可读权限。
尾部+
表示更多扩展的访问控制。这些无法通过辅助命令显示ls
,需要辅助命令。例如,在使用 acl 选项安装的文件系统的情况下,getfacl
显示和setfacl
修改 POSIX ACL。
POSIX ACL 将覆盖和ugoa
使用的简单权限。chmod
chown
如果不是尾随加上+
一个点.
则会显示;这表示 SELinux 上下文,需要标志-Z
才能ls
显示它们。
为了完整性,1
是引用计数,2
如果文件有硬链接则为 3,如果有两个硬链接则为 3,等等。对于目录,该数字至少为 2,并且随着该目录中的每个文件和/或目录而增加。
然后是所有者和组,后面是实际文件大小(以字节为单位)。具有大小的目录0
是不包含任何文件的目录,例如 /proc、/sys 等伪文件系统以及由自动挂载程序管理的目录。然后是最后修改日期的时间戳,后面是实际文件名。
答案3
我自己找到了一个答案。“+”表示为该文件设置的替代 ACL(访问列表)。当我们查看它们时,我们可以看到
getfacl index.php
# file: index.php
# owner: sntecard
# group: sntecard
user::rw-
user:cyberuser:rwx #effective:rw-
group::r--
mask::rw-
other::rw-
这意味着没有组写入权限。通过以下方式更改此设置:
setfacl -m group::rw- index.php
解决了一个问题。