med*_*iev 2 debian sudo user-permissions debian-lenny
在我最初获得凭据后,在我的服务器/vps 上:
adduser meder
visudo
Run Code Online (Sandbox Code Playgroud)
在visudo中,在最底部:
meder ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
从那时起,我将meder
, 与sudo
命令一起使用。这几乎是我应该做的吗?
和创建用户组的话题,使得www-data
和meder
可以访问相同的文件,我应该给什么具体的权限,我应该怎么设定,让双方可以接触相同的文件(将是巨大的,如果示例代码是为我提供”我还没有那么流利)。
是的,添加一个新的非 root 用户,然后从中执行 sudo 是“最佳实践”。如果你有很多命令要同时运行,很多人会说要运行sudo su -
。但是,sudo 有一个 -i 选项,用于为您提供 root shell。
此外,如果您想禁用 root 的交互式登录,您可以将密码更改/etc/shadow
为“!”。
要让两个用户访问相同的文件,您需要创建一个新组(我们称之为“共享”):
$ sudo groupadd shared
Run Code Online (Sandbox Code Playgroud)
然后你将你的用户添加到它:
$ sudo usermod -a -G shared meder
$ sudo usermod -a -G shared www-data
Run Code Online (Sandbox Code Playgroud)
然后在您想要访问的任何文件或目录上,您将更改文件/目录的组所有权:
$ sudo chgrp share [path-to-file]
Run Code Online (Sandbox Code Playgroud)
如果您希望组中的用户对文件拥有完全权限,您可能还需要更改文件权限:
$ sudo chmod g+w [path-to-file]
Run Code Online (Sandbox Code Playgroud)
或者
$ sudo chmod 775 [path-to-dir]
Run Code Online (Sandbox Code Playgroud)
阅读man chmod
各种权限语法的说明。
最后,您通常希望设置组位,以便创建的新文件使用拥有目录的组而不是您的默认组创建。例如,当您创建用户“meder”时,useradd 将创建一个名为“meder”的“用户专用组”,而用户“meder”将是唯一的成员。这意味着当您创建新文件时,它们将归 meder:meder(用户 meder 和组 meder)所有。如果您希望它们归共享组所有,则必须在目录上设置组 ID 位。为此,您需要:
$ sudo chown g+s [path-to-dir]
Run Code Online (Sandbox Code Playgroud)
一个完整的例子是:
$ sudo -i
# mkdir /opt/shared
# groupadd shared
# usermod -a -G shared meder
# usermod -a -G shared www-data
# chgrp shared /opt/shared
# chmod 775 /opt/shared
# chmod g+s /opt/shared
# exit
Run Code Online (Sandbox Code Playgroud)
我遇到的唯一问题是大多数文件都是使用 755 或 644 权限创建的,这意味着您始终必须手动为共享文件夹中的文件添加组写入权限。可能有办法解决这个问题,我只是不知道。
最后,您不必创建共享组。您可以将“meder”添加到 www-data 组,然后使用该组完成其余工作。
归档时间: |
|
查看次数: |
1962 次 |
最近记录: |