首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

shell的种类

shell的种类

在添加grid用户来管理hadoop,以便和其他用户区别开来,使得hadoop比较安全,在添加用户的时候,shell外壳发生了变化,应该是默认添加的新用户的shell外壳是sh。    比如:
   

   用户可以用 echo 命令来查看自己的shell类型
   # echo $SHELL
   /bin/bash


  $SHELL是一个环境变量,它记录用户所使用的shell类型。
   可以看出添加的新的用户的shell外壳是sh。
   先看看shell的外壳
   cat /etc/shells查看所有shell外壳




目前流行的shell有ash、bash、ksh、csh、zsh等,使用不同的shell的原因在于它们各自都有自己的特点,下面作一个简单的介绍:

  1.ash

  ash shell是由KennethAlmquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。

  2.bash

  bash是Linux系统默认使用的shell,它由Brian Fox和Chet Ramey共同完成,是BourneAgainShell的缩写,内部命令一共有40个(可使用help命令查看)。Linux使用它作为默认的shell是因为它有诸如以下的特色:

可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。
自动通过查找匹配的方式给出以某字符串开头的命令。
包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。
  3.ksh

  ksh是Korn shell的缩写,由EricGisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。

  4.csh

  csh是Linux比较大的内核,它由以WilliamJoy为代表的共计47位作者编成,共有52个内部命令。该shell其实是指向/bin/tcsh这样的一个shell,也就是说,csh其实就是tcsh。

  5.zch

  zch是Linux最大的shell之一,由PaulFalstad完成,共有84个内部命令。如果只是一般的用途,是没有必要安装这样的shell的。
    如何解决???
   useradd -m grid -s /bin/bash 添加用户的时候,指定shell就行了……

/etc/passwd、/etc/shadow和/etc/group这三个配置文件用于系统帐号管理,都是文本文件,可用vim等文本编辑器打开。/etc/passwd用于存放用户帐号信息,/etc/shadow用于存放每个用户加密的密码,/etc/group用于存放用户的组信息。


一、/etc/passwd
sudo vim /etc/passwd
内容是:
root:x:0:0:root:/root:/bin/bash
xiaoxiaozi:x:1000:1000:xiaoxiaozi,,,:/home/xiaoxiaozi:/bin/bash
每一行代表一个账号,是的,有几十个账号,虽然账号很多,但是你要知道,有很多账号本来就是系统中必须的,称为系统账号。例如:bin和nobody其实都是系统账号。这些账号是系统正常运行所需要的,没事不要轻易折腾他们。格式由分号分隔的字串组成,它的格式如下:
username:password:uid:gid:allname:homedir:shell
各域对应的中文说明如下:
用户名:密码:用户ID:组ID:用户全名:主目录:登录shell
以上面的结果为例,解释一下:
用户名称:不解释吧。
密码:以前Linux的密码直接存在该文件中,现在都存在/etc/shadow中了,存入后者的就用x表示,如果是“!”说明此用户不能用密码登录。这也是为什么刚装好Ubuntu时不能用ROOT账号登录的根本原因。
UID:就是用户识别码(ID),当UID为0时说明其账号是管理员身份,1~499是保留给系统使用的主要是一些系统服务,不过你用了也没有关系。500~65535是给一般用户的。
GID:与/etc/group文件有关,就是用户初始化组的ID。
用户信息说明栏:没啥用,就是解释这个用户的,我感觉还是重复一下用户名
家目录:就是该用户的“主文件夹”,一般看我的xiaoxiaozi的家目录就是/home/xiaoxiaozi
Shell:SHELL脚本,看,现在一般默认都是BASH,可见其流行程序。
在password可以修改用户的shell,修改为你想要点就行!!!
二、/etc/shadow
sudo vi /etc/shadow
Unix系统最初是用明文保存密码的,后来由于安全的考虑,采用crypt()算法加密密码并存放在/etc/passwd文件。现在,由于计算机处理能力的提高,使密码破解变得越来越容易。/etc/passwd文件是所有合法用户都可访问的,大家都可互相看到密码的加密字符串,这给系统带来很大的安全威胁。现代的Unix系统使用影子密码系统,它把密码从/etc/passwd文件中分离出来,真正的密码保存在/etc/shadow文件中,shadow文件只能由超级用户访问。这样入侵者就不能获得加密密码串,用于破解。www.linuxidc.com使用shadow密码文件后,/etc/passwd文件中所有帐户的password域的内容为"x",如果password域的内容为"*",则该帐号被停用。内容为:
root:!:14402:0:99999:7:::
xiaoxiaozi6$9Dm1F/MTo$rLKI4LJEZ1m1k63zzK9M3FoNdZRUTB1pbN3Igibbo9fo.
W4EQl74J7oa1c3ogmDbmJQHdV2toEMXX7taEU0/.0:14402:0:99999:7:::
格式为:
username:password:last_change:min_change:max_change:warm:failed_expire:expiration:reserved
各个字段的含义看下面的解释:
账号名称:我们都不傻,肯定知道密码一定要与账号对应,所以这里的第一个字段就是账号名,很正常的。
密码:这是真正的密码,不过是经过加密的啊。一般高人还是可以破解出来的,所以,这里我把我的密码改了几个字符,呵呵。如果密码栏第一个字符为*或者!,表示这个号不会用来登录。
最近更改密码的日期:这里至于为啥会是14402这种怪异的数字。那是因为其是以1970年1月1日做为第1天,然后顺次相加。
密码不可更改的天数:即,你不想让某个用户频繁更改密码就可以把这个设成10000。
密码需要重新更改的天数:和上面的一样,有点绕,就是你的密码在多少天内必须得改了。
密码更改期限前的警告日期:比如说你将上一栏设为了20天,然后这个设为了5天,那么在还有5天就到20天的时候(真啰嗦),系统会自动提示“小子,还有5天啦,你必须得修改你的密码了,否则你就登录不了了”
密码过期的宽限时间:这个嘛,是人都有忘和懒的时候,就是你密码都过期了(到了必须更改的日子你还没改)然后你把本项设为10,那么在过期后的10天内你还可以用原密码登录。但是是否还有提示我就不清楚了,理论上是应该有的。
账号失效时间:这个不用说了吧?我们用WP的,在空间商那里空间都是有到期时间的,就是这个东西控制的。
保留:这个就是说还没想好放啥呢。不过先占个位置,也许以后要拉点啥呢?

用户组的所有信息都存放在/etc/group文件中


将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(隔开若干个字段,这些字段有:

组名:口令:组标识号:组内用户列表


1)“组名”是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
2)“口令”字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*。
3)“组标识号”与用户标识号类似,也是一个整数,被系统内部用来标识组。
4)“组内用户列表”是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
/etc/group文件的一个例子如下:

  • #cat/etc/group
  • root::0:root
  • bin::2:root,bin
  • sys::3:root,uucp
  • adm::4:root,adm
  • daemon::5:root,daemon
  • lp::7:root,lp
  • users::20:root,sam[/code:1:aca506e246]
继承事业,薪火相传
返回列表