标签: su

使用 su 或 sudo 时出现分段错误

问题示例:

$ su
Segmentation fault
$ sudo ls
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

我之前尝试从源代码编译 sqlite3。我不知道它安装了什么库。这可能是发生这种情况的原因。

我试过strace su了,结果如下:

...
fstat64(6, {st_mode=S_IFREG|0644, st_size=17964, ...}) = 0
mmap2(NULL, 20788, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0xb7295000
mmap2(0xb7299000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x3) = 0xb7299000
close(6)                                = 0
mprotect(0xb7299000, 4096, PROT_READ)   = 0
mprotect(0xb72f9000, 4096, PROT_READ)   = 0
set_tid_address(0xb758a728)             = 11144
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

当我尝试gdb su跑步时,它给了我Cannot find …

bash segmentation-fault su gdb

5
推荐指数
1
解决办法
2万
查看次数

如何防止来宾帐户使用 su 和 sudo?

众所周知,访客帐户不能使用susudo

如何做到这一点?

我的猜测是 apparmor。但是,没有提到 in /etc/apparmor.d/lightdm-guest-session(或其中包含的其他文件)。

它是通过否认某些能力来完成的吗?

$ grep cap /etc/apparmor.d/abstractions/lightdm
  capability ipc_lock,
  deny capability dac_override,
  deny capability dac_read_search,
Run Code Online (Sandbox Code Playgroud)

dac_override似乎是一个不错的候选人。根据man capabilities

CAP_DAC_OVERRIDE
      Bypass file read, write, and execute permission checks.  (DAC is
      an abbreviation of "discretionary access control".)

CAP_DAC_READ_SEARCH
      * Bypass  file  read  permission  checks  and directory read and
        execute permission checks;
      * Invoke open_by_handle_at(2).
Run Code Online (Sandbox Code Playgroud)

这是它,还是其他一些能力?或者它根本不是apparmor?


显然,这就是setgid能力。从syslog一个su尝试:

Mar 18 12:14:52 …
Run Code Online (Sandbox Code Playgroud)

security sudo guest-session apparmor su

5
推荐指数
1
解决办法
980
查看次数

su: 用户不存在或用户条目不包含所有必填字段

在 Ubuntu Studio 22.04 LTS 中,我通常以非特权域用户身份登录。如果我需要执行管理任务(在终端窗口中),我之前曾使用“su”更改为本地或域管理员帐户。这不再有效。相反,“su”会产生错误消息:

su: user <user_name> does not exist or the user entry does not contain all the required fields
Run Code Online (Sandbox Code Playgroud)

其他已更改且可能相关的事情是,终端窗口提示中的我的域用户名现在显示为:

<domain_user>@<domain>@<computer_name>
Run Code Online (Sandbox Code Playgroud)

这曾经显示为:

<domain_user>@<domain>
Run Code Online (Sandbox Code Playgroud)

我不知道自己做了什么事情导致了这种变化。鉴于此,我尝试了以下所有“su”命令,但它们都产生相同的错误消息:

su <local_admin>
su <domain_admin>@<domain>
su <domain_admin>@<domain>@<computer_name>
Run Code Online (Sandbox Code Playgroud)

whoami产量<domain_user>@<domain>(这也是我登录的方式)。 grep <local_admin> /etc/passwd两者getent <local_admin> 都会产生预期的输出:

<local_admin>:x:1000:1000:<local_admin>:/home/<local_admin>:/bin/bash

sudo -iu <local_admin>提示我输入当前登录用户的 sudo 密码,<domain_user>@<domain>该用户没有特权,因此没有 sudo 密码。

域用户的网络共享仍在正确映射并允许访问。

任何有关错误或如何确定问题原因的线索都将受到欢迎!

command-line su username

5
推荐指数
1
解决办法
2万
查看次数

如何从源头构建“su”?

尝试在 Ubuntu 20.04 上构建自定义“su”,但从原始源开始进行测试(不进行任何更改)。跑步

apt-get source login
Run Code Online (Sandbox Code Playgroud)

我得到了 Shadow-4.8.1 目录。跑步

./configure
make
Run Code Online (Sandbox Code Playgroud)

并尝试运行

src/su testuser
Run Code Online (Sandbox Code Playgroud)

它不起作用!验证失败错误。运行原始操作系统二进制文件:

/usr/bin/su testuser
Run Code Online (Sandbox Code Playgroud)

而且效果很好!卧槽?

我认为构建过程中缺少一些模块/参数。

转到影子包的构建日志。

https://launchpad.net/ubuntu/+source/shadow/1:4.11.1+dfsg1-2ubuntu1/+build/23780688

并参见下一个 ./configure 字符串

./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/x86_64-linux-gnu --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking --disable-shared --without-libcrack --mandir=/usr/share/man --with-libpam --enable-shadowgrp --enable-man --disable-account-tools-setuid --with-group-name-max-length=32 --without-acl --without-attr --without-su --without-tcb 
Run Code Online (Sandbox Code Playgroud)

看那边:

--without-su
Run Code Online (Sandbox Code Playgroud)

尝试这个 ./configure 字符串,它确实使所有二进制文件都没有“su”。尝试更换它

--with-su
Run Code Online (Sandbox Code Playgroud)

新的二进制文件也不起作用。验证失败。:(

关于它的两个问题。

  1. 我在哪里可以找到原始“su”的构建日志?
  2. 为什么新构建的“su”看不到 /etc/shadow|passwd 中存在的真实操作系统用户?

compiling su

5
推荐指数
1
解决办法
682
查看次数

在 Ubuntu 14.04 中禁用 sudo su

我需要完成以下几件事。

  1. 禁用 Ubuntu 用户。

  2. sudo su对所有用户禁用。

  3. 每个用户都应该能够执行sudo <command>.

我修改了我的 sudoer 文件如下:

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Cmnd_Alias   NSHELLS = /bin/sh,/bin/bash
Cmnd_Alias   NSU = /bin/su
# Host alias specification

# User alias specification …
Run Code Online (Sandbox Code Playgroud)

su

4
推荐指数
1
解决办法
1万
查看次数

无法使用 su 进入超级用户

每当我尝试跑步时

su
Password:
Run Code Online (Sandbox Code Playgroud)

然后它显示错误

setgid: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我使用更改权限后出现此问题 chown

的输出ls -lsa /bin/su是:

40 -rwxrwxr-x 1 jheel root 40128 May 17 2017 /bin/su
Run Code Online (Sandbox Code Playgroud)

permissions command-line root su

4
推荐指数
1
解决办法
3385
查看次数

“root”用户不存在?

当我运行su命令时,终端返回:

user 'su' does not exist
Run Code Online (Sandbox Code Playgroud)

如何添加root用户?任何人都可以回答这个问题吗?我试过了sudo adduser su,但在此之后,我遇到了同样的问题。

command-line root users su passwd

3
推荐指数
2
解决办法
1万
查看次数

为什么“who”命令没有将“root”显示为登录用户?

当我使用以下命令从 gnome-terminal 以 root 身份登录时:

sudo su
Run Code Online (Sandbox Code Playgroud)

它让我以 root 用户身份登录。

这不是切换用户视为登录吗?

另外,哪个命令可以显示我所做的所有“切换”?

bash root sudo su

3
推荐指数
1
解决办法
1641
查看次数

访问超级用户权限时认证失败

当我输入时,我获得了 root 权限sudo

但是当su询问我输入的Password 时,终端说

su: Authentication Failure
Run Code Online (Sandbox Code Playgroud)

sudo su 14.04

3
推荐指数
1
解决办法
2万
查看次数

即使在执行 sudo su 时,如何为所有用户设置环境变量?

x.sh在目录中创建了一个文件,/etc/profile.d/以便所有用户都可以访问它。我期望当我使用 command 在终端(登录用户)中更改当前用户时sudo su other_user,我在x.sh文件中设置的那些变量应该可以访问,但它们不是。如何根据需要设置可访问的变量?

bash environment-variables su

3
推荐指数
1
解决办法
6912
查看次数