root@frankfurt:~# sudo adduser newuser
添加用户“newuser”...
添加新组“newuser”(1001)...
使用组“newuser”添加新用户“newuser”(1001)...
正在创建主目录 `/home/newuser' ...
从`/etc/skel' 复制文件...
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:密码更新成功
更改 newuser 的用户信息
输入新值,或按 ENTER 获取默认值
全名[]:新
房间号 []:
工作电话 []:
家庭电话 []:
其他 []:
信息是否正确?[是/否] 是
root@frankfurt:~# su newuser
无法执行 /bin/bash: 权限被拒绝
根@法兰克福:~#
谢谢。
这是我执行时发生的事情,sudo su然后是exit
$ sudo su
# exit
exit
$
Run Code Online (Sandbox Code Playgroud)
exit 命令不会关闭我的终端模拟器。
是儿童终端吗?
语境
您正在使用 Ubuntu LTS 14.04。您以 root 用户身份登录。您运行以下命令:
exec su simple_user -c "/bin/bash /etc/init.d/simple_user_service"
Run Code Online (Sandbox Code Playgroud)
以便“simple_user_service”以“simple_user”权限而不是root权限启动。
题
似乎“exec su simple_user -c”不为新的交互式shell终端提供.bashrc、.profile或任何其他通常来源的文件。我通过在 simple_user .bashrc 文件中添加这一行来确认:
export TEST="Hello"
Run Code Online (Sandbox Code Playgroud)
然后在我的“simple_user_service”初始化脚本中:
#!/bin/bash
### BEGIN INIT INFO
# Provides: test_script
# X-Interactive: true
# Short-Description: Test script
### END INIT INFO
echo $TEST
Run Code Online (Sandbox Code Playgroud)
当我执行脚本时,没有打印任何内容,但是如果我执行以下命令:
su simple_user
echo $TEST
> Hello
Run Code Online (Sandbox Code Playgroud)
TEST 变量已正确设置和打印。
所以我想知道:“exec su simple_user -c”命令是否提供任何 simple_user 配置文件/bashrc 文件?如果是这样,有没有办法知道哪些?
非常感谢你的帮助!
[编辑 - 2 小时后]
感谢我收到的答案,我更准确地理解了“man bash”指令。我找到了这个:
When bash is started non-interactively, to run a shell script, for …Run Code Online (Sandbox Code Playgroud) reddit 上的这篇文章让我浏览了我的日志。就在那时,我发现了以下两个非随后的日子出现的条目。“用户”是我的用户帐户。
Aug 4 22:50:37 UbuntuSystem sudo: pam_unix(sudo:session): session opened for user root by user(uid=1000)
Aug 4 22:50:39 UbuntuSystem sudo: pam_unix(sudo:session): session closed for user root
Aug 4 22:51:16 UbuntuSystem su[10710]: Successful su for user by root
Aug 4 22:51:16 UbuntuSystem su[10710]: + ??? root:user
Aug 4 22:51:16 UbuntuSystem su[10710]: pam_unix(su:session): session opened for user user by (uid=0)
Aug 4 22:51:17 UbuntuSystem su[10710]: pam_unix(su:session): session closed for user user
Aug 4 22:51:17 UbuntuSystem su[10720]: Successful su for user by …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用“su/sudo”命令切换到普通用户。它问我密码,我输入管理员密码,然后它说 su:身份验证失败。如何切换到普通用户,有什么问题?
walter@walter-VirtualBox:~/testdir$ su
Password:
su: Authentication failure
walter@walter-VirtualBox:~/testdir$
Run Code Online (Sandbox Code Playgroud) 我目前使用的是 ubuntu 20.04 机器。我使用命令创建了一个带有密码的用户useradd。我需要更改PATH该用户的变量。所以我曾经su - <username>以交互方式登录到用户的外壳。当它要求输入密码时,我提供了用户的密码。但我收到以下错误。
ubuntu@ip-172-31-49-109:~$ su - harry
Password:
su: Authentication failure
Run Code Online (Sandbox Code Playgroud)
有谁知道我该如何解决这个问题以及如何更改PATH用户的变量
我的系统崩溃了,现在我的 Ubuntu 进入低图形模式。所有修复都需要使用sudo. 当我尝试这个时,我得到sudo: command not found. 当我尝试使用登录时su -出现错误:Authentication failed. 我也尝试过,sudo -i但什么也 没做。我真的被困在这里了。我能做什么?
相关资料:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
$ ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 121144 Feb 28 2013 /usr/bin/sudo
-a sudo output : -bash: -a command not found
which - a sudo output:
/usr/bin/sudo echo foo output: Permission denied
Run Code Online (Sandbox Code Playgroud) 有没有办法限制su特定的用户组?
在网上搜索时,我遇到了 IBM AIX 的sugroup. 每当创建用户时,sugroup都可以设置属性;并且只有该组的成员才被允许对该用户进行 su。
sugroup可以通过创建一个仅包含允许 su 的某些用户的组来帮助我解决我的问题。分配sugroup意味着该组之外的用户不允许被其他用户起诉。但是这个概念sugroup在 Ubuntu 中不可用。如何在 Ubuntu 中实现?
我在以下条目中输入/etc/pam.d/su:
auth required pam_wheel.so group=sulogin
我创建了以下内容:
sulogin,供允许 su 的用户使用sulogin是user1和user2sulogin是admin1和admin2现在,当我以 as 登录user1并尝试 su 到admin1or 时admin2,我不允许这样做。这是按照我的要求。当我以身份登录user1并尝试 su 时user2,我不允许这样做。这不符合我的要求(尽管原始问题中没有明确提到我的要求)。
我需要限制所有不在组中的sulogin用户起诉属于sulogin组的任何用户。基本上是 2 个级别的 su 权限。所以在上面提到的场景中:
user1应该能su …gpg: problem with the agent: Permission denied切换用户后调用GPG 失败su:
su - user2
gpg --symmetric --passphrase=foo foo.txt
Run Code Online (Sandbox Code Playgroud)
如果我从我自己的用户调用命令,它不会失败。有解决方法吗?
我在他们的邮件列表中找到了一个线程,但没有得到答复。它推测错误是因为:
tty 归我通过 SSH 登录的原始用户所有,而不是我通过 su 切换到的用户所有