导航:首页 > 程序命令 > visudo命令

visudo命令

发布时间:2023-01-18 10:16:29

A. Sudo的用法和Visudo设置

身为程序员,你可以活在一个没有Windows的世界,当你离不开Unix(linux,Mac。。。)。而在Unix下面,你离不开terminal,离不开sudo。

你知道sudo command,然后输入密码,就可以以root的身份执行command。如果接触的更多一点,你或许知道sudo给你的权限不是自动给你的。如果你在一个Linux系统上增加了一个用户,你需要先以root的身份做一些设置,然后才能执行sudo命令

这些设置,就是运行visudo,它会打开一个文件,然后我们在里面添加一些东西,这个过程很简单,因为这个文件的内容不多,而且有注释,而而且还有范例,你只需要一行,然后把“root”改成你想要添加的那个用户名就可以了。

然而,里面的东西其实看着很奇怪,我们要添加的那一行看起来大概是这样的:

`chris ALL=(ALL:ALL) ALL`

上面的内容取自Ubuntu 12.04,其他Unix平台内容也是类似的。其中“chris”是用户名,后面跟着好几个“ALL”,是干吗用的呢?

以前我一直都是实用主义,解决了一个问题,那就可以了,很少去想“为什么”,最近发现,如果如果一直是这样,其实不大好,知其然要知其所以然。当然,如果无穷无尽的去最求所以然,那就成了科学研究了,所以中间要有个度。

出于这个考虑,今天就看了一下这个visudo,看看究竟是什么东东。

前面说了,visudo其实是打开一个文件,让你编辑这个文件的内容,这个文件就是/etc/sudoers,用的编辑器默认是vi。你可以用任何编辑器打开编辑它。那么问题来了,为什么不用直接打开这个文件然后编辑其中的内容呢?根据visudo的使用说明,如果你用visudo来编辑这个文件,那么它会帮你自动做很多事情,比如说语法检查,加锁防止别人同时修改这个文件等等,所以,强烈建议用户使用visudo,强烈谴责用户直接修改这个文件。

下面,我们就运行这个命令,看看里面有什么东西:

以#开头的行都是注释,所以前面8行都是注释,第一行注释也说清楚了,这个文件必须用visudo来编辑。

第九行Default  env_reset 表示重置(就是去除)用户定义的环境变量,也就是说,当你用sudo执行一个命令的时候,你当前用户设置的所有环境变量都是无效的。比如说,你的home目录下面有一个bin文件夹,这个文件夹里面有一些可执行文件,你把这个文件夹加到Path环境变量里。正常情况下,你可以在任何地方直接执行这个文件夹里面的命令。但是你用so执行这个文件夹里面的命令时,shell会提醒你"command not found". 那是因为当你用sudo执行一个命令时,你当前用户设置的path环境变量已经失效了。

下面的

root  ALL=(ALL:ALL)  ALL

就是我们前面提到的ALL。在下面一行

zouchuang  ALL=(ALL:ALL) ALL

就是我们创建了一个新用户(在这里,这个新用户名字叫zouchuang),需要添加的这一行。

其中zouchuang是用户名,接下来的第一个ALL,表示"From ALL hosts"(所有主机), 意思是,zouchuang从任何机器登录,都可以应用接下来的规则。

第二个ALL,表示“run as All user”,这个的意思是,zouchuang可以以任何用户的身份运行一些命令。第三个ALL,表示“run as All groups”,它的意思是,zouchuang可以以任何用户组的身份运行一些命令。运行那些命令呢?这就是第四个ALL的意思了,这表示前面的规定适用于任何命令。总结起来,这四个ALL的含义就是,zouchuang这个用户可以从任何机器登录,以任何用户和用户组的身份运行任何命令。

这四个ALL都可以用其他值来代替,比如,可以将第一个ALL改成本地局域网,或某些特定的网段,这样的话,用户在其他机器上登陆以后,就无法使用sudo命令了。

第二个和第三个ALL是可选的,如果省略,则默认为root用户,也就是说,可以这样写:

zouchuang ALL= ALL,表示zouchuang可以从任何host登录,然后以root身份运行任何命令。

接下来下面这一行

%admin ALL=(All) ALL

表示这是用户组的权限,以%开头,admin是用户组的名字,接下来的几个ALL表示的含义跟前面所述的一样,其中第二个ALL表示“All users” 而不是“All groups”。

这就是这个sudoers文件中基本设置语句的含义,关于sudoers的用法太多了,这里先介绍到这里,希望以后能补上其他的一些。因为我发现写一篇文章所需要的时间太长了呜呜呜。。。

B. centos6.7怎么修改权限

敲入命令:
sudo mkdir xxx
希望在普通用户下,通过sudo命令,让用户暂时拥有root权限,并创建一个文件夹。
很明显,失败了,错误原因是:该用户暂没有root权限
步骤阅读
2
敲入命令:
su
该命令可以让我们切换到root用户
步骤阅读
3
敲入命令:
visudo
visudo命令是用来编辑修改/etc/sudoers配置文件
步骤阅读
4
入下图所示,打开sudoers文件
步骤阅读
5
找到如下图所示,标出红线的一行
root ALL=(ALL) ALL
步骤阅读
6
在“root ALL=(ALL) ALL”这一行下面,再加入一行:
xulei ALL=(ALL) ALL
其中,xulei为你当前使用的用户名,也就是普通用户的用户名
步骤阅读
7
保存之后,输入exit,退出root用户
步骤阅读
8
此时,再次输入命令:sudo mkdir xxx之后,可以发现,xxx文件夹建立成功,该文件夹是以root权限创建的
步骤阅读
9
好啦,结束啦。下图是所有的命令的集合,在这里截个图!

C. linux设置sudo权限

Linux用户配置sudo的工作过程如下:
1,当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
2,确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
3,若密码输入成功,则开始执行sudo后续的命令
4,root执行sudo时不需要输入密码(eudoers文件中有配置root ALL=(ALL) ALL这样一条规则)
5,若欲切换的身份与执行者的身份相同,也不需要输入密码
visudo使用vi打开/etc/sudoers文件,但是在保存退出时,visudo会检查内部语法,避免用户输入错误信息
visudo需要root权限
[Hadoop@localhost ~]$ visudo
visudo:/etc/sudoers:权限不够
visudo:/etc/sudoers:权限不够
使用visudo命令打开sudo配置文件
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
## 该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或
## 用户组所使用
##
## This file must be edited with the 'visudo' command.
## 该文件必须使用"visudo"命令编辑
## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcards for entire domains) or IP addresses instead.
## 对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符)
## 、或IP地址,这时可以配置主机别名
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2
## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
## 这并不很常用,因为你可以通过使用组来代替一组用户的别名
# User_Alias ADMINS = jsmith, mikem
## Command Aliases
## These are groups of related commands...
## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权限,
## 可以通过sudo调用所有别名包含的命令,下面是一些示例
## Networking 网络操作相关命令别名
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient
, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig
, /sbin/mii-tool
## Installation and management of software 软件安装管理相关命令别名
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services 服务相关命令别名
# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
## Updating the locate database 本地数据库升级命令别名
# Cmnd_Alias LOCATE = /usr/bin/updatedb
## Storage 磁盘操作相关命令别名
# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe
, /bin/mount, /bin/umount
## Delegating permissions 代理权限相关命令别名
# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
## Processes 进程相关命令别名
# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
## Drivers 驱动命令别名
# Cmnd_Alias DRIVERS = /sbin/modprobe
# Defaults specification
#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
# You have to run "ssh -t hostname sudo <cmd>".
# 一些环境变量的相关配置,具体情况可见man soers
Defaults requiretty
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享)
## Syntax(语法):
##
## user MACHINE=COMMANDS 用户 登录的主机=(可以变换的身份) 可以执行的命令
##
## The COMMANDS section may have other options added to it.
## 命令部分可以附带一些其它的选项
##
## Allow root to run any commands anywhere
## 允许root用户执行任意路径下的任意命令
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE
, DRIVERS
## Allows people in group wheel to run all commands
## 允许wheel用户组中的用户执行所有命令
%wheel ALL=(ALL) ALL
## Same thing without a password
## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
## 允许users用户组中的用户关闭localhost这台服务器
# %users localhost=/sbin/shutdown -h now
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
## 读取放置在/etc/sudoers.d/文件夹中的文件(此处的#不意味着这是一个声明)
#includedir /etc/sudoers.d

D. Linux查看所有用户用什么命令

1、Linux里查看所有用户

(1)在终端里.其实只需要查看 /etc/passwd文件就行了.

(2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户.

或者用cat /etc/passwd |cut -f 1 -d :

2、用户管理命令

useradd :添加用户

adser :添加用户

passwd :为用户设置密码

usermod :修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;

pwcov :同步用户从/etc/passwd 到/etc/shadow

pwck :pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;

pwunconv :是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;

finger :查看用户信息工具

id :查看用户的UID、GID及所归属的用户组

chfn :更改用户信息工具

su :用户切换工具

sudo :sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;

visudo :visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;

sudoedit :和sudo 功能差不多;

3、管理用户组(group)的工具或命令;

groupadd :添加用户组;

groupdel :删除用户组;

groupmod :修改用户组信息

groups :显示用户所属的用户组

grpck

grpconv :通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;

grpunconv :通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件

(4)visudo命令扩展阅读:

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

(4)visudo命令扩展阅读:

linux-网络

阅读全文

与visudo命令相关的资料

热点内容
循环宏1命令 浏览:33
斐波那契数列矩阵算法 浏览:674
公式保护后加密不了 浏览:82
java跳转到jsp 浏览:819
327平方根算法 浏览:216
win7美化命令行终端 浏览:797
免加密狗图片 浏览:485
一只透明的鸟是什么app 浏览:817
空气压缩机油批发商 浏览:69
linuxifexist 浏览:4
加密tf卡拷入文件 浏览:399
山西php工资 浏览:673
福州看病预约用什么小程序app 浏览:238
php保留两位小数不四舍五入 浏览:292
黑马程序员路径大全 浏览:1000
saas平台PHP 浏览:333
云服务器科学计算配置怎么选 浏览:649
jar解压命令 浏览:609
php正则问号 浏览:299
无线已加密不可上网是怎么了 浏览:466