login shell和nologin shell的区别以及su和su - 的区别

Login shellnologin shell的区别

说下定义,其实很好理解。Login shell就是你进入shell是需要输用户名密码的,比如你启动图形界面最后一步需要你输入用户名密码,只有你输入正确,才能进入桌面,这进入的就是一个login shell。另外比如你crtl + alt + F2等进入非图形界面的tty,都是需要你输入用户名密码之后才能继续操作,这种情况下你进入的就是login shell

nologin shell就是你不需要输入密码就能进入的shell。比如你进入图形界面之后,右键打开终端,就直接打开了一个承载shell的终端,在这个终端中你不用输入用户名密码就直接可以使用命令。明白了吧,这就是login shellnologin shell的区别。

这是表面上的区别,其实真正影响这两种shell使之不同的是打开两者所读取的环境变量文件不同。

Login shell 读取的文件和顺序:

/etc/profile     #这是系统的默认环境变量文件,所有用户都读取此文件

/etc/bashrc    

~/.bashrc

~/.bash_profile

Nologin shell 读取的文件和顺序为:

/etc/bashrc

~/.bashrc

这个结果是我通过实验测出来的,没有正式的文档参考。实验使用的rhel5.4,测试方法是在这些文件写入同一个变量,但给在不通文件中的变量赋不通的值,比如在/etc/profile文件中写入export  TEST=/etc/profile,在/etc/bashrc中写入export  TEST=/etc/bashrc,由于读取文件顺序的原因,后读取文件中的变量内容会覆盖之前读取文件中的变量内容,这样,登陆一个login shell,输出TEST变量echo $TEST。然后通过把当前生效的文件的改行注释掉,再次查看变量输出信息。这样就能得到读取文件的逆序。

我们知道系统的shell种类其实有许多的,除了bash之外还有kshcsh等。

/etc/profile是所有系统登录时要读取的变量文件,无论你要打开的是哪一种的shell

/etc/bashrc是当你登陆的用户使用bash登陆时读取的变量文件。

同时,/etc/profile/etc/bashrc中的设置对系统的所有用户具有同等效用。而~/.bashrc~/.bash_profile是为某一具体用户设置具体的环境变量参数的文件,只对特定的用户有效。

而我们知道nologin shell一定是在已经登录了login shell的前提下打开的,比如字符窗口startx启动图形界面,或者图形界面里打开新的终端。所以nologin shell算是login shell的一个子程序,根据shell中变量的继承法则,nologin shell会在继承原本login shell所有的环境变量的基础上读取~/.bashrc中的参数。

这就是这些个文件所有的关系了。所以有的时候,你设置的环境变量并没有生效,可以根据这个读取顺序查看一下是不是你的设置被覆盖掉了……

说两个命令:

Chsh  /bin/csh(某一种shell的路径)

可以改变某用户的默认shell。注意,每一个用户对应一个默认shell。并不是对系统所有用户都生效。

Source  /etc/profile

可以使/etc/profile文件中的更改内容及时生效。

具体使用

论坛上有人想让每次系统启动之后就自动打开bash

这个时候你就可以再/etc/profile文件中加入一下语句

Gnome-terminal &

如果你想每次打开一个nologin shell都显示当前目录,

就可以直接将pwd加入/etc/bashrc文件中。

如果你想每次打开一个nologin shell都自动进入/etc目录,

就可以直接将cd  /etc加入到/etc/bashrc文件中。

如果你想在某一个用户登入的时候才有这样的功能,则直接在该用户根目录更改/.bash_profile或者/.bashrc就可以实现了。

还有就是如果你的命令使打开一个程序,比如firefox,这样在你的firefox退出之前,就不能进行其他作业了,这种情况下,你最好使用firefox&让它在后台跑。

最后

我的环境是rhel5.4。这点一定要注意,当你的系统版本不同的时候,你也许发现我说的文件在你的系统中根本不存在,那么你可以按照我上文的思路去好好探索下你面对的操作系统中都有哪些个文件了。

Su su -的区别

对于su命令,只会更改当前用户,而不会更改当前的用户环境,比如你从oracle 用户suroot账户中,当前路径仍是你刚才的路径,环境变量仍是oracle用户的变量信息。

su -命令,则在更改当前用户信息的同事还会更改用户环境,如果你从oracle 用户su -root账户,你会发现你的当前路径已经变味/root/下了,环境变量也变了。这就是区别。

 

恭喜你已经顺利的通过了前两关的挑战,现在你已经学会了如何创建一个新用户删除一个已经存在的用户,以及如何修改一个用户的登录密码,接下来,我们一起学习不同用户之间的切换。 Linux  系统运行多个用户同时登录系统,也运行多个用户间的进行切换。 Linux  中使用  whoami  命令来查看当前登录系统的用户名。 本关的任务是新创建一个用户,并设置其登录密码,然后登录新创建的用户。 相关知识 通过本关学习,你将掌握如下知识点: Linux  用户登陆的三种方式 图形化界面登录  Linux  中添加用户后,用户在图形界面登录系统的方式  Windows  一样,都是选择要登录的用户后直接输入登录密码即可。 案例演示 1: 添加一个新用户,并且设置登录密码,然后在图形界面登录。   使用 login 命令登录  login  命令是让用户登录系统,可通过它的功能随时更换登入身份。当  /etc  目录里含名称为  nologin  的文件时,系统只允许  root  帐号登入系统,其他用户一律不准登入。 当使用  login  命令登录系统后,可以使用  logout  命令或者  exit  命令来退出当前用户登录,返回到登录前的用户状态。 命令格式: login [命令参数] 参数  参数为登录的用户名,可以不输入登录的用户名,直接输入  login  命令后回车,然后根据提示再输入用户名密码。 常见命令参数 • -p:告诉login指令不销毁环境变量; • -h:指定远程服务器的主机名。  login  必须以  root  权限才能执行,如果是普通用户执行时,需要在命令前加  sudo  命令来提升权限为  root  权限。 案例演示 1: 使用  login  命令来登录系统(文件  /etc/nologin  不存在)。 首先查看当前登录的用户名是  fzm  。  使用  newUser  用户来登录系统,然后查看当前登录的用户名。  使用  logout  或者  exit  命令退出  newUser  用户,然后在查看当前登录用户是否为  fzm  。  2: 使用  login  命令来登录系统(文件  /etc/nologin  存在)。 首先查看当前登录的用户名是  fzm  。  在  /etc  目录下新创建一个  nologin  文件,使用如下命令创建:  sudo touch /etc/nologin  使用普通用户  newUser  来登录系统,查看是否可以登录成功。  发现使用  newUser  用户是无法登录系统的,只有使用  root  用户才能登录系统。 使用 su 命令切换用户身份  su  命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号的密码。 当使用  su  命令切换用户后,使用  exit  命令退出当前身份,返回原有登录用户身份。 注:如果当前用户身份是 root ,则使用 su 命令切换到其他用户的时候不需要相应用户的密码 命令格式: su [命令参数] 参数  参数为登录的用户名,如果没有参数,则默认切换为  root  用户。 常见命令参数 •  -c<指令> 或 --command=<指令> :执行完指定的指令后,即恢复原来的身份; •  -l 或 --login :改变身份时,也同时变更工作目录,以及 HOME , SHELL , USER , logname 。此外,也会变更PATH变量; •  -m , -p 或 --preserve-environment :变更身份时,不要变更环境变量; •  -s<shell> 或 --shell=<shell> :指定要执行的 shell 。  su  命令所有使用者都可以执行。 案例演示 1: 使用  su  命令切换当前用户身份(不改变当前工作目录)。 首先查看当前登录的用户名是  fzm  ,当前工作目录是  /home/fzm  。  切换当前用户为  newUser  用户,然后查看当前用户身份当前工作目录。  使用  exit  命令退出  newUser  用户,然后在查看当前登录用户身份当前工作目录。  2: 使用  su  命令切换当前用户身份(改变当前工作目录)。 首先查看当前登录的用户名是  fzm  ,当前工作目录是  /home/fzm  。  切换当前用户为  newUser  用户,然后查看当前用户身份当前工作目录。  使用  exit  命令退出  newUser  用户,然后在查看当前登录用户身份当前工作目录。  编程要求 根据右侧窗口命令行内的提示,在  Begin - End  区域内进行命令行语句补充,具
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值