小编Cal*_*ion的帖子

如何以另一个非 root 用户身份获得交互式 shell?

我正在使用 Ubuntu 10.04 LTS 服务器,具有默认安全模型(root 锁定,sudo用于提升权限)。sudo -i当我需要以提升的权限运行一系列命令时,或者当我需要在仅具有 root 权限的目录中翻找时,我偶尔会喜欢使用。

有时,在设置将作为自己的非特权系统帐户 ( adduser --system --group --no-create-home --disabled-login some-daemon-user)运行的软件时,我发现我需要以该用户的身份运行一系列命令,而不是我自己或 root 用户。我试过使用sudo -i -u some-daemon-user,但它只返回一个1状态而没有任何错误消息。

我已经检查了syslogmessagesauthdebug日志文件/var/log,它们都没有包含任何引用sudo或相关帐户的消息。

那么,是否有可能成为另一个非 root 用户,sudo 风格而不只是设置密码并登录(作为他们)?我的系统是否以某种方式“损坏”了还是我做错了?

sudo privileges

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

当我有 `setuid` 并且用户是组的成员时,为什么 Upstart 需要 `setgid`?

我正在尝试将 Upstart 配置为运行一个需要将 tty 作为系统范围的守护程序访问的小型实用程序。从命令行运行时,该实用程序保持在前台,直到按 Ctrl+C 才会退出;因此,我省略了该expect节,而 Upstart 正在正确跟踪 PID。我还使用adduser --system --no-create-home --disabled-login avrlirc.

在我的系统上,实用程序需要访问的 tty 安装为:

crw-rw----   1 root dialout 166,   0 May 24 19:25 ttyACM0
Run Code Online (Sandbox Code Playgroud)

所以我将用户avrlirc(在上面创建)添加到dialout组中。当我运行该实用程序时,avrlirc一切都按预期工作。我将该节添加setuid avrlirc到 Upstart 配置文件中,但作业失败并显示“无法打开 tty”。

如果我省略了该setuid节,它就可以工作(所以它可能是一个权限问题)。如果我在setgid dialout旁边添加节setuid,它也可以工作。

那么,setgid当我已经拥有setuid并且用户是适当组的成员时,为什么我还需要——为什么这还不够?

作为参考,Upstart 作业配置文件是:

start on runlevel [2345]
stop on runlevel [016]
console log
setuid avrlirc
setgid dialout
exec /usr/local/bin/avrlirc2udp -f -H -h <IP_ADDRESS> -t …
Run Code Online (Sandbox Code Playgroud)

upstart 12.04

7
推荐指数
1
解决办法
9678
查看次数

标签 统计

12.04 ×1

privileges ×1

sudo ×1

upstart ×1