Ton*_*ony 13 linux permissions
我有一个用户 ftpadmin:
-bash-3.2$ id ftpadmin
uid=10001(ftpadmin) gid=2525(fsg) groups=2525(fsg),10005(git)
Run Code Online (Sandbox Code Playgroud)
需要注意的重要组是“git”
然后我有我的 git 存储库:
ls -al
drwxrwxr-x 7 git git 4096 Apr 20 14:17 fsg
Run Code Online (Sandbox Code Playgroud)
所以ftpadmin是git的成员,git已经把所有的权限都给了组里的人。为什么我以 ftpadmin 登录时会看到这个:
-bash-3.2$ ls -al /home/git/
ls: /home/git/fsg: Permission denied
...
Run Code Online (Sandbox Code Playgroud)
看来我应该得到许可...
更新 /home/git 上的权限是
drwxrw-rw- 6 git git 4096 Apr 26 09:20 git
Run Code Online (Sandbox Code Playgroud)
看起来还是不错的...
更新 /home/git 上的新权限是:
drwxrwxrw- 6 git git 4096 Apr 26 09:20 git
Run Code Online (Sandbox Code Playgroud)
/home/git/fsg 的权限是:
drwxrwxr-x 7 git git 4096 Apr 20 14:17 fsg
Run Code Online (Sandbox Code Playgroud)
但是,我仍然得到
ls: /home/git/fsg: Permission denied
ls: /home/git/fsg: Permission denied
Run Code Online (Sandbox Code Playgroud)
小智 10
想要特别给 mpez0 +1,因为他的回答“您需要在目录中设置组“x”位以允许组搜索。“rw-”权限允许打开给定名称 (r) 的文件或创建文件(w),但不列出或搜索文件 (x)。”
太容易忘记了,他的解法就埋在了中间。对于新的 Linux 用户来说,这对于用户和组的文件/目录权限来说绝对是一个问题。
Avery 在金钱上所说的一切都是正确的,再次希望我也能给你 +1。
图另一个更详细的例子可能对新的 Linux 用户有帮助(不寻求任何功劳,只是为了清晰起见提供另一个例子)。在我自己的电脑上,我想为特定的开发项目创建一个额外的用户。正在测试我的机器和网络上的协同定位服务器之间的一些 SSH、SFTP 问题。设置完所有内容后出现相同的“权限被拒绝”错误……是的,除了基于 mpez0 指出的其他权限的搜索问题外,它看起来是正确的。
注意:对于新的 Linux 用户,权限分别为 user、group、other 或 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--
Run Code Online (Sandbox Code Playgroud)
对于“其他”,我们被提醒它不足以查找/搜索目录,因此是错误消息。
这是我所做的,(在步骤 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
Run Code Online (Sandbox Code Playgroud)
请记住,您必须注销并再次登录才能将新的“组”权限与帐户 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/
Run Code Online (Sandbox Code Playgroud)
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/
Run Code Online (Sandbox Code Playgroud)
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 ./
Run Code Online (Sandbox Code Playgroud)
瞧,问题解决了……这是证据
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/
Run Code Online (Sandbox Code Playgroud)
即使是我们有经验的 Linux/Unix 用户也需要时不时地提醒一下。
正如所指出的,仅仅为文件所在的目录提供正确的权限是不够的,您还需要确保通向该目录的所有目录都具有正确的权限,尤其是“其他”的能力“搜索”并查找目录和文件。当 x 表示执行时,几乎不直观,对。
我的子目录结构是:/home/userz/data/Sites/hoi/html/
从家开始
userz@zareason-breeze:~$ pwd
/home
Run Code Online (Sandbox Code Playgroud)
这是我在 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/
Run Code Online (Sandbox Code Playgroud)
这是我在 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/
Run Code Online (Sandbox Code Playgroud)
请注意,唯一的更改是目录“站点”的“其他”的 rx 权限。希望这对其他人有帮助,这对我来说是一个很好的复习。
您必须对包含该文件的目录具有权限才能访问该文件。/home/git 的权限是什么?(是的,Zoredache,我给了你 +1 来指出这一点)
后续:您需要为该组设置执行 (x) 位,以便该组进入目录。将其视为对 Windows“遍历目录”设置的粗略模拟。没有它,该组的访问将被拒绝。如果你绝望,你可以这样做:
chmod g+x /home/git
chmod g+x /home/git/fsg
Run Code Online (Sandbox Code Playgroud)
尝试以下操作并发布每个消息:
cd /home
cd /home/git
cd /home/git/fsg
Run Code Online (Sandbox Code Playgroud)
每一个都应该可以通过ftpadmin. 如果其中任何一个不是,那么它将阻止您进入/home/git/fsg.
| 归档时间: |
|
| 查看次数: |
50068 次 |
| 最近记录: |