visudo精确用户赋权(sudo)
- 格式:doc
- 大小:83.00 KB
- 文档页数:4
如何在Linux环境为⽤户添加sudo权限sudo的配置⽂件sudo默认配置⽂件是**/etc/sudoers** ,⼀般使⽤Linux指定编辑⼯具visudo ,此⼯具的好处是可以进⾏错误检查。
在添加规则不符合语法规则时,保存退出时会提⽰给我们错误信息;配置好后,可以⽤切换到您授权的普通⽤户下,通过sudo -l来查看哪些命令是可以执⾏的或禁⽌的;/etc/sudoers ⽂件中每⾏是⼀个规则,前⾯带有#号可以当作是注释的内容,并不执⾏;如果规则很长,可以写在多列上,可以⽤\号来续⾏。
/etc/sudoers 的规则可分为两类;⼀类是授权规则,另⼀类是别名定义;别名定义并不是必须的,但授权规则是必须的;进⼊root⽤户,打开sudoers⽂件## 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_resetDefaults mail_badpassDefaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"# Host alias specification# User alias specification# Cmnd alias specification# User privilege specificationroot ALL=(ALL:ALL) ALL# Allow members of group sudo to execute any command%sudo ALL=(ALL:ALL) ALL# See sudoers(5) for more information on "#include" directives:#includedir /etc/sudoers.d实例1:普通⽤户lin添加sudo权限,在“root ALL=(ALL)ALL”这⼀⾏下⾯,加⼊如下图所⽰的⼀⾏(⽤户名 ALL=(ALL) ALL),并保存。
sudo命令的功能
sudo命令是一个非常有用的Linux命令,它允许您以root管理员身份执行命令。
在本文中,我们将介绍sudo命令的功能和用法。
1. sudo命令的核心功能
sudo命令允许普通用户以root管理员身份执行命令。
这对于那些需要执行需要root权限的任务的普通用户非常有用。
2. sudo命令的语法
sudo命令的语法非常简单,其基本格式如下:sudo [选项] 命令
其中,[选项]表示可选的命令选项,命令表示要执行的命令。
3. sudo命令的选项
sudo命令支持许多选项,这些选项可以使您更好地控制sudo命令的行为。
以下是一些常用选项:
- -u:指定执行命令的用户。
- -i:以执行命令的用户的环境变量来执行命令。
- -v:重新验证sudo密码。
4. sudo命令的使用示例
以下是一些常用的sudo命令的用法示例:
- 以root管理员身份打开文件:sudo vim /etc/hosts
- 安装软件包:sudo apt-get install software
- 更改权限:sudo chmod 777 file
5. 注意事项
在使用sudo命令时,您需要确保输入正确的密码。
此外,使用sudo
命令时应该非常谨慎,因为您的命令将以root管理员身份执行。
因此,操作不当可能会造成严重的后果。
总结
sudo命令是一个强大且有用的工具,它允许普通用户以root管理员身份执行命令。
遵循本文提供的提示,您可以以安全且有效的方式使用sudo命令。
Linux命令行中的高级用户权限管理技巧Linux作为一个开源操作系统,以其稳定性和灵活性受到广泛关注。
对于使用Linux命令行的高级用户来说,权限管理是一项非常重要的任务。
本文将介绍一些在Linux命令行中使用的高级用户权限管理技巧,帮助您更好地控制和管理系统中的用户权限。
一、用户和组的管理在Linux系统中,用户和组是权限控制的基本单位。
以下是一些常用的用户和组管理命令:1. useradd:创建新用户。
使用该命令可以创建一个新的用户账号,并可以指定其所属的用户组。
2. groupadd:创建新的用户组。
使用该命令可以创建一个新的用户组,并设置相关的属性。
3. usermod:修改用户属性。
使用该命令可以修改用户的相关属性,如用户名、用户组、密码等。
4. userdel:删除用户。
使用该命令可以删除指定的用户账号及其相关的文件。
5. groupmod:修改用户组属性。
使用该命令可以修改用户组的相关属性,如用户组名、用户组ID等。
6. groupdel:删除用户组。
使用该命令可以删除指定的用户组及其相关的文件。
二、文件和目录权限管理在Linux系统中,每个文件和目录都有一组权限,用于控制用户对其的读、写、执行等操作。
以下是一些常用的文件和目录权限管理命令:1. chmod:修改权限。
使用该命令可以修改文件或目录的权限。
-r:递归修改权限,包括子目录中的文件和目录。
-R:同-r,效果一样。
u:表示用户的权限。
g:表示用户组的权限。
o:表示其他用户的权限。
+:增加权限。
-:取消权限。
=:设置权限。
示例:chmod u+rwx file.txtchmod g+rw directory2. chown:修改文件或目录的所有者。
使用该命令可以修改文件或目录的所有者为指定的用户。
示例:chown user file.txtchown user:group directory3. chgrp:修改文件或目录的组。
Linux系统如何添加普通⽤户到sudoers⽂件前⾔Linux 的普通⽤户(uid >= 500)不具有某些命令的执⾏权限,为了执⾏较⾼权限的命令,⼀般有两种⽅法:第⼀种是使⽤su -命令切换到 root ⽤户去执⾏;另外⼀种⽅法是在命令前添加 sudo 去执⾏。
编辑⽂件在使⽤ sudo 执⾏命令之前,需要把当前普通⽤户添加到 sudoers ⽂件:1. 切换到 root ⽤户,使⽤命令 visudo 进⼊ vim ,看到它已打开了 /etc/sudoers ⽂件。
2. 输⼊ "/root" 搜索,找到 "root ALL=(ALL) ALL" 这⾏,按 "yyp" 键得到⼀⾏拷贝,修改为"username ALL=(ALL) ALL","username" 是要添加的⽤户名。
(如果在使⽤ sudo 时不想输⼊⽤户密码,请修改为"username ALL=(ALL) NOPASSWD:ALL")3. :x 保存退出。
PS:下⾯看下【Debian】将普通⽤户添加到sudoerLinux默认是没有将⽤户添加到sudoers列表中的,需要root⼿动将账户添加到sudoers列表中,才能让普通账户执⾏sudo命令。
root 账户键⼊visudo即可进⼊sudo配置,这个命令要⽐vim/etc/sudoers要好很多,因为使⽤visudo进⾏sudo配置,将会得到很多提⽰.键⼊visudo后,在编辑器下键⼊ /root寻找root,找到第三个root的那⼀⾏root ALL=(ALL) ALL按yyp键复制并在粘贴在下⼀⾏,在这⼀⾏的root处输⼊cw将root替换为你所需要添加⽤户的账户名,⽐如Blinux,结果就是root ALL=(ALL) ALLblinux ALL=(ALL) ALL如果你希望之后执⾏sudo命令时不需要输⼊密码,那么可以形如root ALL=(ALL) ALLblinux ALL=(ALL) NOPASSWD:ALL输⼊:wq保存即可。
sudoers⽂件解析分类: LINUX今天在⽤户组中新加了⼀个普通⽤户,开始这个⽤户没有sudo权限,于是通过sudo visudo修改了sudo的配置⽂件,赋予了普通⽤户的root权限。
后来想着能不能将/etc/sudoers⽂件的访问权限改为777,然后直接在编辑这个⽂件。
于是想也没想就这么⼲了。
结果改完之后发现⾃⼰给⾃⼰挖了⼀个坑,把⾃⼰挡在了sudo的门外。
/etc/sudoers是sudo的配置⽂件,它的属性必需为440。
当我⽤sudo chmod 777 /etc/sudoers修改了sudoers⽂件的访问权限后,sudo就不能再⽤了。
再想通过sudo chmod 440 /etc/sudoers修改⽂件sudoers的访问权限,或着使⽤sudo 时结果提⽰:sudo: /etc/sudoers is mode 0777, should be 0440。
这样就⾃⼰把⾃⼰关在了sudo的门外。
这样想通过sudo su或sudo -i切到root⽤户已经不可能了。
这时⽤su root还可以切换到root。
这样就可以修改/etc/sudoers⽂件的访问权限。
问题也就解决了。
后来在⽹上找到⼀篇关于sudoers⽂件的解析,这⾥就贴在下边。
Sudo是允许系统管理员让普通⽤户执⾏⼀些或者全部的root命令的⼀个⼯具,如halt,reboot,su等等。
这样不仅减少了root⽤户的登陆和管理时间,同样也提⾼了安全性。
Sudo不是对shell的⼀个代替,它是⾯向每个命令的。
它的特性主要有这样⼏点:§ Sudo能够限制⽤户只在某台主机上运⾏某些命令。
§ Sudo提供了丰富的⽇志,详细地记录了每个⽤户⼲了什么。
它能够将⽇志传到中⼼主机或者⽇志服务器。
§ Sudo使⽤时间戳⽂件来执⾏类似的“检票”系统。
当⽤户调⽤sudo并且输⼊它的密码时,⽤户获得了⼀张存活期为5分钟的票(这个值可以在编译的时候改变)。
sudo的⽤法sudo的存在意义在linux系统下,普通⽤户⽆法直接执⾏root⽤户权限下的命令,如果想让普通⽤户执⾏只有root⽤户才能执⾏的操作命令,就需要⽤到sudo。
下⾯罗列下经常使⽤sudo命令的⼏个场景:# 授权普通⽤户执⾏root指令普通⽤户登录 shell 之后,如果⾃⾝没有权限访问某个⽂件或执⾏某个命令时,若该⽤户获得root授权,那么就可以在需要执⾏的命令之前加上 sudo,临时切换到root⽤户的权限,完成相关的操作。
在sudo于1980年前后被写出之前,⼀般⽤户管理系统的⽅式是利⽤su切换为超级⽤户。
但是使⽤su的缺点之⼀在于必须要先告知超级⽤户的密码,⽽sudo使⼀般⽤户不需要知道超级⽤户的密码即可获得权限。
那么哪些⽤户可以临时获得root权限呢?这就需要在/etc/sudoers⽂件中进⾏配置(或者直接使⽤visudo命令,不过只能在root⽤户下执⾏):[root@test-huanqiu ~]# visudo.....# User privilege specificationzhangj ALL=(ALL) ALL参数解释:1)第⼀个字段zhangj指定的是⽤户:可以是⽤户名,也可以是别名。
每个⽤户设置⼀⾏,多个⽤户设置多⾏,也可以将多个⽤户设置成⼀个别名后再进⾏设置。
2)第⼆个字段ALL指定的是⽤户所在的主机:可以是ip,也可以是主机名,表⽰这个sudo设置后的⽂件即/etc/sudoers只在这个主机上⽣效,ALL表⽰在所有主机上都⽣效!限制的⼀般都是本机,也就是限制使⽤这个⽂件的主机;如果指定为"192.168.1.88"表⽰这个⽂件只有在这台主机上⽣效,如果拷贝到别的机⼦上是不起作⽤的!⼀般都指定为"ALL"表⽰所有的主机,不管⽂件拷到那⾥都可以⽤。
3)第三个字段(ALL)括号⾥指定的也是⽤户:指定以什么⽤户⾝份执⾏sudo,即使⽤sudo后可以享有所有账号下的权限。
linux 中不输入密码运行 sudo 命令的方法(原创版3篇)目录(篇1)1.linux 中不输入密码运行 sudo 命令的方法2.方法一:使用 visudo 编辑器修改 sudo 配置文件3.方法二:使用 configuser 工具4.方法三:使用ypassword策略5.方法四:使用su-exec工具6.方法五:使用 sudoers.d 目录7.方法六:使用setroubleshoot工具8.方法七:使用sudoer.conf文件9.方法八:使用sudoers文件10.方法九:使用visudo编辑器修改sudoers文件11.方法十:使用sudoers.d目录下的配置文件正文(篇1)linux 中不输入密码运行 sudo 命令的方法有很多种,下面介绍其中几种常用的方法。
方法一:使用 visudo 编辑器修改 sudo 配置文件在 /etc/sudoers 文件中添加一行: Defaults password_deny=0,然后保存文件并关闭。
这样,在运行 sudo 命令时就不需要输入密码了。
方法二:使用 configuser 工具在终端中输入以下命令,根据提示输入用户名和密码即可自动配置。
完成后,在运行 sudo 命令时就不需要输入密码了。
configuser username password方法三:使用ypassword策略在终端中输入以下命令,根据提示输入用户名和密码即可自动配置。
完成后,在运行 sudo 命令时就不需要输入密码了。
ypassword username password方法四:使用su-exec工具在 /etc/sudoers 文件中添加一行: Defaults exec_shell=su-exec,然后保存文件并关闭。
这样,在运行 sudo 命令时就可以直接执行 su 命令,而不需要输入密码了。
方法五:使用 sudoers.d 目录在 /etc/sudoers.d 目录下创建一个新的文件,文件名格式为“username”,其中 username 为当前用户名。
给linux新建的⽤户添加sudo权限
给linux新建的⽤户添加sudo权限
1. 新建⽤户使⽤useradd (linux中有两个添加⽤户的命令,另⼀个是adduser,在Slackware中,adduser指令是个script程序,利⽤交谈的⽅
式取得输⼊的⽤户帐号资料,然后再交由真正建⽴帐号的useradd命令建⽴新⽤户,如此可⽅便管理员建⽴⽤户帐号。
在Red Hat Linux中, adduser命令则是useradd命令的符号连接,两者实际上是同⼀个指令)
useradd ⽤户名
2. 给⽤户设置密码
passwd ⽤户名
3. 切换到root⽤户后编辑/etc/sudoers⽂件
注意:sudoers⽂件默认没有write权限,包括root⽤户也没有写权限,可以使⽤chmod加上写的权限,但是不建议这么做,linux为
sudoers⽂件专门留了⼀个命令:visudo,这个命令可以校验修改后的语法是否正确,当然这样没有⾼亮提⽰visudo
4. 编辑完成后即可切换到授权⽤户进⾏登录
# Allow root to run any commands anywhere
root ALL=(ALL) ALL
yx ALL=(ALL) ALL
加⼊的“yx ALL=(ALL) ALL”这⼀⾏代表的意思是,
yx这个⽤户(第⼀列)
可以从任何地⽅登录后(第⼆列的ALL)
执⾏任何⼈(第三列的ALL)
的任何命令(第四列的ALL)。
还可以定义某⼀个组的sudo权限,
⽐如“%yx ALL=(ALL) ALL”可以让所有属于yx⽤户组的⽤户从任何地⽅登录后执⾏任何⼈的任何命令。
visudo与/etc/sudoers从上面的说明我们可以知道,除了root 之外的其他账号,若想要使用sudo 执行属于root 的权限指令,则root 需要先使用visudo 去修改/etc/sudoers ,让该账号能够使用全部或部分的root 指令功能。
为什么要使用visudo 呢?这是因为/etc/sudoers 是有设定语法的,如果设定错误那会造成无法使用sudo 指令的不良后果。
因此才会使用visudo 去修改,并在结束离开修改画面时,系统会去检验/etc/sudoers 的语法就是了。
一般来说,visudo 的设定方式有几种简单的方法喔,底下我们以几个简单的例子来分别说明:I. 单一用户可进行root 所有指令,与sudoers 文件语法:假如我们要让vbird1 这个账号可以使用root 的任何指令,基本上有两种作法,第一种是直接透过修改/etc/sudoers ,方法如下:[root@study ~]# visudo....(前面省略)....root ALL=(ALL) ALL <==找到这一行,大约在98 行左右vbird1 ALL=(ALL) ALL <==这一行是你要新增的!....(底下省略)....有趣吧!其实visudo 只是利用vi 将/etc/sudoers 文件呼叫出来进行修改而已,所以这个文件就是/etc/sudoers 啦!这个文件的设定其实很简单,如上面所示,如果你找到98 行(有root 设定的那行) 左右,看到的数据就是:使用者账号登入者的来源主机名=(可切换的身份) 可下达的指令root ALL=(ALL) ALL <==这是默认值上面这一行的四个组件意义是:1.『使用者账号』:系统的哪个账号可以使用sudo 这个指令的意思;2.『登入者的来源主机名』:当这个账号由哪部主机联机到本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权限[plain]view plaincopy1.[hadoop@localhost ~]$ visudo2.visudo:/etc/sudoers:权限不够3.visudo:/etc/sudoers:权限不够使用visudo命令打开sudo配置文件[plain]view plaincopy1.## Sudoers allows particular users to run various commands as2.## the root user, without needing the root password.3.## 该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码4.##5.## Examples are provided at the bottom of the file for collections6.## of related commands, which can then be delegated out to particular7.## users or groups.8.## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或9.## 用户组所使用10.##11.## This file must be edited with the 'visudo' command.12.## 该文件必须使用"visudo"命令编辑13.14.## Host Aliases15.## Groups of machines. You may prefer to use hostnames (perhaps using16.## wildcards for entire domains) or IP addresses instead.17.## 对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符)18.## 、或IP地址,这时可以配置主机别名19.# Host_Alias FILESERVERS = fs1, fs220.# Host_Alias MAILSERVERS = smtp, smtp221.22.## User Aliases23.## These aren't often necessary, as you can use regular groups24.## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname25.## rather than USERALIAS26.## 这并不很常用,因为你可以通过使用组来代替一组用户的别名27.# User_Alias ADMINS = jsmith, mikem28.29.## Command Aliases30.## These are groups of related commands...31.## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权限,32.## 可以通过sudo调用所有别名包含的命令,下面是一些示例33.34.## Networking 网络操作相关命令别名35.# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient36., /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig37., /sbin/mii-tool38.39.## Installation and management of software 软件安装管理相关命令别名40.# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum41.42.## Services 服务相关命令别名43.# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig44.45.## Updating the locate database 本地数据库升级命令别名46.# Cmnd_Alias LOCATE = /usr/bin/updatedb47.48.## Storage 磁盘操作相关命令别名49.# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe50., /bin/mount, /bin/umount51.52.## Delegating permissions 代理权限相关命令别名53.# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp54.55.## Processes 进程相关命令别名56.# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall57.58.## Drivers 驱动命令别名59.# Cmnd_Alias DRIVERS = /sbin/modprobe60.61.# Defaults specification62.63.#64.# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.65.# You have to run "ssh -t hostname sudo <cmd>".66.# 一些环境变量的相关配置,具体情况可见man soduers67.Defaults requiretty68.69.Defaults env_reset70.Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"71.Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"72.Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"73.Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"74.Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"75.76.Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin77.78.## Next comes the main part: which users can run what software on79.## which machines (the sudoers file can be shared between multiple80.## systems).81.## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享)82.## Syntax(语法):83.##84.## user MACHINE=COMMANDS 用户登录的主机=(可以变换的身份)可以执行的命令85.##86.## The COMMANDS section may have other options added to it.87.## 命令部分可以附带一些其它的选项88.##89.## Allow root to run any commands anywhere90.## 允许root用户执行任意路径下的任意命令91.root ALL=(ALL) ALL92.93.## Allows members of the 'sys' group to run networking, software,94.## service management apps and more.95.## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令96.# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES,LOCATE97., DRIVERS98.99.## Allows people in group wheel to run all commands100.## 允许wheel用户组中的用户执行所有命令101.%wheel ALL=(ALL) ALL102.103.## Same thing without a password104.## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令105.# %wheel ALL=(ALL) NOPASSWD: ALL106.107.## Allows members of the users group to mount and unmount the108.## cdrom as root109.## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令110.# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom111.112.## Allows members of the users group to shutdown this system113.## 允许users用户组中的用户关闭localhost这台服务器114.# %users localhost=/sbin/shutdown -h now115.116.## Read drop-in files from /etc/sudoers.d (the # here does not mean a comme nt)117.## 读取放置在/etc/sudoers.d/文件夹中的文件(此处的#不意味着这是一个声明)118.#includedir /etc/sudoers.d。