我有一个用户,supersecretuser
,在sudo
组中,但没有sudo
访问权限。是否还需要执行其他操作才能授予此用户sudo
访问权限?
$ ssh supersecretuser@myserver
supersecretuser@myserver:~$ groups
supersecretuser adm cdrom sudo dip plugdev lpadmin sambashare
supersecretuser@myserver:~$ sudo vim install.sh
[sudo] password for supersecretuser:
supersecretuser is not in the sudoers file. This incident will be reported.
Run Code Online (Sandbox Code Playgroud)
supersecretuser
是我们在安装 Ubuntu 时设置的用户。
$ sudo -iu abc ls -ltr /sites/servers/server_instance/logs/access*
ls: cannot access /sites/servers/server_instance/logs/access*: No such file or directory
$ sudo -iu abc ls -ltr /sites/servers/server_instance/logs/
total 594812
-rwxrwxrwx 1 abc abc 45 Mar 21 12:42 old.log
-rwxrwxrwx 1 abc abc 304537970 Mar 24 12:45 console.log
-rwxrwxrwx 1 abc abc 304537970 Mar 24 13:20 access_nginx.log
Run Code Online (Sandbox Code Playgroud)
谁能解释为什么会发生这种情况?由于这个原因,我被困在脚本上。
无论出于何种原因,我们不再需要成为 root (或使用sudo
)来运行/sbin/shutdown
,/sbin/reboot
等等。
这似乎是因为这些可执行文件现在是符号链接,/bin/systemctl
可以像普通用户一样处理所有内容。
但是,如果我想要shutdown
并reboot
再次要求 root 身份验证怎么办?我怎样才能做到这一点?
以其他用户身份登录后,如何运行 GUI 程序?
thufir@doge:~$
thufir@doge:~$ sudo -u hawat -i
hawat@doge:~$
hawat@doge:~$ whoami
hawat
hawat@doge:~$
hawat@doge:~$ pwd
/home/hawat
hawat@doge:~$
hawat@doge:~$ echo $HOME
/home/hawat
hawat@doge:~$
hawat@doge:~$ firefox
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
hawat@doge:~$
Run Code Online (Sandbox Code Playgroud) 我正在编写一个 Java 应用程序,我需要在其中执行命令行并返回结果,但是当我执行命令时,它要求输入 sudo 密码。到目前为止,我尝试过:
$ sudo -s
$ vim /etc/sudoers
# User privilege specification
root ALL=(ALL:ALL) NOPASSWD: ALL
javauser ALL=(ALL:ALL) NOPASSWD: ALL
:wq
$ 4 -r--r----- 1 root root 615 2011-10-26 09:23 sudoers
Run Code Online (Sandbox Code Playgroud)
一旦我执行命令,它再次询问“[javauser] javauser 的密码:”。但我已经提到了 noPASSWD。
whoami
返回alex
,我将它添加到sudoers
文件中
# User privilege specification
root ALL=(ALL:ALL) ALL
alex ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL …
Run Code Online (Sandbox Code Playgroud) 据我所知,似乎其他人也有相同的意见 sudo
,即使用管理权限执行某些操作的命令。
但是,当我运行时,rcconf
我可以看到这一行:
[*] sudo Provide limited super user privileges to specific users
Run Code Online (Sandbox Code Playgroud)
那么这项服务有什么意义呢?或者这甚至是一项服务?
sudo、kdesudo 和 gksudo 之间有什么区别,我应该什么时候使用它们?我知道 sudo 允许我同时运行 cli 和 gui 函数,但我在网站上看到其他人使用 kdesudo 和 gksudo 来运行 gui 函数。
当我输入命令时
su > echo "sachin"
Run Code Online (Sandbox Code Playgroud)
它要求输入密码。当我提供密码时,发生了一些奇怪的事情,如您所见:
还有一件事:我的笔记本电脑上还有另一个用户Hadoop,但是当我这样做时
su > echo "Hadoop"
Run Code Online (Sandbox Code Playgroud)
它说
没有 Hadoop 的密码条目
这是什么意思?
我的命令不起作用:
sudo gzip -dc sda1.image.gz | dd of=/dev/sda1
Run Code Online (Sandbox Code Playgroud)
甚至在我有机会输入密码之前返回以下错误:
dd: failed to open ‘/dev/sda1’: Permission denied
[sudo] password for ken:
Run Code Online (Sandbox Code Playgroud)
我也试过没有“-dc”选项并得到同样的错误。
但是,使用未压缩文件的不带 gzip的 dd 命令确实有效:
sudo dd if=sda1.image of=/dev/sda1
Run Code Online (Sandbox Code Playgroud)
似乎 sudo 仅适用于第一个命令,而不是整个命令序列。如果我保持在同一个终端会话中并重复该命令,我不会收到密码提示(我的身份验证似乎仍然存在),但我仍然收到相同的错误(好像我的身份验证不适用于 /dev 写操作)。从 /bin/sh 脚本执行时会发生同样的错误。
我应该如何构建我的命令来将我的图像解压缩到设备?
我在终端窗口中使用 Ubuntu 14.04 LTS。
当您有某种服务器时,您可以通过例如访问它,ssh user1@ip
并且您也可以ssh root@ip
使用 su 权限转到您的 root 用户,然后转到su user1
. 在我看来,这两种方式都应该引导我进入相同的用户环境(在这种情况下,“user1”),但在我的实际经验中并没有,因为ssh user1@ip
安装了一些东西,su user1
但没有安装。
这是为什么?