Questions tagged «permissions»

权限是Unix上控制对文件,目录和设备等资源的访问的方式,可以为所有者,组或所有用户指定。

2
只有写权限的文件夹是没有用的吧?
在Linux上工作了多年之后,我发现自己有一些空闲时间,因此我决定重温一些基础知识。因此,我重新阅读了有关权限的内容(无需检查源代码),以及有关文件夹的特殊情况,并提出了一种新的(至少对我来说...)考虑文件夹权限的方法(针对特定用户/组/其他):我想象一个文件夹有两个表,就像这样: filename | inode foo | 111 bar | 222 在读权限意味着可以阅读(列表)表的左栏中,写入权限对应于添加和删除条目表,和执行权限对应于能够从文件名到inode的转换; 即,您可以访问文件夹的内容。 我做了一些实验,结果都与我的“世界观”保持一致,但似乎无法避免一个结论:拥有权限的文件夹d-w-------完全没有用。详细说明:您无法列出其内容,无法读取其中存在的任何文件(因为无法将名称转换为inode),不能删除或重命名或添加文件,因为这又意味着翻译,甚至不能添加硬链接(因为我想这是指添加名称和索引节点号,这意味着您将知道两者,这又又使您怀疑,这违反了取消执行权限的目的) 。当然,如果有是内部的一个这样的文件夹的文件,那么你就不能删除该文件夹或者,因为你不能删除其内容。 所以...我想问两个问题: 我的这个比喻是正确的,还是大错了? 不管以前的答案,有没有任何地方具有权限的文件夹描述是合适的情况呢?

1
setfacl:这两个命令是否相同?
我有一个部署脚本(基于capifony),可在特定服务器上设置Symfony2安装的权限。它包含以下两个命令来对多个目录执行此操作: setfacl -R -m u:www-data:rwx -m u:`whoami`:rwX app/cache setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwX app/cache 这两个命令位于Symfony2站点上,作为一种修复权限的方法,但是,它们看起来与我非常相似。因此,我查看了的联机帮助页setfacl,据我了解,第二个命令与第一个命令的功能完全相同,但有一个附加选项(我不太了解)。我的问题是,我的假设正确吗?如果是这样,如果我删除了第一个命令,是否会有相同的效果?
10 permissions  acl 

2
修改tar存档中文件的文件所有权
我正在以用户身份工作,我想创建一个tar归档文件,当该文件解压缩时(按根)将提取具有根所有权的文件(否则,在提取文件后,root必须手动更改每个文件的所有权)到达目的地)。 我发现fakeroot这似乎正是这样做的。但是我无法找到创建档案所需的语法。 如何创建tar.xz归档文件,以使文件在由root解压缩时具有root所有权? do something with fakeroot ... tar cfpJ foo.tar.xz foo/
10 files  permissions  tar 


3
以root用户身份以我的用户身份启动Vim
我在中有自定义的Vim文件,在中有~/.vim设置~/.vimrc。但是,有时我必须在其中编辑一些文件/etc。 如果我这样启动Vim: $ sudo vim /etc/rc.conf 我丢失了配置,因为Vim使用了默认配置。因此:如何在没有丢失用户设置(位于我的主目录中)的情况下,以root权限运行Vim以编辑文件? 我努力了: $ su username -c "vim /usr/lib/python2.7/setuptools/dist.py" 但是巴什给我Permission denied。但是,上述命令例如适用于:/etc/acpi/handler.sh。这是为什么? 注意:用户名不是root。

2
文件所有权在不同系统之间如何受到影响?
据我了解Unix文件系统,Unix系统上的任何文件都必须属于该系统的组和用户。文件不能属于系统上不存在的组或用户。 根据该假设,会想到一些问题。在计算机之间通过闪存驱动器,CDROM或网络共享传输媒体时,组和用户属性会发生什么情况。文件在新系统中属于谁? 您可以限制数据只在您的系统上工作吗?(这里不讨论加密,只是基础知识。) 另外,当您在两台计算机之间传输数据时,有几种方法可以确保组和用户属性保持不变(属于root的将属于新系统上的root,与普通用户相同)。

3
有没有将密码传递到Systemd Unit文件的典型方法?
我想使用systemd单位文件启动服务。此服务需要密码才能启动。我不想将密码以明文形式存储在systemd单元文件中,因为它是世界可读的。我也不想以交互方式提供此密码。 如果要为此编写普通脚本,则将凭据存储在具有受限权限(400或600)的root拥有的文件中,然后将其作为脚本的一部分读取。是否有任何特定的systemd风格的方法可以执行此操作,还是应该遵循与常规Shell脚本中相同的过程?


1
为什么我不能创建一个以“ passwd”为前缀的文件。在“ / etc”中?
我有一台装有Ubuntu 16.04的PC。最近,我想安装一些软件包,但是在安装它们时遇到了麻烦。经过一番挖掘,我发现故障似乎与linux用户帐户系统有关。问题是passwd.无法在/etc路径中创建任何带有前缀前缀的文件。 # ls /etc/passwd.* ls: cannot access '/etc/passwd.*': No such file or directory # touch /etc/passwd.test-test-test touch: cannot touch '/etc/passwd.test-test-test': Permission denied # ls /etc/passwe.* ls: cannot access '/etc/passwe.*': No such file or directory # touch /etc/passwe.test-test-test # 我可以在其他路径中创建该文件,例如/或/usr,但不能在/etc中创建,并且可以使用其他文件名将文件创建在中/etc,但不能将文件名以开头passwd.。我无法在其他PC上重现此问题。 我试过其他命令: nano /etc/shadow.xxx echo xxx > /etc/shadow.xxx touch /etc/test-temp-file && …

2
为什么某些umask值不生效?
我试图更好地理解权限,所以我正在做一些“练习”。这是我正在使用的命令序列及其各自的输出: $ umask 0022 $ touch file1 $ ls -l file1 -rw-r--r-- 1 user group 0 Mar 16 12:55 file1 $ mkdir dir1 $ ls -ld dir1 drwxr-xr-x 2 user group 4096 Mar 16 12:55 dir1 这是有道理的,因为我们知道默认文件权限为666(rw-rw-rw-),目录默认权限为777(rwxrwxrwx)。如果我从这些默认权限,我减去umask值 666-022=644,rw-r--r--为的file1,所以它的连贯与以前的输出; 777-022=755,rwx-r-x-r-x对于dir1,也很连贯。 但是,如果我将umask从更改022为021,则不再可用。 这是文件的示例: $ umask 0021 $ touch file2 $ ls -l …

1
RAIDiator OS下ext3文件系统上的root用户,只有目录中的单个文件的权限被拒绝
我有一个名为“存储”的ReadyNAS盒子,我相信它是基于Debian的。我可以以root身份进入它。我正在尝试重新配置Web服务器,但是遇到了我不了解的文件权限问题。我/etc/frontview/apache/apache.pem什至无能为力!与同一目录中的其他文件相比,它似乎没有任何特殊权限,我可以使用它们。 storage:~# whoami root storage:~# cd /etc/frontview/apache/ storage:/etc/frontview/apache# ls -lah apache.pem* -rw------- 1 admin admin 4.0k Jul 10 2013 apache.pem -rw------- 1 admin admin 4.0k Jun 9 05:57 apache.pem.2017-02-04 -rw------- 1 admin admin 1.5k Jun 9 05:57 apache.pem.orig storage:/etc/frontview/apache# touch apache.pem touch: creating `apache.pem': Permission denied storage:/etc/frontview/apache# touch apache.pem.2017-02-04 storage:/etc/frontview/apache# …

2
为什么setuid在可执行文件上不起作用?
我知道在脚本上启用setuid会带来安全问题,因此默认情况下处于禁用状态,但是希望它对可执行文件有效。我创建了一个可执行文件,该文件按照本文中所述的说明将uid显示为输出:在shell脚本上允许setuid 但是它在运行之前和之后都返回相同的uid(1000)sudo chmod +s ./setuid-test。我认为这意味着setuid对我的可执行文件没有任何影响,为什么以及如何解决? 源代码: #include <stdio.h> #include <unistd.h> int main(int argc, char** argv) { printf("%d", geteuid()); return 0; } 构建并运行 $ gcc -o setuid-test setuid-test.c $ ./setuid-test 1000 $ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test $ ./setuid-test 1000 运行时ls -la,这是我得到的: me@me:~$ ls -la setuid-test -rwsrwsr-x 1 …

2
意外删除/ tmp
偶然地,我跑了sudo rm -r /tmp,这有问题吗? 我使用重新创建了它sudo mkdir /tmp,是否可以解决问题? 重新创建目录后,在Ubuntu 14.04的nautilus侧边栏中的地方部分中,我可以看到/ tmp,该位置以前不存在..这是问题吗? 最后一件事,是否需要sudo chown $USER:$USER /tmp像以前一样使它易于访问..在此之后会有副作用吗? 顺便说一句,当我尝试使用bash自动完成功能时,出现了这个看似相关的错误 bash:无法为此处文档创建临时文件:权限被拒绝

1
为什么拒绝使用npm开始使用node-dev的权限?
我正在尝试以低权限用户启动node.js应用程序。我知道的所有文件均由正确的用户拥有,并且权限设置得相当好。我正在尝试使用脚本文件来执行此操作。我用此命令调用脚本 sudo su - nodejs ./start-apps.sh Shell脚本运行此命令以启动应用程序 cd "/home/nodejs/my-app" npm start npm start被记录在这里。基本上,它从package.json文件中拉出要使用的命令,该文件在我们的应用程序中如下所示: // snip "scripts": { "start": "node-dev app" }, 它吐出错误: > my-app@0.1.0-build.100 start /home/nodejs/my-app > node-dev app sh: 1: node-dev: Permission denied npm ERR! spicoli-authorization@0.1.0-build.100 start: `node-dev app` npm ERR! Exit status 126 那sh似乎是说它正在报告shell命令中的错误。我不认为问题出在访问npm命令本身,因为如果是这样,拒绝的权限将在npm命令的任何输出之前引发。但是为了排除在外,这是npm命令本身的权限: $ sudo find / …

4
如何检查文件的组权限
我想从bash脚本检查文件的组权限。具体来说,我需要检查文件是否具有组可写位。 而已。就那么简单。然而: 我还需要此便携式产品。 test -w <file 不会告诉我它是否可以组写。 的输出ls -ld对人类来说很不错,但是对脚本却不太确定。从技术上讲,我可以解析输出drwxrwxr-x以提取组位,但这似乎很脆弱。 statOS X和其他系统之间的接口完全不兼容。 find <file> -perm ... 不可能是答案吗?
9 bash  permissions  ls  stat 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.