Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

su与su-切换用户

Posted on 2009-08-13 18:12 Prayer 阅读(2581) 评论(0)  编辑 收藏 引用 所属分类: ShellLINUX/UNIX/AIX
  linux为安全计,把普通用户设置为默认的账户;这一点跟windows不一样,windows的默认用户是管理员。由于linux的默认账户是普通用户,而更改系统文件或者执行某些命令,必需要root(即linux中的管理员)身份才能进行,这就需要从当前用户切换到root用户。
  linux中切换用户的命令是su或su-。今天我在使用fsdisk这个命令时,终于体会到这两者的区别了。
  我首先是用su命令切换到root身份的,但是运行fdisk时,出现错误:command not found!这时必须加上路径/sbin/fdisk才可以运行。
  经论坛高手指点,才明白原由:是因为没有为这个命令设置环境变量,所以要加绝对路径才能运行!但是/sbin这个路径是系统设置好的呀,怎么会出现没有设置环境变量的错误呢?问题就出现在这个用su命令切换过来的root用户上!
 
  原来,切换root用户最好用su-命令,而不是su命令!
  su命令和su-命令最大的区别,就是:前者只是切换了身份,但SHELL环境仍然是普通用户的SHELL;而后者连用户和SHELL环境一起切换成root了。只有切换了SHELL环境才不会出现PATH环境变量错误。
  下面一幅图片能说明这个问题:
 
  从图片上可以看到用su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户lqs的工作目录;而用su-命令切换以后,工作目录变成root的工作目录了!
  再来看一下环境变量的不同:
   
  你可以在自己的电脑上用echo $PATH命令看一下su-以后的环境变量有何不同。
  以此类推,要从当前用户切换到其它用户也一样,应该使用su-命令。
  学习过程中细节问题一定要注意,这样才能少走弯路!


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理