Linux,为啥我有组权限却不能写?
Posted
技术标签:
【中文标题】Linux,为啥我有组权限却不能写?【英文标题】:Linux, Why can't I write even though I have group permissions?Linux,为什么我有组权限却不能写? 【发布时间】:2011-06-30 14:32:17 【问题描述】:我想在我所属的员工组拥有的目录中创建一个文件。为什么我不能这样做?
bmccann@bmccann-htpc:~$ ls -l /usr/local/lib/R/
total 4
drwxrwsr-x 2 root staff 4096 2010-07-31 16:21 site-library
bmccann@bmccann-htpc:~$ id -nG bmccann
bmccann adm dialout cdrom plugdev staff lpadmin admin sambashare
bmccann@bmccann-htpc:~$ touch /usr/local/lib/R/site-library/tmp
touch: cannot touch `/usr/local/lib/R/site-library/tmp': Permission denied
【问题讨论】:
你对 /usr/local/lib/R 中的站点库目录有写权限吗? 我发布的第一个命令不是显示该组有写权限吗? 是否已经存在site-library/tmp
文件/目录?
【参考方案1】:
在向该文件添加内容之前检查您的父目录是否具有权限
sudo chmod -R 777 /yourDir/file.log
【讨论】:
将所有权限添加到文件不是解决方案,也不安全!【参考方案2】:我遇到了同样的问题,检查文件夹是否有更多的 ACL 规则!
如果您在列出文件夹时可以看到 +(加号),则表示它具有特殊的访问规则。例如:
[user_in_apache_group@web02 html]$ ls -l
total 16
drwxrwxr-x 16 apache apache 4096 Sep 4 13:46 ilias
drwxrwxr-x+ 15 apache apache 4096 Sep 4 13:46 ilias5
查看权限:
[user_in_apache_group@web02 html] getfacl ilias5
# file: ilias5
# owner: apache
# group: apache
user::rwx
user:user_in_apache_group:r-x
group::rwx
mask::rwx
other::r-x
这意味着我的用户 (user_in_apache_group) 没有对该文件夹的写入权限。
解决方法就是@techtonik 说的,给用户添加写权限:
[user_in_apache_group@web02 html]$ sudo setfacl -m u:user_in_apache_group:rwx ./ilias5
再次检查权限:
[user_in_apache_group@web02 html] getfacl ilias5
...
user:user_in_apache_group:rwx
...
希望对您有所帮助。 ;)
【讨论】:
【参考方案3】:使用Linux ACL(访问控制列表)——它是更细粒度的权限系统版本,
setfacl -R -m 'group:staff:rwx' -m 'd:group:staff:rwx' /usr/local/lib/R/
这将设置目录的活动权限和在其中创建的任何内容的默认权限。
如果您刚刚将自己添加到staff
组,则如果不重新登录,这将无法正常工作,但您可以仅为自己设置当前会话的权限。
【讨论】:
【参考方案4】:当用户即使拥有权限也无法访问/foo/bar/baz
目录时遇到问题,因为他无权访问bar
目录。
【讨论】:
【参考方案5】:为什么 Linux 用户不能编辑他所属的组中的文件?
我使用的是 Ubuntu 12.04,并且遇到了同样的问题,即用户无法写入允许他组访问的文件。例如:
whoami //I am user el
el
touch /foobar/test_file //make a new file
sudo chown root:www-data /foobar/test_file //User=root group=www-data
sudo chmod 474 /foobar/test_file //owner and others get only read,
//group gets rwx
sudo groupadd www-data //create group called www-data
groups //take a look at the groups and see
www-data //www-data exists.
groups el //see that el is part of www-data
el : www-data
现在重新启动终端以确保用户 并且群组已经生效。以 el 身份登录。
vi /foobar/test_file //try to edit the file.
产生警告:
Warning: W10: Warning: Changing a readonly file"
什么?我都做对了,为什么还是不行?
答案:
完全重新启动计算机。停止终端不足以解决这些问题。
我认为 apache2 也使用 www-data 组,因此该任务以某种方式阻止了用户和组的正确执行。您不仅必须注销,还必须停止并重新启动任何使用您的组的服务。如果重新启动没有得到它,你就会遇到更大的问题。
【讨论】:
什么是“更大的问题”?【参考方案6】:您是否在更改组后注销并重新登录?见:Super User answer involving touch permissions failure
【讨论】:
如果我打开一个新的终端窗口,那不应该被视为一个新进程吗?我很确定我试过了,但它没有强制我退出。 @Ben:启动一个新进程会从其父进程继承 uid/gids。你需要一个特权程序(如login
、su
等)来实际设置uid/gids。
如果注销/重新登录不方便,如上所述,您可以在终端中执行此操作:su your-user-name
。生成的 shell 将拥有您更新后的组权限。
谢谢!我花了大约 15 分钟的时间试图弄清楚为什么我在文件夹中没有组权限。
我需要在 Ubuntu 16.04 x64 上重新启动,而不仅仅是注销并再次登录以上是关于Linux,为啥我有组权限却不能写?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我回答问题,上传图片成功,却出现权限不足,不能上传是怎么回事啊?我现在是四级。
为啥这个 c++ 代码在 Linux 中可以正常工作,但在 Windows 中却不能[关闭]
为啥 Python pyusb usb.core 访问由于权限而被拒绝,为啥 rules.d 不能修复它?
为啥Linux(Ubuntu系统)创建文件只能创建只读文件,还不能修改权限?