我有一个要求,当用户登录时,他们应该在用户主目录中看到他们所属项目的共享目录。他们不应该看到任何其他项目目录。用户应该具有读/写访问权限。
例如,假设有三个用户 u1、u2 和 u3 以及两个项目 p1、p2。u1 是 p1 的一部分,u2 是 p2 的一部分,但 u3 可以访问 p1 和 p2。一旦他们登录,他们的主目录应如下所示。
- U1首页 -> p1
- U2 主页 -> p2
- U3 主页 -> p1, p2
就我而言,将有数百个用户和项目。不到 5% 的用户是多个项目的成员。
我有一个要求,当用户登录时,他们应该在用户主目录中看到他们所属项目的共享目录。他们不应该看到任何其他项目目录。用户应该具有读/写访问权限。
例如,假设有三个用户 u1、u2 和 u3 以及两个项目 p1、p2。u1 是 p1 的一部分,u2 是 p2 的一部分,但 u3 可以访问 p1 和 p2。一旦他们登录,他们的主目录应如下所示。
就我而言,将有数百个用户和项目。不到 5% 的用户是多个项目的成员。
在 Windows 上共享文件夹是一件小事。在 Linux 上共享文件夹似乎只能使用 Sambashare 来完成。至少,我发现的每个指南都在使用这种方法。这太糟糕了,需要配置文件、用户组、附加包等。有没有办法在没有这个程序的情况下共享本地文件夹?现在,将东西上传到云端以在局域网中的两台 linux 计算机之间传输文件似乎更容易。
我有一台 HP Color LaserJet Pro MFP M479fdn,它能够接收传真并将它们保存在文件夹中。只有当我查看界面时,它才告诉我我必须输入一个“共享文件夹”。
这是相关页面:
有没有办法只使用标准的 Linux 文件夹来完成这项工作?或者我是否有必要设置 Samba 以使其正常工作?如果可能的话,我宁愿避免桑巴舞。
正如下面所回答的,实际上没有其他解决方案。事实是我已经安装了 samba,所以我所要做的就是添加一个条目,如下所示:
[fax]
comment = Faxes on Monster
path = /home/fax
read only = no
browsable = yes
创建用户:
sudo adduser --system --ingroup sambashare fax
sudo mkdir /home/fax/folder
sudo chown fax:sambashare /home/fax/folder
sudo passwd fax
并重新启动服务:
sudo systemctl restart smbd
然后我可以在我的 HP 设置中使用以下共享文件夹:
\\fax\folder
这被接受了。下一页要求输入用户名和密码,我使用“传真”和运行时输入的密码passwd
。
我不能 100% 确定它在这一点上是否有效,我需要接收传真......
此设置的一部分基于 Ubuntu安装和配置 samba页面。
我使用以下命令在运行 Ubuntu Server 16.04.5 LTS 的服务器上创建了一个 Ubuntu VM:
sudo virt-install \
--name TEST \
--memory 2048 \
--vcpus 2 \
--location 'http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/' \
--os-variant ubuntu16.04 \
--disk path=/pools/pool0/images/vm/test,size=150,bus=virtio,sparse=no,format=qcow2 \
--filesystem type=mount,source=/pools/pool0/volumes/shared,target=shared,mode=mapped \
--network network=vms \
--graphics none \
--virt-type kvm \
--hvm \
--console pty,target_type=serial \
--extra-args 'console=ttyS0,115200n8 serial'
请注意,我创建了一个共享文件夹,shared
使用映射访问权限调用,以便允许在来宾上进行读写。
然后我用这个命令启动虚拟机:
virsh start TEST --console
在来宾内部,我已编辑/etc/fstab
以使用此行自动挂载共享文件夹,其中 UID 1000 是我的用户,GID 1000 是不包含其他成员的关联组:
shared /mnt 9p trans=virtio,version=9p2000.L,rw,uid=1000,gid=1000 0 0
在/mnt
客户机上的目录中,运行ls -ln
会给出以下输出:
$ ls -ln /mnt
total 42
drwxrwxr-x 8 1000 1000 8 Jul 28 23:52 Backups
drwxrwxr-x 6 1000 1000 6 Dec 28 00:15 Media
drwxrwxr-x 6 1000 1000 67 Mar 31 2018 Misc
drwxrwxr-x 2 1000 1000 4 Mar 31 2018 Recipes
ls -ln
在目录中的主机上运行时,我得到相同的输出/pools/pool0/volumes/shared
:
$ ls -ln /pools/pool0/volumes/shared
total 42
drwxrwxr-x 8 1000 1000 8 Jul 28 23:52 Backups
drwxrwxr-x 6 1000 1000 6 Dec 28 00:15 Media
drwxrwxr-x 6 1000 1000 67 Mar 31 2018 Misc
drwxrwxr-x 2 1000 1000 4 Mar 31 2018 Recipes
在来宾中,我可以作为非特权用户创建和修改文件和文件夹:
$ mkdir /mnt/Media/test-dir
$ touch /mnt/Media/test-file
$ ls -ln /mnt/Media
total 75
drwxrwxr-x 199 1000 1000 199 Dec 28 22:07 Movies
drwxrwxr-x 152 1000 1000 153 Dec 25 16:26 Music
drwxrwxr-x 75 1000 1000 75 Jul 16 21:02 Photos
drwxrwxr-x 2 1000 1000 2 Dec 29 20:30 test-dir
-rw-rw-r-- 1 1000 1000 0 Dec 29 20:31 test-file
drwxrwxr-x 15 1000 1000 15 Dec 18 15:40 TV Shows
但是,在主机操作系统上,这些文件和文件夹仅被授予 root 访问权限:
$ ls -ln /pools/pool0/volumes/shared/Media
total 75
drwxrwxr-x 199 1000 1000 199 Dec 28 22:07 Movies
drwxrwxr-x 152 1000 1000 153 Dec 25 16:26 Music
drwxrwxr-x 75 1000 1000 75 Jul 16 21:02 Photos
drwx------ 2 0 0 2 Dec 29 20:30 test-dir
-rw------- 1 0 0 0 Dec 29 20:31 test-file
drwxrwxr-x 15 1000 1000 15 Dec 18 15:40 TV Shows
我在我的服务器上运行自动化脚本,为了使这些脚本正常工作,我需要使用 UID 1000
、 GID创建这些文件夹和目录,目录1000
权限为rwxrwxr-x
(775),rw-rw-r--
文件权限为 (664)。我不想每次创建新文件/目录时都必须手动运行chmod
。chown
sudo
我需要解决这个问题,最好不必从头开始重新安装 VM。
我正在尝试使用在 qemu 中运行的 FreeDOS 来为 BBS 运行基于 DOS 的 Doors。我现在遇到的挑战是从 VM 内访问主机文件系统以在主机和来宾之间共享文件。
我希望有一个 mount 命令,但这似乎并不存在。我还在寻找一个 CLI 选项,以便在 qemu 实例作为另一个选项启动时将目录作为虚拟驱动器传递。似乎有几个可能的选项,但它们似乎都是 linux-VM 特定的(例如,-virtfs CLI 选项和 9p 客户端)。
如果我可以让 samba 客户端在 FreeDOS 中工作,我还发现QEMU Windows 客户机和 Linux 主机之间的共享文件夹是可能的,但这确实是我想避免的最后选择。
我正在使用 Linux Mint 18。假设有几个共享目录。每个目录属于一个特定的组。其中一个是 foo,必须由 Pippo 和 Pluto 共享,所以我创建了组 foo 并且我已经将 Pippo 和 Pluto 添加到其中。在 foo 及其子目录中创建的所有内容都必须可供 Pippo 和 Pluto 访问,无论创建者是 Pippo 还是 Pluto。问题是,在创建新文件或目录时,内容的 id 组设置为 Pluto 或 Pippo(取决于创建内容的人)而不是 foo 即使我更改了 foo 文件夹的组和其子目录和文件到 foo。
给新内容组 foo 的方法是什么?
编辑
在 foo 文件夹之外,由 Pippo 或 Pluto 创建的每个文件都必须将组分别设置为 Pippo 和 Pluto。
我对操作系统课程中文件夹的权限有疑问。
想象一下,一个 ubuntu 操作系统有三个用户:Lee、Xon、Yugi。
Lee 创建了一个父文件夹 X,并授予 Xon 完全权限 (rwx),但授予 Yugi (---) 权限。Xon 进入 X 并创建一个名为 Y 的新文件夹,他在该文件夹上向 Yugi 授予完全权限 (rwx)。
由于 Yugi 没有对 X 的权限,他能否利用他对 Y 的权限?(知道用户必须具有访问文件夹的整个路径的权限)