权限被拒绝,但组权限在 Redhat 上看起来不错

权限被拒绝,但组权限在 Redhat 上看起来不错

我有一个用户 ftpadmin:

-bash-3.2$ id ftpadmin
uid=10001(ftpadmin) gid=2525(fsg) groups=2525(fsg),10005(git)

需要注意的重要组是“git”

然后我有了我的 git 存储库:

ls -al
drwxrwxr-x   7 git      git          4096 Apr 20 14:17 fsg

所以 ftpadmin 是 git 的一个成员,而 git 又把所有权限都给了组里的人。为什么我以 ftpadmin 身份登录时会看到这样的信息:

-bash-3.2$ ls -al /home/git/
ls: /home/git/fsg: Permission denied
...

看来我应该获得许可......

更新 /home/git 上的权限是

drwxrw-rw-   6 git      git          4096 Apr 26 09:20 git

看起来还不错...

更新 /home/git 的新权限为:

drwxrwxrw-   6 git      git          4096 Apr 26 09:20 git

/home/git/fsg 的权限为:

drwxrwxr-x   7 git      git          4096 Apr 20 14:17 fsg

然而,我仍然得到

ls: /home/git/fsg: Permission denied
ls: /home/git/fsg: Permission denied

答案1

特别想给 mpez0 一个 +1,因为他的回答是“您需要在目录中设置组“x”位以允许组搜索。“rw-”权限允许打开给定其名称的文件 (r) 或创建文件 (w),但不能列出或搜索文件 (x)。”

人们很容易忘记,他的解决方案被埋没了在中间。对于 Linux 新用户来说,这肯定是一个问题,因为用户和组的文件/目录权限问题。

Avery 说的一切都十分正确,再次希望我也能给你 +1。

图 另一个更详细的例子可能会帮助新的 Linux 用户 (不寻求任何荣誉,只是为了清晰起见提供另一个例子)。我想在自己的电脑上为特定开发项目创建一个额外的用户。正在测试我的机器和网络上的同地服务器之间的一些 SSH、SFTP 问题。设置好一切后,出现了相同的“权限被拒绝”错误……是的,除了 mpez0 指出的基于其他权限的搜索问题外,它看起来是正确的。

注意:对于新的 Linux 用户,权限分别为用户、组、其他或 rwx、rwx、rwx,如下所示

drwxr-xr--   

user has read + write + execute, rwx 
group has only read and execute, r-x
other has only read acces r--

对于“其他”,我们被提醒查找/搜索目录是不够的,因此出现错误消息。

这是我所做的,(在步骤 6 中遇到错误消息)

1)创建一个用户 hoiuser(要查看用户信息,可以使用 finger cmd、“finger hoiuser”或读取 'cat /etc/passwd' 文件)

2)创建了组 hoidevs (将用户“hoiuser”添加到该组)

root@zareason-breeze:/etc# cat group | grep hoidevs 
hoidevs:x:1010:userz,hoiuser 

请记住,您必须注销并重新登录,才能将新的“组”权限与帐户 ID 关联。

3)chgrp hoidevs 目录 /home/userz/data/Sites/hoi 并为文件创建一个位置

hoiuser@zareason-breeze:/home/userz/data/Sites/hoi$ ls -alF
total 16
drwxr-xr-x  4 userz hoidevs  4096 2012-02-27 13:34 ./
drwxr-xr-x  2 userz userz 4096 2012-02-29 17:00 odt/
drwxrwxr-x  2 userz hoidevs  4096 2012-02-27 13:34 html/

4)打开终端窗口,用户 userz 处于活动状态

5)su - hoiuser(切换到用户hoiuser)

6)尝试 cd /home/userz/data/Sites

hoiuser@zareason-breeze:/home/userz/data$ cd Sites
-su: cd: Sites: Permission denied    (voila, the problem)


userz@zareason-breeze:~/data/Sites$ ls -alF
total 60
drwxr-xr--  11 userz userz  4096 2012-02-24 16:20 ./
drwxr-xr-x   4 userz hoidevs   4096 2012-02-27 13:34 hoi/

7) 更改了站点的权限

userz@zareason-breeze:~/data/Sites$ chmod 755 .
userz@zareason-breeze:~/data/Sites$ ls -alF
total 60
drwxr-xr-x  11 userz userz  4096 2012-02-24 16:20 ./

问题解决了...这是证据

hoiuser@zareason-breeze:/home/userz/data$ id
uid=1009(hoiuser) gid=1009(hoiuser) groups=1009(hoiuser),1010(hoidevs)

hoiuser@zareason-breeze:/home/userz/data$ cd Sites        (<- yea no error message)
hoiuser@zareason-breeze:/home/userz/data/Sites$ cd hoi
hoiuser@zareason-breeze:/home/userz/data/Sites/hoi$ ls -alF
total 16
drwxr-xr-x  4 userz hoidevs  4096 2012-02-27 13:34 ./
drwxr-xr-x 11 userz userz 4096 2012-02-24 16:20 ../
drwxr-xr-x  2 userz userz 4096 2012-02-29 17:00 odt/
drwxrwxr-x  2 userz hoidevs  4096 2012-02-27 13:34 html/

即使我们经验丰富的 Linux/Unix 用户也需要时不时地提醒。

正如指出的那样,仅仅给予文件所在目录正确的权限是不够的,您还需要确保该目录下的所有目录都具有正确的权限,尤其是“其他”的“搜索”权限并查找目录和文件。当 x 表示执行时,这几乎不直观,对吧。

我的子目录结构是:/home/userz/data/Sites/hoi/html/

从家开始

userz@zareason-breeze:~$ pwd
/home

这是 chmod 之前的目录结构

drwxr-xr-x  13 root root     4096 2012-02-29 14:51 home/
drwxr-xr-x 88 userz userz 4096 2012-02-29 17:07 userz/
drwxr-xr-x 476 userz userz    20480 2012-02-26 16:08 data/
drwxr-xr--  11 userz userz     4096 2012-02-24 16:20 Sites/    (<-- Do you see it, other is r--)
drwxr-xr-x   4 userz hoidevs   4096 2012-02-27 13:34 hoi/
drwxrwxr-x  2 userz hoidevs  4096 2012-02-27 13:34 html/

这是 chmod 之后的目录结构

drwxr-xr-x  13 root root     4096 2012-02-29 14:51 home/
drwxr-xr-x 88 userz userz 4096 2012-02-29 17:07 userz/
drwxr-xr-x 476 userz userz    20480 2012-02-26 16:08 data/
drwxr-xr-x  11 userz userz     4096 2012-02-24 16:20 Sites/      (<-- Fixed by the chmod > 755 ., now r-x)
drwxr-xr-x   4 userz hoidevs   4096 2012-02-27 13:34 hoi/
drwxrwxr-x  2 userz hoidevs  4096 2012-02-27 13:34 html/

请注意,唯一的变化是目录“Sites”的“其他”的 rx 权限。希望这对其他人有所帮助,对我来说这是一个很好的复习。

答案2

您必须拥有包含该文件的目录的权限才能访问该文件。/home/git 上的权限是什么?(是的,Zoredache,我给你 +1 以指出这一点)


后续:您需要为该组设置执行 (x) 位,以便该组进入目录。可以将其视为 Windows“遍历目录”设置的粗略模拟。如果没有它,该组的访问将被拒绝。如果您迫切需要,您可以执行以下操作:

chmod g+x /home/git
chmod g+x /home/git/fsg

尝试以下操作并发布每个操作的消息:

cd /home
cd /home/git
cd /home/git/fsg

其中每一个都应该可以通过 访问ftpadmin如果其中任何一个不是,那么它将阻止你进入/home/git/fsg

答案3

尝试再次登录,或运行su - ftpadmin以在当前 shell 内登录。由于组是在登录时设置的,因此可能只是您将某某添加到了组中,但仍在使用旧的组设置。

答案4

通过 root 访问权限更改用户 X 的组后,您必须注销并再次以该用户 X 身份登录,否则新组将不被考虑

相关内容