18.8. sudo, sudoedit - execute a command as another user

debian:~# apt-get install sudo
		

18.8.1. /etc/sudoers

sudo的配置文件是/etc/sudoers,visudo修改时会锁住sudoers文件,保存修改到临时文件,然后检查文件格式,确保正确后才会覆盖sudoers文件. 必须保证sudoers格式正确,否则sudo将无法运行.

/etc/sudoers

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=NOPASSWD: ALL

sudo group

neo@debian:/etc/mysql$ cat /etc/group | grep 'sudo'
sudo:x:27:neo
			

18.8.2. /etc/sudoers

visudo调用的默认编辑器是vi,如果要临时使用其他编辑器,在该命令前加上EDITOR环境变量即可.

[root@netkiller ~]# EDITOR=vim visudo
			

18.8.3. 设置示例

>1 允许neo用户从任何主机登录,以root的身份执行/usr/sbin/useradd命令

neo   ALL=(root) /usr/sbin/useradd 

>2 允许jam用户从任何主机登录,以root的身份无密码使用sudo执行/sbin/iptables -n -t filter -L 

jam   ALL=(ALL) NOPASSWD: /sbin/iptables -n -t filter -L 

>3 neo用户从任何主机登录,以root的身份执行自定义命令链里面的命令

Cmnd_Alias USERCOMMAND = /sbin/route,/sbin/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net,/sbin/iptables,/usr/bin/rfcomm,/usr/bin/wvdial,/sbin/iwconfig
neo   ALL=(root)    USERCOMMAND

18.8.4. NOPASSWD

ubuntu NOPASSWD sudo的时候不需要输入密码

%admin ALL=(ALL)ALL
改为
%admin ALL=(ALL) NOPASSWD: NOPASSWD: ALL
			

用户

www localhost=NOPASSWD: /bin/cat, /bin/ls
			

18.8.5. 允许或禁止命令

命令前面加‘!’可以禁止用户运行该命令

neo ALL = (root) /bin/mount, /bin/umount, !/bin/mount /data0
dba ALL = /bin/mount /u0[1-5], /bin/umount /u0[1-5]
			

18.8.6. Cmnd_Alias 用法

Cmnd_Alias 定义命令别名

Cmnd_Alias WEBMASTER = /srv/nginx/sbin/nginx, /srv/php/sbin/php-fpm, !/srv/mysql/bin/mysql
www localhost = NETWORKING, SERVICES, DELEGATING, PROCESSES, WEBMASTER
			

自定义用户组(以所有的身份)执行自定义的命令链里的命令

Cmnd_Alias USERCOMMAND = /sbin/route,/sbin/ifconfig,/bin/ping,/usr/sbin/mtr,/bin/traceroute,/usr/bin/top,/bin/df,/usr/bin/free,/usr/bin/du,/bin/ls,/bin/date,/usr/bin/less
User_Alias    ADMINS = user1, user2
ADMINS	ALL=(ALL)	USERCOMMAND
			

18.8.7. wheel 组

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
neo     ALL=(ALL)       ALL
%wheel  ALL=(ALL)       ALL
			

18.8.8. 注意事项

1 修改sudo记录密码的时间

Defaults:用户名 timestamp_timeout=20
eg:
Defaults:redhat timestamp_timeout=20

2 默认sudo命令只能在tty上执行,注释掉下面选项可以使程序调用sudo命令

Defaults    requiretty
		

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

时间: 2024-10-15 17:37:20

18.8. sudo, sudoedit - execute a command as another user的相关文章

29.13. parallel - build and execute shell command lines from standard input in parallel

并行执行shell命令 $ sudo apt-get install parallel 例 29.5. parallel - build and execute shell command lines from standard input in parallel $ cat *.csv | parallel --pipe grep '13113' 设置块大小 $ cat *.csv | parallel --block 10M --pipe grep '131136688' 原文出处:Netk

7.13. parallel - build and execute shell command lines from standard input in parallel

并行执行shell命令 $ sudo apt-get install parallel 例 7.5. parallel - build and execute shell command lines from standard input in parallel $ cat *.csv | parallel --pipe grep '13113' 设置块大小 $ cat *.csv | parallel --block 10M --pipe grep '131136688' 原文出处:Netki

详细说明 linux sudo 不要密码

网上有很多关于linux sudo不要输密码的网页,基本上都是大同小异.我看了一些,感觉说的都不是很清楚.下面就如何实现linux 普通用户 sudo 时不要输入密码,详细说明一下.   一,如果是个人电脑只是为了玩一玩,学学linux,sudo 时可以把输入密码去掉,老是输入密码挺烦人的. 如果是服务器就不要这样做了,太不安全了 . 二,普通用户登录后,先查看一下这个用户属于哪些组. zhangy@ubuntu:~$ groups adm dialout cdrom sudo plugdev

ubuntu下新增一个用户以及拥有sudo权限方法

1:增加一个swift用户: sudo useradd -mk /home/swift -s/bin/bash swift 为swift用户添加密码: sudo passwd swift 2:删除一个用户: userdel swift 3:设置ROOT密码方法: sudo passwd root,然后输入密码即可!     //此方法仅针对root密码尚未设置的情况下 修改root密码的方法:sudo passwd root 进入root状态.命令: su root 然后输入你设置好的密码就OK

Ubuntu系统给用户添加sudo权限的方法

1.添加用户组 hadoop addgroup hadoop 2.创建用户并将其添加到刚才创建到hadoop组中 $ adduser --ingroup hadoop hadoop 3.编辑 /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # dire

Ubuntu给普通用户sudo执行权限配置

sudo是linux下常用的允许普通用户使用超级用户权限的工具.默认Ubuntu关闭root登陆,用户可以通过sudo -i切换到root .如果只允许www用户重启apache服务,那么可以通过配置/etc/sudoers实现.下面一起修改后就可以实现这个要求. 修改/etc/sudoers可以使用visudo编辑,好处是如果规则写的不符合要求他能提示你,坏处是调出的是nano编辑器,甚为不顺手.这个看个人喜好,我用visudo -f /etc/sudoers 打开配置. 首先看下Ubuntu

Linux用户以及权限相关常用命令总结

一.查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gid是primary group ID,是主要的组的id.当然这个用户也可以属于其他更多的组. 用户账户信息被定义在 /etc/passwd文件中,组信息被定义在/etc/group文件中. 二.chmod 命令名称:chmod 命令英文原意:change the permissions mode of a file 命令所在路

在LINUX上创建GIT服务器【转】

转自:http://blog.csdn.net/xiongmc/article/details/9176785 如果使用git的人数较少,可以使用下面的步骤快速部署一个git服务器环境. 1. Client生成 SSH 公钥,以便Server端识别. 每个需要使用git服务器的工程师,自己需要生成一个ssh公钥 进入自己的~/.ssh目录,看有没有用 文件名 和 文件名.pub 来命名的一对文件,这个 文件名 通常是 id_dsa 或者 id_rsa. .pub 文件是公钥,另一个文件是密钥.假

Android shell command execute Demo

1 package com.android.utils; 2 3 4 import java.io.File; 5 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.util.ArrayList; 9 import java.util.List; 10 11 /** 12 * 本类主要用于在Java层执行Linux shell命令,获取一些系统下的信息 13 * 本例中的dmesg需要一些额外的权限