我正在设置一个 Ubuntu 服务器,我想允许 FTP 客户端访问该/etc/文件夹。所以我使用chown命令允许我的帐户使用它。然而,这改变了sudo它的所有权并破坏了它。我无法运行任何命令,sudo因为所有者不是 root,我无法更改所有者,因为我必须使用sudo.
我尝试以 root 身份启动到恢复模式并运行chown -R root /etc,chown -R 0 /etc但都没有奏效。
有没有办法在不重新安装 Ubuntu 的情况下解决这个问题?
在我执行一个命令后,是否有一个命令可以取消用户的 sudo 权限,例如sudo pmset sleep 0当我尝试执行另一个 sudo 命令时,它会再次要求我输入密码?
目前,在一个 sudo 命令之后,它将执行任何其他命令,而无需询问我的密码。该命令exit似乎不起作用。
我的服务器中有 python 2.6 开始。然后我下载了 python 2.7 并使用 make 和 make altinstall 安装。当我在终端中只尝试 python 时,它打开了 python 2.7,但 sudo python 打开了 2.68。所有像 virtualenv pip 这样的命令都使用 python 2.68
我有一个服务器环境,唯一的登录方法是数据中心的 SSH 或本地终端。我已将其设置为允许特定用户仅使用密钥而不是密码登录(明确禁用)。该用户也没有设置密码。
由于此用户需要在服务器上执行的操作,我已授予无密码 sudo 访问权限,使用(在 sudoers 文件中):
username ALL=(ALL) NOPASSWD: ALL
显然,这可能是一个安全问题。我需要使用我们严密保护的 SSH 密钥确保用户无法通过 SSH 以外的任何方式登录到服务器。所有 SSH 登录都受到极好的保护,并且也被锁定到特定的 IP 地址,因此与基于密钥的登录相结合,是安全的(可能是这样)。我希望消除通过我们的数据中心登录的功能,以确保用户无法从那里登录,而只能使用 SSH。
如何防止那些未经授权的访问尝试?
我是 Linux 新手,刚刚学习并使用 Debian 7.0 Wheezy。我见过两种允许用户使用 sudo 的方法
一种是用来visudo修改/etc/sudoers和添加以下
username ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
另一个是将用户添加到sudo组,使用这个
usermod -a -G sudo username
Run Code Online (Sandbox Code Playgroud)
两种方法有相同的影响吗?每种方法有什么优缺点吗?
我知道我们可以使用sudo命令以超级用户/其他用户的身份执行命令/脚本。但是是否有可能sudo用户不可用/删除该实用程序本身。如果是这样,sudo除了 之外还有什么替代方案su?另外,做sudo和su服务于相同的目的吗?
作为我正常工作流程的一部分,我 SSH 到另一个用户的机器,将用户切换到他们,运行命令,然后再次退出到我自己的机器:
ssh hostname
sudo su user
runcommand
exit
exit
Run Code Online (Sandbox Code Playgroud)
有没有办法将其缩减为单行命令?例如
ssh --someflags "runcommand"
Run Code Online (Sandbox Code Playgroud)
我试过这个,但提示输入我没有的其他用户的密码:
sudo ssh user@hostnme "runcommand"
Run Code Online (Sandbox Code Playgroud) 我已将 USB 连接到串行桥接器,并运行dmesg | grep tty输出以下内容:
[ 0.000000] console [tty0] enabled
[603199.380677] usb 2-2: cp210x converter now attached to ttyUSB0
Run Code Online (Sandbox Code Playgroud)
所以现在我正在尝试按照上一个问题中的答案通过运行以下命令来写信给它:
cat hello.txt > /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)
和
sudo cat hello.txt > /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)
但两者都会导致以下错误:
bash: /dev/ttyUSB0: Permission denied
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
谢谢
我很难passwordless sudo在我的 Debian 服务器上为一个用户创建。我已将以下行添加到sudoers文件中:
deployer ALL = NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
令我惊讶的是,我可以轻松地创建一个新用户
adduser deploy
passwd -l deploy
su deploy
touch somefile
Run Code Online (Sandbox Code Playgroud)
添加deploy ALL = NOPASSWD: ALL到sudoers,和
sudo cp somefile /etc/init.d/somefile
Run Code Online (Sandbox Code Playgroud)
不会提示我输入密码。
您能否解释一下我的现有用户(部署者)和新用户(部署者)之间的区别,以便passwordless sudo对一个用户有效,但对另一个无效?
这个问题可能看起来有点傻,但由于在基于 Unix 的系统中,替换可执行文件的映像是一步完成的,替换当前运行的进程,在函数调用execve(和派生类)中,问题是:
为什么sudo fork()默认情况下在execve更换过程之前?
通过之前的fork,额外的内核元素必须被初始化,虽然fork在一些Unices中已经相当优化,但仍然有一些不可避免的元素必须被初始化。如果fork()默认情况下没有发生,则 PID 空间会增加得更慢。
如果您好奇,可以通过发出如下命令来检查此默认行为
sudo sleep 30
Run Code Online (Sandbox Code Playgroud)
当前的代码 [ 1 ] 遵循起来要复杂得多,因为此后添加了许多功能;但在 Apple [ 2 ]托管的版本中,它的作用非常清楚。
#ifndef PROFILING
if ((sudo_mode & MODE_BACKGROUND) && fork() > 0)
exit(0);
else
EXEC(safe_cmnd, NewArgv); /* run the command */
#else
/* Complicated code when profiling is enabled, but we don't care */
Run Code Online (Sandbox Code Playgroud)
我目前正在运行 sudo 版本 1.8.11p2,无论有没有-b开关,它都会以任何一种方式产生睡眠,所以似乎当前的代码变得更加复杂。
我正在寻找一个答案,其中还涵盖了为什么这是默认行为,以及它可以为我们带来哪些优势。