Linux关于root转换权限

Linux关于root转换权限

su 和 sudo、su root和su - root 区别

区别就是改不改变当前用户的环境变量。
首先遇到这个问题是因为ssh限制了root直接登录,只能通过其他用户去登录然后再去转换,又因为基线修改了权限导致因root启动的程序的日志权限也变成了600,也就是只能root用户进行查看、写入等操作,其他用户看的机会都没有,因此想用定时任务每天自动将日志文件进行赋值为644,这样其他用户也可以查看,但是只有root用户能够编辑,这样既保证权限也能让其他用户看到日志不需要转root才能看;当然这个还有其他方法我一个大佬同事给了个思路不过也需要定时器,他是像写个脚本将日志复制一份,原始日志权限不改,复制的那份给个高点权限,这样也能满足查看。这就是遇到问题,下面记录下区别吧:
首先su root=su,意思是你用su root转换后其实就是用的su命令,因为若没有修改转换用户的话你直接用su 默认也是root;su root和su一样:表示与root建立一个链接,通过root执行命令,其实就是进程的有效用户ID变成了root,unix校验进程的权限都是校验的有效用户ID,进程的实际用户ID还是当前登录系统的用户,主目录也还是当前登录系统的用户的主目录。也就是说su 是不改变当前变量,同时只能获得root的执行权限,不能获得环境变量。
然后su -,表示以root身份登录,进程的实际用户ID和有效用户ID都变成了root,主目录也切换为root的主目录, 也就是说su - 是改变为切换到用户的变量。
而脚本执行直接执行的话不需要环境变量来支持,因此你用su root 或者 su - 都是没有任何问题,首先你得排除自己脚本会出现问题;排除这个问题后,接着就是设置crontab定时任务问题,这个在前面说到需要环境变量来执行,因为他是自动执行,除非你在自己脚本上加入环境变量如:

#!/bin/sh
. /etc/profile
. ~/.bash_profile
bash /xxx/xxx.sh(记住这个得写个绝对路径)

若不加环境变量就需要你在设置定时任务时保证自己是su - 转的root用户,因为只有这样定时器任务才会默认这root的环境变量,因此就会成功执行定时。
哎本人java出身奈何,面试java进公司,结果进来一行代码未敲,被弄过来做运维,也是面向百度运维,难搞。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值