linux关机命令 您所在的位置:网站首页 linux定时关机命令是什么 linux关机命令

linux关机命令

2024-06-05 16:18| 来源: 网络整理| 查看: 265

linux关机命令

知识,本该纯粹真实。 不应为乱象而迷失,因避讳而藏掖。

linux关机命令有五个,分别如下:shutdown。poweroff。init。reboot。halt。

Crontab介绍:Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ?νο?),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台

Crontab介绍: Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ?νο?),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。当安装完成操作系统之后,默认便会启动此任务调度命令。crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。 注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。

yum install vixie-cron yum install crontabs 注:vixie-cron软件包是cron的主程序; crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。 cron是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务: /sbin/service crond start #启动服务 /sbin/service crond stop #关闭服务 /sbin/service crond restart #重启服务 /sbin/service crond reload #重新载入配置 service crond status ntsysv #查看crontab服务是否已设置为开机启动 chkconfig –level 35 crond on #加入开机自动启动 crontab -e #编辑cron任务模式 i #默认文字编辑器为vim,按i字母键即可添加cron任务 30 3 * * * /usr/local/etc/rc.d/lighttpd restart #将命令代码放入,此命令意义为每天的03:30 重启apache ESC #按ESC键退出编辑模式 :wq #键入:wq保存 service crond restart #重启crontab服务 crontab -l #每天的08:30 重启电脑 30 08 * * * /sbin/shutdown -r now (1)语  法: crontab [-u ][配置文件] 或 crontab { -l | -r | -e } -u # 是指设定指定的定时任务,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的定时任务。 -l  #列出该用户的定时任务设置。 -r  #删除该用户的定时任务设置。 -e  #编辑该用户的定时任务设置。 (2)命令时间格式 : * *   *  *  *  command 分  时  日  月  周  命令 第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令 (3)一些Crontab定时任务例子: 30 21 * * * /usr/local/etc/rc.d/lighttpd restart #每晚的21:30 重启apache 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart #每月1、10、22日的4 : 45重启apache 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart #每周六、周日的1 : 10重启apache 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart #每天18 : 00至23 : 00之间每隔30分钟重启apache 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart #每星期六的11 : 00 pm重启apache * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart #晚上11点到早上7点之间,每隔一小时重启apache * */1 * * * /usr/local/etc/rc.d/lighttpd restart #每一小时重启apache 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart #每月的4号与每周一到周三的11点重启apache 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart #一月一号的4点重启apache */30 * * * * /usr/sbin/ntpdate cn.pool.ntp.org #每半小时同步一下时间 0 */2 * * * /sbin/service httpd restart #每两个小时重启一次apache 50 7 * * * /sbin/service sshd start #每天7:50开启ssh服务 50 22 * * * /sbin/service sshd stop #每天22:50关闭ssh服务 0 0 1,15 * * fsck /home #每月1号和15号检查/home 磁盘 1 * * * * /home/bruce/backup #每小时的第一分执行 /home/bruce/backup这个文件 00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \; #每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。 30 6 */10 * * ls #每月的1、11、21、31日是的6:30执行一次ls命令 history查看历史操作记录,并显示操作时间 在查看历史的操作记录有两种方式 1.在用户的目录下的.bash_history文件中 [root@node1 ~]# vi ~/.bash_history reboot vi /etc/sysconfig/network-scripts/ifcfg-eth0 setup service netwok restart service network restart ping 192.168.11.70 vi /etc/hosts vi /etc/sysconfig/network df -h shutdown -h now exit su - highgo service iptables stop shutdown -h now 2.直接执行history命令 [root@node1 ~]# history 1 ll 2 rm -rf pgpool* 3 ll 4 tar -xvf postgresql-9.4.4.tar.gz 5 mkdir pgsql-9.4 6 mkdir -p pgsql/data 7 cls 8 ls 9 cd postgresql-9.4.4 10 ./configure --prefix=/opt/pgsql-9.4/ 11 make 12 make clean 这两种方式虽然能看到执行的命令,但是不能看出执行的时间,我们进行以下操作,让history能显示执行的时间 编辑/etc/bashrc文件,添加以下四行: HISTFILESIZE=2000 HISTSIZE=2000 HISTTIMEFORMAT='%F %T ' export HISTTIMEFORMAT [root@node1 ~]# vi /etc/bashrc [root@node1 ~]# source /etc/bashrc [root@node1 ~]# history 999 2017-03-23 16:14:29 shutdown -h now 1000 2017-03-23 16:14:34 history 1001 2017-03-23 16:21:56 vi /etc/bashrc 1002 2017-03-23 16:22:29 source /etc/bashrc 1003 2017-03-23 16:22:32 history 注:HISTFILESIZE定义了.bash_history中保存命令的总数,默认是1000,这里改成了2000,HISTSIZE设置了history命令输出最多的记录总数, HISTTIMEFORMAT定了时间显示格式。 以前的操作记录都会显示更改/etc/bashrc 文件的时间,而不是真正的操作时间,只有更改完/etc/bashrc以后的操作记录会显示正确的时间 1、查看当前登录用户信息 who命令: who缺省输出包括用户名、终端类型、登陆日期以及远程主机。 who /var/log/wtmp 可以查看自从wtmp文件创建以来的每一次登陆情况 (1)-b:查看系统最近一次启动时间 (2)-H:打印每列的标题 users命令: 打印当前登录的用户,每个显示的用户名对应一个登陆会话。 2、查看命令历史 每个用户都有一份命令历史记录 查看$HOME/.bash_history 或者在终端输入: history 3、last命令 查看用户登录历史 此命令会读取 /var/log/wtmp文件;/var/log/btmp可以显示远程登陆信息。 last默认打印所有用户的登陆信息。 如果想打印某个用户的登陆信息,可以使用 last 用户名 选项: (1)-x:显示系统开关机以及执行等级信息 (2)-a:将登陆ip显示在最后一行 (3)-f :读取特定文件,可以选择 -f /var/log/btmp文件 (4)-d:将IP地址转换为主机名 (5)-n:设置列出名单的显示列数 (6)-t:查看指定时间的用户登录历史 例如: last -t 20150226160404 显示这个时间戳之前的登陆历史 4、lastlog命令 查看所有用户最近一次登录历史 命令将读取/var/log/lastlog文件;用户排列顺序按照/etc/passwd中的顺序 选项: (1) -u:查看某个用户的最后一次登陆历史 例如: lastlog -u test 查看用户test的登陆历史 (2) -t:查看最近几天之内的用户登录历史 例如: lastlog -t 1 查看最近1天之内的登陆历史 (3) -b:查看指定天数之前的用户登录历史 例如: lastlog -b 60 查看60天之前的用户登录历史 5、ac命令 根据/var/log/wtmp文件中的登陆和退出时间报告用户连接的时间(小时),默认输出报告总时间 (1)-p:显示每个用户的连接时间 (2)-d:显示每天的连接时间 (3)-y:显示年份,和-d配合使用 history的历史记录,同一个用户的各个会话,读取到的内容也是不一样的,原因是它读取的是shell会话缓存里的内容。只有当用户退出当前会话的时候,会话里的缓存内容才会写入~/.bash_history里。 猜测:用户登录后,首先把~/.bash_history里的内容读入缓存,然后当前会话的命令执行记录,也写入缓存中,这样相同用户不同会话,读到的history内容是不一样的。 linux默认配置是当打开一个shell终端后,执行的所有命令均不会写入到~/.bash_history文件中,只有当前用户退出后才会写入,这期间发生的所有命令其它终端是感知不到的。 export HISTTIMEFORMAT="`whoami` : | %F | %T: | " 网管还应该在"/etc/skel/.bash_logout" 文件中添加下面这行"rm -f $HOME/.bash_history" 。这样,当用户每次注销时,“.bash_history”文件都会被删除. $HISTSIZE 设置bash会员期间历史包含的命令数量 $HISTFILESIZE 设置历史文件中实际存储的命令数量 $HISTFILE bash启动的时候会读取~/.bash_history文件并载入到内存中,这个变量就用于设置.bash_history文件,bash退出时也会把内存中的历史回写到.bash_history文件 清空当前会话缓存里历史命令 history -c 要想彻底清空历史命令,需要先将 .bash_history的内容删除,接着使用 history -c, 这样才会彻底清空命令历史。 HISTSIZE:shell进程的缓冲区保留的历史命令的条数; HISTFILESIZE:命令历史文件可保存的历史命令的条数; HISTIGNORE="str1:str2:…"忽略string1,string2历史; history -w 让bash将历史命令立即从内存写到.bash_history文件 history -a 将目前新增的 history 历史命令写入.bash_history文件 history 命令常见用法 ? 语法: history [n | -c | -rnaw histfile] 参数: n:数字,列出最近的 n 条历史命令 -c:将当前shell 缓存中的 history 内容全部清除 -a:将当前shell缓存中的history 内容append附加到 histfile 中,如果没有指定 histfile,则默认写入 ~/.bash_histroy;-a:将bash 内存中历史命令追加到 .bash_history 历史命令文件中, 默认只有退出 shell 是才会保存 -r:将 histfile 中的内容读取到当前shell的缓存中;-r:读取历史文件到历史列表(将 .bash_history重新读取一遍,写入到当前bash进程的内存中) -w:将当前shell缓存的history历史列表写入到指定的文件;-w:保存历史列表到指定的历史文件(history -w /PATH/TO/SOMEFILE 将内存中命令执行的历史列表保存到指定的 /PATH/TO/SOMEFILE中) -a: 追加本次会话新执行的命令历史列表至历史文件,因为多终端所以如果想看当前都发生了什么操作就可以执行-a进行查看 -n: 读历史文件(本地数据)中未读过的行到历史列表(内存数据) -r: 读历史文件(本地数据)附加到历史列表(内存数据) -w: 保存历史列表(内存数据)到指定的历史文件(本地数据) -s: 展开历史参数成一行,附加在历史列表后。用于伪造命令历史 http://blog.51cto.com/skypegnu1/1941153     利用history命令,可以使每个登录会话只看到自己的命令历史记录,这样即保证安全,又方便使用。即使是同一个用户的不同会话,也要保证同一个用户的各个会话只能看到自己的历史记录。不方便的是,你每次登录进去,都是一个新的会话,就看不到任何的history记录。 HISTCONTROL:如果设置为 ignorespace, 以 space 开头的行将不会插入到历史列表中。如果设置为 ignoredups, 匹配上一次历史记录的行将不会插入。设置为 ignoreboth 会结合这两种选项。如果没有定义,或者设置为其他值,所有解释器读取的行都将存入历史列表,但还要经过 HISTIGNORE 处理。这个变量的作用可以被 HISTIGNORE 替代。多行的组合命令的第二和其余行都不会被检测,不管 HISTCONTROL 是什么,都会加入到历史中。 HISTFILE:保存命令历史的文件名 (参见下面的 HISTORY 历史章节)。默认值是 ~/.bash_history。如果取消定义,在交互式 shell 退出时命令历史将不会保存。 HISTFILESIZE:历史文件中包含的最大行数。当为这个变量赋值时,如果需要的话,历史文件将被截断来容纳不超过这个值的行。默认值是 500。历史文件在交互式 shell 退出时也会被截断到这个值。 HISTIGNORE:一个冒号分隔的模式列表,用来判断那个命令行应当保存在历史列表中。每个模式都定位于行首,必须匹配整行 (没有假定添加 ‘*’)。在 HISTCONTROL 指定的测试结束后,这里的每个模式都要被测试。除了平常的 shell 模式匹配字符, ‘&’ 匹配上一个历史行。‘&’ 可以使用反斜杠来转义;反斜杠在尝试匹配之前将被删除。多行的组合命令的第二行以及后续行都不会被测试,不管 HISTIGNORE 是什么,都将加入到历史中。 HISTSIZE:命令历史中保存的历史数量 (参见下面的 HISTORY 历史章节)。默认值是 500。    实例来自https://blog.csdn.net/m0_38020436/article/details/78730631 设置uid大于等于500的用户的history安全性 需求: 记录统一转移到/var/history目录下; 用户无法删除自己的history文件,无法清空history; 多个终端共享history,实时追加; 限制history文件大小和保存的条数; 举例用户,lionel;uid=523 1)配置全局环境变量文件/etc/profile # vi /etc/profile //添加以下内容 # add by coolnull if [ $UID -ge 500 ];then readonly HISTFILE=/var/history/$USER-$UID.log readonly HISTFILESIZE=50000 readonly HISTSIZE=10000 readonly HISTTIMEFORMAT='%F %T ' readonly HISTCONTROL=ignoredups shopt -s histappend # 这条配置,就可以使一个终端的用户监控到另一个终端用户输入的命令内容 readonly PROMPT_COMMAND="history -a" fi 创建目录结构 # mkdir /var/history 配置目录权限,使得用户有权限创建自己的history文件 # chmod 777 /var/history # chmod a+t /var/history 2)限制用户删除自己的history文件 # chattr +a /var/history/lionel-522.log 3)限制用户修改自己主目录的环境变量配置文件 # chattr +a /home/lionel/.bash* # lsattr /home/lionel/.bash* -----a------- /home/lionel/.bash_logout -----a------- /home/lionel/.bash_profile -----a------- /home/lionel/.bashrc 4)禁止普通用户切换到系统中其他shell环境(一般包括csh,tcsh,ksh) # chmod 750 tcsh(csh是tcsh的软连接,设置tcsh就可以了) # chmod 750 /bin/ksh 普通帐号测试 [zhangfei@node1 ~]$ tcsh -bash: /bin/tcsh: Permission denied [zhangfei@node1 ~]$ ksh -bash: /bin/ksh: Permission denied `chmod a+t /var/history` 是一个 Linux 命令,用于更改文件或目录的权限。 在这个命令中,`chmod` 是用于修改权限的命令,`a` 表示所有用户,`+t` 表示设置粘滞位。 粘滞位是一种特殊的权限标志,它只对目录有效。当粘滞位被设置在一个目录上时,只有目录的所有者、文件的所有者和超级用户才能删除或重命名该目录中的文件。其他用户只能在该目录中创建新文件,但不能删除或修改其他用户的文件。 因此,`chmod a+t /var/history` 命令将为 `/var/history` 目录设置粘滞位,以确保只有目录的所有者、文件的所有者和超级用户才能删除或重命名该目录中的文件。其他用户只能在该目录中创建新文件,但不能删除或修改其他用户的文件。 通过chpasswd命令可实现迅速为用户批量设置密码 实例:写一个脚本,实现批量添加20个用户user1-20,密码为用户名和后面跟5个随机字符 #!/bin/sh # 思路:通过for循环,创建多个用户和用户其对应的随机密码文件,在用chpasswd命令实现批量设置密码 # 创建user1~20用户,并创建其对应的随机密码文件 for ((i=1; i>useradd.txt; done # 通过chpasswd命令批量设置密码 /usr/sbin/chpasswd < useradd.txt [root@svr5 ~]# vim uaddwhile.sh #!/bin/bash PREFIX="stu" //定义用户名前缀 i=1 while [ $i -le 20 ] do useradd ${PREFIX}$i //添加的用户名为:前缀+编号 echo "123456" | passwd --stdin ${PREFIX}$i &> /dev/null let i++ done if [ -z $1 ] then echo "Error:userfile is not input!" elif [ ! -e $1 ] then echo "Error:$1 is not exist!" elif [ -z $2 ] then echo "Error:passwdfile is not input!" elif [ ! -e $2 ] then echo "Error:$2 is not exist" else Num=`awk 'BEGIN{N=0}{N++}END{print N}' $1` for i in `seq 1 $Num` do USERNAME=`sed -n ${i}p $1` PASSWD=`sed -n ${i}p $2` getent passwd $USERNAME &> /dev/null if [ "$?" = "0" ] then echo "$USERNAME is exist" else useradd $USERNAME echo $PASSWD | passwd --stdin $USERNAME &> /dev/null echo "$USERNAME is created successfully!" fi done fi #! /bin/bash read -p "请输入需要创建的用户名:" name # -z 字符串长度为0 if [ -z $name ]; then echo "必须输入用户名" exit 0 fi useradd "$name" &> /dev/null # $? 代表程序的退出代码(0代表执行成功,非0代表执行失败) if [ $? != 0 ]; then echo -e "\033[31m $name用户已存在 \033[0m" exit 0 else echo -e "\033[32m $name用户创建成功 \033[0m" fi # 屏蔽回显 stty -echo read -p "请输入需要设置的用户密码:" passwd # 显示回显 stty echo if [ -z $passwd ]; then echo 123456 | passwd --stdin "$name" &> /dev/null echo -e "\n\033[32m 默认密码为123456 \033[0m" else echo $passwd | passwd --stdin "$name" &> /dev/null echo -e "\n\033[32m $name密码创建成功 \033[0m" fi chmod 755 add_user.sh ./add_user.sh # 彻底删除用户userdel -r 用户名 #! /bin/bash # example ./adduser.sh username [password] [ $# -eq 0 ] && echo "At least one paramter is required!" && exit 1 id $1 >& /dev/null && echo "user '$1' already exists!" && exit 2 useradd $1 && if test $# -eq 1; then echo $1; else echo $2; fi | passwd --stdin $1 &> /dev/null && echo "add user $1 success" && exit 0 echo "something above goes wrong" && exit 3 脚本接受两个参数:username、[password] username必填,password选填写,未填写password时,用户名和密码都是username chmod +x adduser.sh #./adduser.sh username [password] ./adduser.sh djzhao passw0rd!! ./adduser.sh djzhao2 使用[ arg... ]条件表达式判断是否传参,$#表示参数数量,如果参数数量等于0(-eq),则终止脚本,返回错误码1 使用id指令查询需要创建的用户是否存在,如果用户存在,表达式id $1的返回值($?)为0,则终止脚本,返回错误码2 其中表达式>& /dev/null可以隐藏表达式id $1的输出信息(重定向到空设备) 执行用户添加和设置密码,使用表达式if test $# -eq 1; then echo $1; else echo $2; fi判断用户是否设置了第二个参数,如果没有参数二,使用用户名作为密码,最终终止脚本,返回成功代码0 能够执行到最后一行表示在useradd 或者 passwd时出现了异常,很有可能是权限不足所导致! #!/bin/bash # 查找用户帐户信息 cat /etc/passwd # 查找登录详细信息 lastlog # 记录结果到日志文件 LOG_FILE="/var/log/user_info.log" { echo "User Account Information:" cat /etc/passwd echo echo "Login Details:" lastlog } >> "$LOG_FILE"

http://www.heminjie.com/system/linux/412.html https://www.cnblogs.com/augusite/p/10001446.html https://codeleading.com/article/76724854628/ https://blog.csdn.net/noflag/article/details/91885113 https://www.dbs724.com/146667.html https://www.cnblogs.com/chentiao/p/17197828.html https://www.cnblogs.com/shengulong/p/9034821.html https://blog.csdn.net/weixin_37909391/article/details/129827445 https://www.cnblogs.com/Baronboy/p/6728564.html https://www.cnblogs.com/augusite/p/15581211.html https://www.cnblogs.com/augusite/p/15568220.html https://www.cnblogs.com/augusite/p/14958364.html https://www.cnblogs.com/augusite/p/14948308.html

image 开机执行脚本的两种方法:

在/etc/rc.local的exit 0语句之间添加启动脚本。脚本必须具有可执行权限 用update-rc.d命令添加开机执行脚本 image image image

Linux下通过shell脚本创建账户

https://www.cnblogs.com/stackflow/p/linux_shell_account.html https://www.bunian.cn/11661.html

#!/bin/bash # 定义一个用户列表,每行一个用户名和密码,用户名和密码之间用空格隔开 user_list="user1 password1 user2 password2 user3 password3" # 读取用户列表 echo "$user_list" | while read user pass; do # 创建用户,并设置密码 useradd $user echo $pass | passwd --stdin $user echo "User $user has been created and the password was set." done

将上述脚本保存为create_users.sh,并赋予其执行权限chmod +x create_users.sh。

Linux创建登录用户 #/bin/bash SSHDFILE="/etc/ssh/sshd_config" NPFILE="/etc/sudoers" KEY=`cat /tmp/private` PUB=`cat /tmp/private.pub` EUSER=`ls /home/` ENPUSER=`grep "ALL=(ALL)NOPASSWD:ALL" $NPFILE |awk '{print $1}'` echo "首次使用会下载expect,会比较慢,请耐心等待" echo -e "当前自建用户有\n$EUSER\n具有免密执行sudo的用户有\n$ENPUSER" read -p $'若要执行删除任务,键入【yes】进入删除界面,不做任何事无需任何键入\n' DEL while [ "$DEL" == "yes" ] do read -p $'键入【usyes】进入删除用户选项,键入【npyes】进入删除sudo权限选项,不做任何事无需任何键入\n' DELCHOO while [ "$DELCHOO" == "usyes" ] do read -p $'请输入需要删除的账户:\n' DELUS if [ "$DELUS" == "root" ];then echo "你吃多了?" elif [ -z $DELUS ];then echo "输入了一个空账户" else userdel -r $DELUS >/dev/null if [ $? -eq 0 ];then echo "自建用户$DELUS已删除" else echo "错误的账户输入" fi fi NOWEUSER=`ls /home/` echo -e "当前自建用户有:\n$NOWEUSER" read -p $'若要继续执行删除用户任务,键入【usyes】,否则无需任何键入\n' DELCHOO done while [ "$DELCHOO" == "npyes" ] do read -p $'请输入需要解除权限的sudoler:\n' DELNP if [ "$DELNP" == "root" ];then echo "你吃多了?" elif [ -z $DELNP ];then echo "输入了一个空账号" else chmod +w $NPFILE sed -i "/$DELNP.*ALL/d" $NPFILE chmod -w $NPFILE echo "此处不做判断,建议复制粘贴,若是不存在的账户也不返回报错!!!" fi NOWENPUSER=`grep "ALL=(ALL)NOPASSWD:ALL" $NPFILE |awk '{print $1}'` echo -e "当前有免密执行sudo的用户有:\n$NOWENPUSER" read -p $'若要继续执行解除sudoler任务,键入【npyes】否则无需任何键入\n' DELCHOO done read -p $'若要继续执行删除任务,键入【yes】进入删除界面,否则无需任何键入\n' DEL done read -p $'是否需要为用户开启免密sudo权限,键入【yes】进入ADD选项,否则无需任何键入\n' ADDNP while [ "$ADDNP" == "yes" ] do NOWEUSER=`ls /home/` echo -e "当前自建用户有:\n$NOWEUSER" NOWENPUSER=`grep "ALL=(ALL)NOPASSWD:ALL" $NPFILE |awk '{print $1}'` echo -e "当前有免密执行sudo的用户有:\n$NOWENPUSER" read -p $'键入需要开启免密的用户:\n' ADDUS TIME=`date +%Y%m%d%H%M` cp $NPFILE /tmp/sudoers-$TIME chmod +w $NPFILE NOPASS="$ADDUS ALL=(ALL)NOPASSWD:ALL" echo -e "$NOPASS" >> $NPFILE grep $NOPASS $NPFILE >/dev/null if [ $? -eq 0 ];then echo "$USER免密执行sudo已完成。。。$NOPASS" chmod -w $NPFILE else echo "执行异常,请手动检测。。。备份文件/tmp/sudoers-$TIME" chmod -w $NPFILE fi NOWEUSER=`ls /home/` echo -e "当前自建用户有:\n$NOWEUSER" NOWENPUSER=`grep "ALL=(ALL)NOPASSWD:ALL" $NPFILE |awk '{print $1}'` echo -e "当前有免密执行sudo的用户有:\n$NOWENPUSER" read -p $'是否需要为用户开启免密sudo权限,键入【yes】进入删除界面,否则无需任何键入\n' ADDNP done read -p $'是否需要更改ssh_port,键入【yes】进入更改界面,否则无需任何键入\n' SSHPORT while [ "$SSHPORT" == "yes" ] do read -p $'键入需要的端口号:\n' port if [[ $port =~ ^[0-9]+$ ]];then if [[ $port > 65535 ]] || [[ $port < 1 ]];then echo "无效的端口,建议>1000,


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有