案例让一个命令在开机的时候自动运行的方法
Posted yangjuncheng0826
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了案例让一个命令在开机的时候自动运行的方法相关的知识,希望对你有一定的参考价值。
案例让一个命令在开机的时候自动运行的方法
[[email protected] ~]# vim /etc/init.d/oldboy
[[email protected] ~]# cat /etc/init.d/oldboy
# chkconfig: 2345 99 99
echo aaa(表示脚本的文件内容,oldboy表示开机启动的脚本名称)
[[email protected] ~]# ll /etc/init.d/oldboy
-rw-r--r-- 1 root root 34 Nov 13 22:15 /etc/init.d/oldboy
[[email protected] ~]# chmod u+x /etc/init.d/oldboy
[[email protected] ~]# ll /etc/init.d/oldboy
-rwxr--r-- 1 root root 34 Nov 13 22:15 /etc/init.d/oldboy
[[email protected] ~]# chkconfig --add oldboy
[[email protected] ~]# chkconfig |grep oldboy
oldboy 0:off 1:off 2:on 3:on 4:on 5:on 6:off
注解:
[[email protected] ~]# # 案例2 让一个命令在开机的时候自动运行的方法
[[email protected] ~]# (方法1)把这个命令或脚本放到/etc/rc.local 下面
-bash: syntax error near unexpected token `把这个命令或脚本放到/etc/rc.local‘
[[email protected] ~]# #(方法1)把这个命令或脚本放到/etc/rc.local 下面
[[email protected] ~]# #(方法2)该命令通过chkconfig 命令来管理
[[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 文件名)里面写入要执行 的脚本内容保存退出、
[[email protected] ~]# # ll /etc/init.d/oldboy 发现oldboy默认的权限是644 没有执行权限、所以 chmod +x /etc/init.d/oldboy ^C
[[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 文件名)里面写入要执行 .脚本内容保存退出、脚本的内容格式的的脚本内容保存退出、脚本的内容格式的开头必须是
[[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 文件名)里面写入要执行 的脚本内容保存退出、脚本的内容格式的开头必须是 (# chkconfig: 2345 99 99 )这是chkconfig 管理脚本的条件。2345 表示在开机启动的时候级别,运行级别一般是2345,第一个99表示开机 启动的顺序,第二99表示关机的时候的顺序,我们关注的是开机的,一般自己写的脚本放在99这个文职就可以,用 chkconfig --add oldboy
[[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 文件名)里面写入要执行 的脚本内容保存退出、脚本的内容格式的开头必须是 (# chkconfig: 2345 99 99 )这是chkconfig 管理脚本的条件。2345 表示在开机启动的时候级别,运行级别一般是2345,第一个99表示开机 启动的顺序,第二99表示关机的时候的顺序,我们关注的是开机的,一般自己写的脚本放在99这个文职就可以,用 chkconfig --add oldboy 加入控制
[[email protected] ~]# #3 chkconfig |grep oldby 检查 2345 上是开机启动的
案例2:一次创建50万文件的方法,必须要用|xargs 否则无法创建
[[email protected] ~]# #echo {1..500000}|xargs touch
[[email protected] ~]# #一次创建50万文件的方法,必须要用|xargs 否则无法创建
[[email protected] ~]# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 580K 330K 250K 57% /
tmpfs 123K 1 123K 1% /dev/shm
/dev/sda1 50K 38 50K 1% /boot
[[email protected] ~]# dev/sda3 580K 330K 250K 57% /
[[email protected] ~]# #查看节点快用完了,
[[email protected] ~]# find / -type d -size +1M|xargs ls -lhd
dr-xr-x---. 2 root root 6.4M Nov 13 21:06 /root
[[email protected] ~]# ls /root |wc -l
282437
[[email protected] ~]# \rm -rf /root
[[email protected] ~]# ls -l
total 0
[[email protected] ~]# #ls |xargs rm -rf 这是删除大量文件的方法。
[[email protected] ~]# #ls -l 查看发现成功了
案例3 创建一个 用户UID是888 不可登陆的 不创建家目录的用户 test
[[email protected] oldboy]# useradd -u 888 -s /sbin/nologin -M test
[[email protected] oldboy]# grep test /etc/passwd
test:x:888:888::/home/test:/sbin/nologin
[[email protected] oldboy]# ls /home/test
ls: cannot access /home/test: No such file or directory(没有创建家目录)
-u 制定UID
-s 不可登陆的
-M 不创建家目录
Test 表示用户
[[email protected] oldboy]# id test
uid=888(test) gid=888(test) groups=888(test)
[[email protected] oldboy]# vim /etc/passwd
#test:x:888:888::/home/test:/sbin/nologin
(#)号表示删除了这个用户
[[email protected] oldboy]# id test
id: test: No such user (显示用户不存在了,相当于用户删掉了但是数据还是在的)
userdel test 默认不会删除用户test的家目录
-r 参数连同用户的test家目录一起删掉了,userdel -r 把用户的信息删除的干干净净
最安全的方法就是在/etc/passwd 下面的用户前面加上一个(#号注释掉,如果有人要用,去掉#号即可这样操作比较安全)
[[email protected] ~]# useradd -u 888 -s /sbin/nologin -M alex888
[[email protected] ~]# grep alex888 /etc/passwd
alex888:x:888:888::/home/alex888:/sbin/nologin
[[email protected] ~]# chkconfig postfix off
[[email protected] ~]# usermod -c "xu ni yong hu " alex888
[[email protected] ~]# grep alex888 /etc/passwd
alex888:x:888:888:xu ni yong hu :/home/alex888:/sbin/nologin
[[email protected] ~]# id alex888
uid=888(alex888) gid=888(alex888) groups=888(alex888)
[email protected]y02 ~]# usermod -g oldboy alex888
[[email protected] ~]# id alex888
uid=888(alex888) gid=889(oldboy) groups=889(oldboy)
改变它的所属oldboy 组的成员
[[email protected] ~]# usermod -G root,oldboy,test alex888
[[email protected] ~]# id alex888
uid=888(alex888) gid=889(oldboy) groups=889(oldboy),0(root),890(test)
属于多个用户组
usermod 主要是用来修改用户的属性信息的
[[email protected] ~]# echo ‘123456‘|passwd --stdin oldboy
Changing password for user oldboy.
passwd: all authentication tokens updated successfully.
非交互式的改变用密码 –stdin 表示一次修改密码
--stdin 这个命令只能root才可以用
[[email protected] ~]# history -c 清空历史记录
案例:给文件做一个指纹
[[email protected] ~]# touch oldboy
[[email protected] ~]# echo oldboy >oldboy
[[email protected] ~]# cat oldboy
oldboy
[[email protected] ~]# md5sum oldboy
3fe396c01f03425cb5e2da8186eb090d oldboy
[[email protected] ~]# cat oldboy
Oldboy
只有这个文件在发生变化的时候才会起作用
[[email protected] ~]# md5sum oldboy >police.log(放到一个指定的文件中)
[[email protected] ~]# cat police.log
3fe396c01f03425cb5e2da8186eb090d oldboy
[[email protected] ~]# md5sum -c police.log (指纹的对比,如果没有发生变化就是OK的)
oldboy: OK
往文件oldboy里面添加的内容测试
[[email protected] ~]# echo oldboy.txt >>oldboy
[[email protected] ~]# cat oldboy
oldboy
oldboy.txt
[[email protected] ~]# md5sum -c police.log
oldboy: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
oldboy: FAILED 表示文件发生了变化
案例:
批量添加10个用户stu01,stu0……stu10,斌设置8位随机密码;
[[email protected] ~]# useradd -u 999 -s /sbin/nologin -M mysql
[[email protected] ~]# id mysql
uid=999(mysql) gid=999(mysql) groups=999(mysql)
[[email protected] ~]# #添加一个用户MySQL,并指定UID为999 GID为999
在Linux里面只要指定UID后,GID跟UID是一样的,不用加小写的-g
Useradd -g 是指定用户的名字,指定组ID用groupadd -g test 添加到test组里面
案例:模拟一个大文件,用top来查看CPU的负载进程情况
[[email protected] tmp]# dd if=/dev/zero of=/tmp/100 bs=1M count=10009(大文件来模拟)
[[email protected] ~]# top(top来观察进程的负载信息)
top - 22:21:21 up 4:11, 2 users, load average: 1.03, 0.34, 0.13
Tasks: 92 total, 1 running, 90 sleeping, 1 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004112k total, 938448k used, 65664k free, 11824k buffers
Swap: 786428k total, 0k used, 786428k free, 814744k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7 root 20 0 0 0 0 S 0.3 0.0 0:19.67 events/0
5693 root 20 0 15036 1176 908 R 0.3 0.1 0:03.35 top
Top进程默认是按照CPU来排序的,按大写的M是用内存来排序,按大写的P是按CPU来排序的。
[[email protected] ~]# free -h 专门来查看内存信息
total used free shared buffers cached
Mem: 980M 907M 73M 232K 11M 787M
-/+ buffers/cache: 108M 872M
Swap: 767M 0B 767M
还有一种就是top版的增强版本:
htop 是指增强版的top
iotop 主要查看每个进程使用的io 磁盘使用情况
iftop 显示系统的网络流量
默认这三个命令是没有安装的
[[email protected] ~]# last 显示系统的登录信息,以及该用户登录了多久
root pts/1 10.0.0.1 Wed Nov 14 22:13 still logged in (表示在登陆中)
root pts/0 10.0.0.1 Wed Nov 14 21:14 still logged in
root pts/0 10.0.0.1 Wed Nov 14 14:08 - 17:11 (03:02)
reboot system boot 2.6.32-696.el6.x Wed Nov 14 14:08 - 22:43 (08:34)
root pts/0 10.0.0.1 Wed Nov 14 14:02 - down (00:06)
root tty1 Mon Nov 12 00:09 - down (2+13:58)
root pts/7 10.0.0.1 Sat Nov 10 18:28 - 19:53 (01:25)
root pts/6 10.0.0.1 Sat Nov 10 18:28 - 19:53 (01:25)
root pts/0 10.0.0.1 Wed Nov 14 14:08 - 17:11 (03:02)
17:11 表示登录时间
(03:02) 登陆了多久
[[email protected] ~]# lastlog (显示系统最近一次所有的登录情况,这里的登录时指远程登的用户不是切换用户)
Username Port From Latest
root pts/1 10.0.0.1 Wed Nov 14 22:13:25 +0800 2018
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
案例:su 与su – 的区别
[[email protected] ~]# su oldboy
[[email protected] root]$ pwd
/root(su 不加- 切换后家目录还是/root,ls 查看文件的时候还是没有权限)
[[email protected] root]$ whoami
Oldboy
[[email protected] ~]# su – oldboy (加上-后,家目录就会切换到普通用户的家目录下面,普通用户有权限)
[[email protected] ~]$ pwd
/home/oldboy
[[email protected] ~]$ whoami
oldboy
sudo 这个命令是专门为普通用户用的,root 用户是用不着的。
[[email protected] ~]# visudo (:92行找到root在下root行的下面写上普通用户的用户名和执行的命令)
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
oldboy ALL=(ALL) /bin/ls, /bin/touch (给oldboy授权)
[[email protected] ~]# visudo -c (一定要进行语法的检查是否正确)
/etc/sudoers: parsed OK
[[email protected] ~]$ ls /root
ls: cannot open directory /root: Permission denied
[[email protected] ~]$ sudo ls /root/
anaconda-ks.cfg install.log.syslog police.log yangjuncheng.test
[[email protected] ~]$ sudo touch /root/alex.txt
[[email protected] ~]$ sudo ls /root/alex.txt
/root/alex.txt (文件已经创建)
visudo == vim /etc/sudoers
案例:授权/bin/下面普通用户root的权限
[[email protected] ~]# visudo
oldboy ALL=(ALL) /bin/*(授权/bin下的所有权限)
[[email protected] ~]$ ls /bin (查看发现有su – root )
[[email protected] ~]$ su - root
Password: (没有密码)
[[email protected] ~]$ sudo su – root (这条命令表示具有了root的权限,这样普通用户就直接成root了,非常危险,不能给普通用户这么大的权限)
[sudo] password for oldboy:
[[email protected] ~]# ls /root
案例:授权/bin/下面普通用户root的权限,并且排除su 权限
[[email protected] ~]# visudo
oldboy ALL=(ALL) /bin/* !/bin/su (表示排除su )
[[email protected] ~]$ sudo su -
Sorry, user oldboy is not allowed to execute ‘/bin/su -‘ as root on oldboy02.(没有权限)
[[email protected] ~]$
因为/bin/目录下面有好多的执行命令这样授权整个目录很危险,最好的办法就是普通用户
需要什么就给什么权限,这样比较安全。精确到某个命令的某个参数。
[[email protected] ~]$ sudo -k(清除缓存)
[[email protected] ~]$ sudo -l
[sudo] password for案例让一个命令在开机的时候自动运行的方法
[[email protected] ~]# vim /etc/init.d/oldboy
[[email protected] ~]# cat /etc/init.d/oldboy
# chkconfig: 2345 99 99
echo aaa(表示脚本的文件内容,oldboy表示开机启动的脚本名称)
[[email protected] ~]# ll /etc/init.d/oldboy
-rw-r--r-- 1 root root 34 Nov 13 22:15 /etc/init.d/oldboy
[[email protected] ~]# chmod u+x /etc/init.d/oldboy
[[email protected] ~]# ll /etc/init.d/oldboy
-rwxr--r-- 1 root root 34 Nov 13 22:15 /etc/init.d/oldboy
[[email protected] ~]# chkconfig --add oldboy
[[email protected] ~]# chkconfig |grep oldboy
oldboy 0:off 1:off 2:on 3:on 4:on 5:on 6:off
注解:
[[email protected] ~]# # 案例2 让一个命令在开机的时候自动运行的方法
[[email protected] ~]# (方法1)把这个命令或脚本放到/etc/rc.local 下面
-bash: syntax error near unexpected token `把这个命令或脚本放到/etc/rc.local‘
[[email protected] ~]# #(方法1)把这个命令或脚本放到/etc/rc.local 下面
[[email protected] ~]# #(方法2)该命令通过chkconfig 命令来管理
[[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 文件名)里面写入要执行 的脚本内容保存退出、
[[email protected] ~]# # ll /etc/init.d/oldboy 发现oldboy默认的权限是644 没有执行权限、所以 chmod +x /etc/init.d/oldboy ^C
[[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 文件名)里面写入要执行 .脚本内容保存退出、脚本的内容格式的的脚本内容保存退出、脚本的内容格式的开头必须是
[[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 文件名)里面写入要执行 的脚本内容保存退出、脚本的内容格式的开头必须是 (# chkconfig: 2345 99 99 )这是chkconfig 管理脚本的条件。2345 表示在开机启动的时候级别,运行级别一般是2345,第一个99表示开机 启动的顺序,第二99表示关机的时候的顺序,我们关注的是开机的,一般自己写的脚本放在99这个文职就可以,用 chkconfig --add oldboy
[[email protected] ~]# # 方法1 就是 vim /etc/init.d/oldboy(oldboy 文件名)里面写入要执行 的脚本内容保存退出、脚本的内容格式的开头必须是 (# chkconfig: 2345 99 99 )这是chkconfig 管理脚本的条件。2345 表示在开机启动的时候级别,运行级别一般是2345,第一个99表示开机 启动的顺序,第二99表示关机的时候的顺序,我们关注的是开机的,一般自己写的脚本放在99这个文职就可以,用 chkconfig --add oldboy 加入控制
[[email protected] ~]# #3 chkconfig |grep oldby 检查 2345 上是开机启动的
案例2:一次创建50万文件的方法,必须要用|xargs 否则无法创建
[[email protected] ~]# #echo {1..500000}|xargs touch
[[email protected] ~]# #一次创建50万文件的方法,必须要用|xargs 否则无法创建
[[email protected] ~]# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 580K 330K 250K 57% /
tmpfs 123K 1 123K 1% /dev/shm
/dev/sda1 50K 38 50K 1% /boot
[[email protected] ~]# dev/sda3 580K 330K 250K 57% /
[[email protected] ~]# #查看节点快用完了,
[[email protected] ~]# find / -type d -size +1M|xargs ls -lhd
dr-xr-x---. 2 root root 6.4M Nov 13 21:06 /root
[[email protected] ~]# ls /root |wc -l
282437
[[email protected] ~]# \rm -rf /root
[[email protected] ~]# ls -l
total 0
[[email protected] ~]# #ls |xargs rm -rf 这是删除大量文件的方法。
[[email protected] ~]# #ls -l 查看发现成功了
案例3 创建一个 用户UID是888 不可登陆的 不创建家目录的用户 test
[[email protected] oldboy]# useradd -u 888 -s /sbin/nologin -M test
[[email protected] oldboy]# grep test /etc/passwd
test:x:888:888::/home/test:/sbin/nologin
[[email protected] oldboy]# ls /home/test
ls: cannot access /home/test: No such file or directory(没有创建家目录)
-u 制定UID
-s 不可登陆的
-M 不创建家目录
Test 表示用户
[[email protected] oldboy]# id test
uid=888(test) gid=888(test) groups=888(test)
[[email protected] oldboy]# vim /etc/passwd
#test:x:888:888::/home/test:/sbin/nologin
(#)号表示删除了这个用户
[[email protected] oldboy]# id test
id: test: No such user (显示用户不存在了,相当于用户删掉了但是数据还是在的)
userdel test 默认不会删除用户test的家目录
-r 参数连同用户的test家目录一起删掉了,userdel -r 把用户的信息删除的干干净净
最安全的方法就是在/etc/passwd 下面的用户前面加上一个(#号注释掉,如果有人要用,去掉#号即可这样操作比较安全)
[[email protected] ~]# useradd -u 888 -s /sbin/nologin -M alex888
[[email protected] ~]# grep alex888 /etc/passwd
alex888:x:888:888::/home/alex888:/sbin/nologin
[[email protected] ~]# chkconfig postfix off
[[email protected] ~]# usermod -c "xu ni yong hu " alex888
[[email protected] ~]# grep alex888 /etc/passwd
alex888:x:888:888:xu ni yong hu :/home/alex888:/sbin/nologin
[[email protected] ~]# id alex888
uid=888(alex888) gid=888(alex888) groups=888(alex888)
[email protected] ~]# usermod -g oldboy alex888
[[email protected] ~]# id alex888
uid=888(alex888) gid=889(oldboy) groups=889(oldboy)
改变它的所属oldboy 组的成员
[[email protected] ~]# usermod -G root,oldboy,test alex888
[[email protected] ~]# id alex888
uid=888(alex888) gid=889(oldboy) groups=889(oldboy),0(root),890(test)
属于多个用户组
usermod 主要是用来修改用户的属性信息的
[[email protected] ~]# echo ‘123456‘|passwd --stdin oldboy
Changing password for user oldboy.
passwd: all authentication tokens updated successfully.
非交互式的改变用密码 –stdin 表示一次修改密码
--stdin 这个命令只能root才可以用
[[email protected] ~]# history -c 清空历史记录
案例:给文件做一个指纹
[[email protected] ~]# touch oldboy
[[email protected] ~]# echo oldboy >oldboy
[[email protected] ~]# cat oldboy
oldboy
[[email protected] ~]# md5sum oldboy
3fe396c01f03425cb5e2da8186eb090d oldboy
[[email protected] ~]# cat oldboy
Oldboy
只有这个文件在发生变化的时候才会起作用
[[email protected] ~]# md5sum oldboy >police.log(放到一个指定的文件中)
[[email protected] ~]# cat police.log
3fe396c01f03425cb5e2da8186eb090d oldboy
[[email protected] ~]# md5sum -c police.log (指纹的对比,如果没有发生变化就是OK的)
oldboy: OK
往文件oldboy里面添加的内容测试
[[email protected] ~]# echo oldboy.txt >>oldboy
[[email protected] ~]# cat oldboy
oldboy
oldboy.txt
[[email protected] ~]# md5sum -c police.log
oldboy: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
oldboy: FAILED 表示文件发生了变化
案例:
批量添加10个用户stu01,stu0……stu10,斌设置8位随机密码;
[[email protected] ~]# useradd -u 999 -s /sbin/nologin -M mysql
[[email protected] ~]# id mysql
uid=999(mysql) gid=999(mysql) groups=999(mysql)
[[email protected] ~]# #添加一个用户MySQL,并指定UID为999 GID为999
在Linux里面只要指定UID后,GID跟UID是一样的,不用加小写的-g
Useradd -g 是指定用户的名字,指定组ID用groupadd -g test 添加到test组里面
案例:模拟一个大文件,用top来查看CPU的负载进程情况
[[email protected] tmp]# dd if=/dev/zero of=/tmp/100 bs=1M count=10009(大文件来模拟)
[[email protected] ~]# top(top来观察进程的负载信息)
top - 22:21:21 up 4:11, 2 users, load average: 1.03, 0.34, 0.13
Tasks: 92 total, 1 running, 90 sleeping, 1 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004112k total, 938448k used, 65664k free, 11824k buffers
Swap: 786428k total, 0k used, 786428k free, 814744k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7 root 20 0 0 0 0 S 0.3 0.0 0:19.67 events/0
5693 root 20 0 15036 1176 908 R 0.3 0.1 0:03.35 top
Top进程默认是按照CPU来排序的,按大写的M是用内存来排序,按大写的P是按CPU来排序的。
[[email protected] ~]# free -h 专门来查看内存信息
total used free shared buffers cached
Mem: 980M 907M 73M 232K 11M 787M
-/+ buffers/cache: 108M 872M
Swap: 767M 0B 767M
还有一种就是top版的增强版本:
htop 是指增强版的top
iotop 主要查看每个进程使用的io 磁盘使用情况
iftop 显示系统的网络流量
默认这三个命令是没有安装的
[[email protected] ~]# last 显示系统的登录信息,以及该用户登录了多久
root pts/1 10.0.0.1 Wed Nov 14 22:13 still logged in (表示在登陆中)
root pts/0 10.0.0.1 Wed Nov 14 21:14 still logged in
root pts/0 10.0.0.1 Wed Nov 14 14:08 - 17:11 (03:02)
reboot system boot 2.6.32-696.el6.x Wed Nov 14 14:08 - 22:43 (08:34)
root pts/0 10.0.0.1 Wed Nov 14 14:02 - down (00:06)
root tty1 Mon Nov 12 00:09 - down (2+13:58)
root pts/7 10.0.0.1 Sat Nov 10 18:28 - 19:53 (01:25)
root pts/6 10.0.0.1 Sat Nov 10 18:28 - 19:53 (01:25)
root pts/0 10.0.0.1 Wed Nov 14 14:08 - 17:11 (03:02)
17:11 表示登录时间
(03:02) 登陆了多久
[[email protected] ~]# lastlog (显示系统最近一次所有的登录情况,这里的登录时指远程登的用户不是切换用户)
Username Port From Latest
root pts/1 10.0.0.1 Wed Nov 14 22:13:25 +0800 2018
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
案例:su 与su – 的区别
[[email protected] ~]# su oldboy
[[email protected] root]$ pwd
/root(su 不加- 切换后家目录还是/root,ls 查看文件的时候还是没有权限)
[[email protected] root]$ whoami
Oldboy
[[email protected] ~]# su – oldboy (加上-后,家目录就会切换到普通用户的家目录下面,普通用户有权限)
[[email protected] ~]$ pwd
/home/oldboy
[[email protected] ~]$ whoami
oldboy
sudo 这个命令是专门为普通用户用的,root 用户是用不着的。
[[email protected] ~]# visudo (:92行找到root在下root行的下面写上普通用户的用户名和执行的命令)
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
oldboy ALL=(ALL) /bin/ls, /bin/touch (给oldboy授权)
[[email protected] ~]# visudo -c (一定要进行语法的检查是否正确)
/etc/sudoers: parsed OK
[[email protected] ~]$ ls /root
ls: cannot open directory /root: Permission denied
[[email protected] ~]$ sudo ls /root/
anaconda-ks.cfg install.log.syslog police.log yangjuncheng.test
[[email protected] ~]$ sudo touch /root/alex.txt
[[email protected] ~]$ sudo ls /root/alex.txt
/root/alex.txt (文件已经创建)
visudo == vim /etc/sudoers
案例:授权/bin/下面普通用户root的权限
[[email protected] ~]# visudo
oldboy ALL=(ALL) /bin/*(授权/bin下的所有权限)
[[email protected] ~]$ ls /bin (查看发现有su – root )
[[email protected] ~]$ su - root
Password: (没有密码)
[[email protected] ~]$ sudo su – root (这条命令表示具有了root的权限,这样普通用户就直接成root了,非常危险,不能给普通用户这么大的权限)
[sudo] password for oldboy:
[[email protected] ~]# ls /root
案例:授权/bin/下面普通用户root的权限,并且排除su 权限
[[email protected] ~]# visudo
oldboy ALL=(ALL) /bin/* !/bin/su (表示排除su )
[[email protected] ~]$ sudo su -
Sorry, user oldboy is not allowed to execute ‘/bin/su -‘ as root on oldboy02.(没有权限)
[[email protected] ~]$
因为/bin/目录下面有好多的执行命令这样授权整个目录很危险,最好的办法就是普通用户
需要什么就给什么权限,这样比较安全。精确到某个命令的某个参数。
[[email protected] ~]$ sudo -k(清除缓存)
[[email protected] ~]$ sudo -l
[sudo] password for oldboy:
如果说自己用,或是给上面领导使用的时候就不需要密码
[[email protected] ~]# visudo
oldboy ALL=(ALL) NOPASSWD: ALL
[[email protected] ~]$ sudo su - (直接进入root用户下面,不需要输入密码)
[[email protected] ~]#
国内使用的两个堡垒机是 :gateone jumpserver:
如果说自己用,或是给上面领导使用的时候就不需要密码
[[email protected] ~]# visudo
oldboy ALL=(ALL) NOPASSWD: ALL
[[email protected] ~]$ sudo su - (直接进入root用户下面,不需要输入密码)
[[email protected] ~]#
国内使用的两个堡垒机是 :gateone jumpserver
以上是关于案例让一个命令在开机的时候自动运行的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何让windows开机自动运行一个bat文件,并且当用户登录后还能看到这个bat文件的控制台窗口?