我听说这chmod 777
是个糟糕的主意。但是,没有人会使用我的系统(对于许多 *nix 系统来说,这是一种相当常见的情况)。为什么我不应该允许一切?
是否存在一个文件系统可以满足这两个要求?
- 支持Linux标准文件权限
- 被 Windows 原生识别
我想用它来格式化一个主要用于 Linux 的 USB 外部记忆棒,但也想从 Windows 机器上访问。
一个简单的解决方法是从 Windows 主机上的 Linux VM 读取 USB 驱动器的内容,但很好奇是否存在这样的文件系统。
我遇到这样一种情况,一个用户(“ minknow ”)正在创建文件/目录,而我希望另一个用户(我的,“ nano2 ”)对它们具有 rwx (完全)访问权限,而不必在每次创建新目录时都使用 sudo 更改权限。
因此,我尝试通过使用以下命令将minknow用户的主要组作为次要组添加到nano2用户来解决这个问题:
sudo usermod -a -G minknow nano2
这会将组minknow添加到用户nano2。
然后我使用 id -Gn 命令检查了这些组,以验证该组的添加:
nano2@nano2:/var/lib/minknow/data/P2_WGS_v3/23RKG025670$ id -Gn nano2
nano2 adm cdrom sudo dip plugdev lpadmin sambashare minknow docker
但它并没有按预期工作。nano2用户没有 minknow 组的权限-我有一个由minknow用户创建的目录,具有以下权限(来自“ll”输出):
drwxrwxr-x 3 minknow minknow 4096 Jan 8 10:46 23RKG025670/
nano2用户无法在该目录中创建任何文件。
现在,我碰巧也检查了 id 命令而没有指定用户名。根据我的理解,这应该只是输出我的id 和组,但输出与上面的输出略有不同:
nano2@nano2:/var/lib/minknow/data/P2_WGS_v3/23RKG025670$ id -Gn
nano2 adm cdrom sudo dip plugdev lpadmin lxd sambashare
缺少两个组,包括minknow组。
我已经使用whoami命令验证了我的用户实际上是 nano2 。
这是怎么回事?“id”和“id {my_own_username}”有什么区别?为什么我尝试授予组对nano2的权限会失败?
提前感谢!
在相对较新且简单的 CoreOS 系统上,尝试运行以下命令:
podman run --rm docker.io/curlimages/curl -v host.containers.internal:2040
结果出现以下错误:
{"msg":"exec container process `/entrypoint.sh`: Permission denied","level":"error","time":"2024-11-22T22:12:56.046889Z"}
我对此完全不知所措。我尝试了以下方法:
sudo setenforce 0
暂时禁用 SELinux,但这并不能改变收到的错误。将标志添加
--userns=keep-id
到命令中,但这也不会改变结果。
例如:
podman run --userns=keep-id --rm docker.io/curlimages/curl -v host.containers.internal:2040
- 对于其他更复杂的 podman 容器,我尝试设置
:z
卷挂载标志,但无济于事。
我的系统肯定出了什么问题。我的系统唯一不正常的地方是,出于兼容性原因,我在同一台机器上同时安装了 podman 和 docker,但我的理解是这不应该发生冲突。
如下所示,在我的 Ubuntu 系统上,目录已设置粘滞位权限。它包含用户拥有的carlo
文件。file1
lab
lab@ubuntu:~$ ll | grep carlo
drwxrwxr-t 2 ubuntu ubuntu 4096 Oct 31 08:09 carlo/
lab@ubuntu:~$ ll /home/ubuntu/carlo/file1
-rw-rw-r-- 1 lab ubuntu 0 Oct 31 08:09 /home/ubuntu/carlo/file1
lab@ubuntu:~$
如您所见,用户lab
拥有file1
,但他不能重命名或删除该文件。
lab@ubuntu:~$ mv /home/ubuntu/carlo/file1 /home/ubuntu/carlo/file2
mv: cannot move '/home/ubuntu/carlo/file1' to '/home/ubuntu/carlo/file2': Permission denied
lab@ubuntu:~$ rm /home/ubuntu/carlo/file1
rm: cannot remove '/home/ubuntu/carlo/file1': Permission denied
lab@ubuntu:~$
这是预期的行为吗?
我正在尝试学习 Linux 中的更多安全性,并且很难理解通过 sudo 安装的应用程序与通过 sudo 运行的应用程序的权限和访问权限之间的差异。我对此有几个问题:
- 使用 sudo 安装应用程序时,这是否会授予应用程序对我的系统执行任何操作的完全权限?或者对此允许的操作有限制吗?
- 如果使用 sudo 安装应用程序,那么使用/不使用 sudo 命令运行应用程序时,访问/权限是否会有所不同?(例如,sudo pluma)
- 如果没有使用 sudo 安装程序,那么使用 sudo 命令运行该程序时权限是否会有所不同?
谢谢
有人能解释一下吗?
john@john-pcRefs:~/pCloudDrive/someFolder$ ls -al
total 16
drwxr-xr-x 2 john john 4096 Jan 11 2022 .
drwxr-xr-x 4 john john 4096 Jan 11 2022 ..
-rw-r--r-- 1 john john 10439 Sep 22 18:48 EnvironmentSetup.sh
-rw-r--r-- 1 john john 3370 Mar 25 2023 GitInitialization.sh
-rw-r--r-- 1 john john 342 Jul 10 2023 InitDatabase.sh
john@john-pcRefs:~/pCloudDrive/someFolder$ echo $USER
john
john@john-pcRefs:~/pCloudDrive/someFolder$ sudo chmod +x GitInitialization.sh
chmod: cannot access 'GitInitialization.sh': Permission denied
如果有帮助的话,我正在使用云驱动器,并且刚刚从 Ubuntu 22 升级到 Ubuntu 24。
当我尝试访问以该用户身份运行的 nginx 工作进程的符号链接时,遇到“权限被拒绝”错误adg
。
类似问题:Owner can't read /proc/$pid/io,但略有不同。我的问题是无法访问符号链接,并且 的输出ls -l
包含“Permission denied”错误(来自 stderr)和正常结果(来自 stdout)。具体输出如下:
- 打印nginx worker进程及它的fd信息:
root# ps -fp 2728114
UID PID PPID C STIME TTY TIME CMD
adg 2728114 2723696 0 21:11 ? 00:00:00 nginx: worker process
root# stat /proc/2728114/fd/0
File: /proc/2728114/fd/0 -> /dev/null
Size: 64 Blocks: 0 IO Block: 1024 symbolic link
Device: 0,21 Inode: 204114580 Links: 1
Access: (0700/lrwx------) Uid: ( 948/ adg) Gid: ( 948/ adg)
ls -l
与adg
用户和用户一起执行root
:
root# sudo -uadg ls -l /proc/2728114/fd/0
ls: cannot read symbolic link '/proc/2728114/fd/0': Permission denied
lrwx------ 1 adg adg 64 Aug 20 21:12 /proc/2728114/fd/0
root# sudo -uadg -gadg /bin/sh -c 'ls -l /proc/2728114/fd/0'
ls: cannot read symbolic link '/proc/2728114/fd/0': Permission denied
lrwx------ 1 adg adg 64 Aug 20 21:12 /proc/2728114/fd/0
root# ls -l /proc/2728114/fd/0
lrwx------ 1 adg adg 64 Aug 20 21:12 /proc/2728114/fd/0 -> /dev/null
- 检查用户和组:
root# grep adg /etc/passwd
adg:x:948:948::/home/adg:/sbin/nologin
root# id -nu 948; id -ng 948
adg
adg
- 检查状态
selinux
root# sestatus
SELinux status: disabled
root
用户可以正常访问 fd,但所有者不能,有人可以帮助我解决这个问题吗?
我在 Mint 21.3 系统上创建了两个用户:
user1
(1000)是在安装过程中创建的user2
(1001)我后来补充道
两者的主目录都在 中/home
,且权限完全相同drwxr-x---
。两者都未加密。
问题是,我尝试过的所有作为实时 USB 驱动器的发行版(Ubuntu 和版本、Mint、Fedora 和 spins)都不允许我访问/home/user2
。大多数但不是全部都允许/home/user1
。用户之间的唯一区别是user1
是管理员,而user2
不是。
我的问题:为什么会发生这种情况?
我希望我组中的其他用户能够访问我的文件空间中的特定文件夹(及其子文件夹),但不能访问我的其余文件。
[原因是我想要编译一个经过检测的应用程序来使用 gcov 进行代码覆盖;各种 .gcno 文件被写入我的构建目录,我希望我的同事在运行他们的测试时,既能访问这些文件,又能生成与它们一起放置的 .gcda 文件。]
无论如何,我天真地以为我可以这样做:
chmod g+w -fR build_directory
...果然,这会导致 build 目录及其所有子目录的权限为 drwxrwxr-x。其所有文件的权限为 -rw-rw-r--。即便如此,我小组的同事报告说,即使尝试执行
ls -l <full path to build_directory>
返回“无法访问:没有此文件或目录”。
我错过了什么?