/etc/sudoers 添加用户nopasswd的权限
时间: 2023-06-29 07:20:50 浏览: 113
要为用户添加在执行sudo命令时无需输入密码的权限,可以按照以下步骤进行操作:
1. 以root用户身份打开终端,执行以下命令打开sudoers文件:
```
visudo
```
2. 在sudoers文件中找到类似下面的一行:
```
%sudo ALL=(ALL:ALL) ALL
```
这一行表示允许sudo组中的所有用户执行sudo命令,并需要输入密码。
3. 在该行下面添加一行,例如:
```
nopasswduser ALL=(ALL) NOPASSWD: ALL
```
其中,`nopasswduser` 是要授予权限的用户名。该行表示允许该用户执行sudo命令时无需输入密码。
4. 保存并退出sudoers文件。
注意事项:
- 编辑sudoers文件时必须使用visudo命令,避免在编辑过程中出现语法错误。
- 在sudoers文件中添加行时必须遵循特定的格式,否则可能会导致sudo命令无法正常执行。
- 在添加nopasswd权限时必须非常小心,以免给系统带来安全风险。建议只为必需的用户授权,且限制授权的范围。
相关问题
linux 、etc/sudoers
回答: 在Linux系统中,/etc/sudoers是一个重要的配置文件,它定义了哪些用户可以以root用户的身份执行特权命令。\[1\]推荐的做法是通过修改/etc/sudoers.d目录下的文件来修改sudoers。你可以在/etc/sudoers文件的最后一行添加"#includedir /etc/sudoers.d"来引入该目录下的文件。\[1\]这样,你可以使用sudo命令以root用户的身份执行一些只有root用户才有权限执行的命令。比如,你可以使用"sudo -u root cat /etc/sudoers"命令来查看/etc/sudoers文件的内容。\[2\]如果你想让一个新建的用户获得root权限,你可以在/etc/sudoers.d目录下创建一个文件,比如"userhyc",并在其中输入"hyc ALL=(ALL:ALL) NOPASSWD:ALL"这样的语句。这样,新建的用户就能够获取root权限了。\[3\]
#### 引用[.reference_title]
- *1* *3* [Linux中/etc/sudoers文件](https://blog.csdn.net/Hyc_cheng/article/details/116357793)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [【Linux】让渡用户权限(/etc/sudoers)](https://blog.csdn.net/qq_42951560/article/details/125193738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
逐条注释 ``` getenforce setenforce 0 cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.old.service sed -i -e 's/^Type=.*/Type=simple/g' -e '/ExecStart=/{s/\/usr\/sbin\/sshd/\/usr\/local\/sbin\/sshd/g}' /usr/lib/systemd/system/sshd.service sed -i "s/GSSAPIAuthentication/#GSSAPIAuthentication/" /etc/ssh/sshd_config sed -i "s/GSSAPICleanupCredentials/#GSSAPICleanupCredentials/" /etc/ssh/sshd_config sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/" /etc/ssh/sshd_config sed -i "s/#UsePAM yes/UsePAM yes/" /etc/ssh/sshd_config chmod 600 /etc/ssh/ssh_host_rsa_key chmod 600 /etc/ssh/ssh_host_ecdsa_key chmod 600 /etc/ssh/ssh_host_ed25519_key mv /usr/local/sbin/sshd /usr/local/sbin/sshd.old202211 mv /lib64/libcrypto.so.1.1 /lib64/libcrypto.so.1.1.old202211 mv /srv/libcrypto.so.1.1 /lib64/ mv /srv/sshd /usr/local/sbin/ chmod 755 /usr/local/sbin/sshd chmod 755 /lib64/libcrypto.so.1.1 systemctl daemon-reload systemctl restart sshd.service source /etc/profile sshd -V useradd secure echo 'Ofm#6%3%fm0IWH'|passwd --stdin secure echo "secure ALL=(ALL) ALL" >> /etc/sudoers sed -i "s/PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_config service sshd restart systemctl daemon-reload systemctl restart sshd.service sed -i "s/secure ALL=(ALL) ALL/secure ALL=(ALL) NOPASSWD: ALL/" /etc/sudoers chage -M 99999 secure sleep 2 useradd aqassoc echo 'dAxgDt^7LT' | passwd --stdin aqassoc mkdir /batshell chown -R aqassoc:aqassoc /batshell echo 'aqassoc ALL=(ALL) NOPASSWD:ALL,!/bin/su,!/sbin/init,!/sbin/shutdown,!/sbin/halt,!/sbin/reboot,!/usr/sbin/visudo,!/usr/bin/passwd' >> /etc/sudoers sh /srv/script.sh sleep 2 tar -xvf /srv/ssl-1.1.1o* -C /srv/ mv /usr/bin/openssl /usr/bin/openssl.old mv /usr/include/openssl /usr/include/openssl.old cp /etc/ld.so.conf /etc/ld.so.conf.old ln -s /srv/ssl-1.1.1o/bin/openssl /usr/bin/openssl ln -s /srv/ssl-1.1.1o/include/openssl /usr/include/openssl srvlib=`cat /etc/ld.so.conf | grep '/srv/ssl-1.1.1o/lib/' | wc -l` if [ $srvlib -eq 0 ];then sed -i 's/\/srv/#\/srv/'g /etc/ld.so.conf echo '/srv/ssl-1.1.1o/lib/' >> /etc/ld.so.conf else echo 'ssl-1.1.1n is ok!' fi ldconfig -v |grep ssl openssl version rm -rf /srv/root_password.sh rm -rf /srv/ssl-1.1.1o_7.tar.gz curl --connect-timeout 10 -# http://133.64.86.246/iso/shell/initialization.sh -o /tmp/initialization.sh # 只有两个参数 dcn/dmz netbond/netskip baseline/baseskip sh /tmp/initialization.sh dcn netbond/netskip baseline/baseskip ```
以下是对每个命令的逐条注释:
```
getenforce
```
显示SELinux的执行模式。
```
setenforce 0
```
禁用SELinux。
```
cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.old.service
```
备份sshd.service文件。
```
sed -i -e 's/^Type=.*/Type=simple/g' -e '/ExecStart=/{s/\/usr\/sbin\/sshd/\/usr\/local\/sbin\/sshd/g}' /usr/lib/systemd/system/sshd.service
```
修改sshd.service文件中的Type和ExecStart路径。
```
sed -i "s/GSSAPIAuthentication/#GSSAPIAuthentication/" /etc/ssh/sshd_config
```
注释掉sshd_config文件中的GSSAPIAuthentication行。
```
sed -i "s/GSSAPICleanupCredentials/#GSSAPICleanupCredentials/" /etc/ssh/sshd_config
```
注释掉sshd_config文件中的GSSAPICleanupCredentials行。
```
sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/" /etc/ssh/sshd_config
```
取消注释sshd_config文件中的PermitRootLogin行。
```
sed -i "s/#UsePAM yes/UsePAM yes/" /etc/ssh/sshd_config
```
取消注释sshd_config文件中的UsePAM行。
```
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
```
设置ssh_host_rsa_key、ssh_host_ecdsa_key和ssh_host_ed25519_key文件的权限为600。
```
mv /usr/local/sbin/sshd /usr/local/sbin/sshd.old202211
mv /lib64/libcrypto.so.1.1 /lib64/libcrypto.so.1.1.old202211
mv /srv/libcrypto.so.1.1 /lib64/
mv /srv/sshd /usr/local/sbin/
chmod 755 /usr/local/sbin/sshd
chmod 755 /lib64/libcrypto.so.1.1
systemctl daemon-reload
systemctl restart sshd.service
```
备份并移动sshd和libcrypto.so.1.1文件,设置权限,并重新加载和重启sshd服务。
```
source /etc/profile
sshd -V
```
加载/etc/profile文件中的环境变量,并显示sshd的版本信息。
```
useradd secure
echo 'Ofm#6%3%fm0IWH'|passwd --stdin secure
echo "secure ALL=(ALL) ALL" >> /etc/sudoers
sed -i "s/PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_config
service sshd restart
systemctl daemon-reload
systemctl restart sshd.service
sed -i "s/secure ALL=(ALL) ALL/secure ALL=(ALL) NOPASSWD: ALL/" /etc/sudoers
chage -M 99999 secure
sleep 2
```
创建用户secure并设置密码,将用户secure加入sudoers文件,修改sshd_config文件以禁止root登录,重启sshd服务,并将用户secure的权限更改为无需输入密码执行任意命令,设置密码有效期限为99999天。
```
useradd aqassoc
echo 'dAxgDt^7LT' | passwd --stdin aqassoc
mkdir /batshell
chown -R aqassoc:aqassoc /batshell
echo 'aqassoc ALL=(ALL) NOPASSWD:ALL,!/bin/su,!/sbin/init,!/sbin/shutdown,!/sbin/halt,!/sbin/reboot,!/usr/sbin/visudo,!/usr/bin/passwd' >> /etc/sudoers
sh /srv/script.sh
sleep 2
```
创建用户aqassoc并设置密码,创建/batshell目录并设置所有权和组,将用户aqassoc加入sudoers文件,运行/srv/script.sh脚本,延迟2秒。
```
tar -xvf /srv/ssl-1.1.1o* -C /srv/
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
cp /etc/ld.so.conf /etc/ld.so.conf.old
ln -s /srv/ssl-1.1.1o/bin/openssl /usr/bin/openssl
ln -s /srv/ssl-1.1.1o/include/openssl /usr/include/openssl
srvlib=`cat /etc/ld.so.conf | grep '/srv/ssl-1.1.1o/lib/' | wc -l`
if [ $srvlib -eq 0 ];then
sed -i 's/\/srv/#\/srv/'g /etc/ld.so.conf
echo '/srv/ssl-1.1.1o/lib/' >> /etc/ld.so.conf
else
echo 'ssl-1.1.1n is ok!'
fi
ldconfig -v |grep ssl
openssl version
```
解压缩ssl-1.1.1o文件到/srv/目录,备份并移动openssl和openssl目录,备份和修改ld.so.conf文件,检查是否包含/srv/ssl-1.1.1o/lib/路径,刷新动态链接库缓存并显示包含"ssl"字符串的库,显示OpenSSL的版本信息。
```
rm -rf /srv/root_password.sh
rm -rf /srv/ssl-1.1.1o_7.tar.gz
curl --connect-timeout 10 -# http://133.64.86.246/iso/shell/initialization.sh -o /tmp/initialization.sh
```
删除/srv/root_password.sh和/srv/ssl-1.1.1o_7.tar.gz文件,并从指定URL下载initialization.sh脚本到/tmp/initialization.sh。
```
# 只有两个参数 dcn/dmz netbond/netskip baseline/baseskip
sh /tmp/initialization.sh dcn netbond/netskip baseline/baseskip
```
运行/tmp/initialization.sh脚本,并传递参数dcn、netbond/netskip和baseline/baseskip。