好好爱自己!

linux用户管理

编辑 vim /etc/passwd 的时候,“观察”发现 最后的shell字段,有些为 bin/bash , 有些为bin/false , 有些为 usr/sbin/nologin

思考为什么会有这些差异呢??探寻的结果大大的有,哈哈:)

bin/bash 是用户可以shell登录,登录的之后使用的shell就是 bin/bash

bin/fase 和usr/sbin/nologin表示禁止用户shell登录。

所以:要拒绝系统用户登录,可以将其shell设置为/usr/sbin/nologin或者/bin/false

还有一种方法禁止所有非root用户shell登录, touch /etc/nologin 里面可以有内容也可以为空,就可以了。创建这个文件好了之后,非root用户就

不能shell 登录这台linux系统了。非常酷吧!

 

 

人生的路,终归是要靠自己走,别人谁也无法替代。 —— 思诺(saynoer)

--------------------------------------------------------------

原文:http://openwares.net/linux/refuse_login.html

要拒绝系统用户登录,可以将其shell设置为/usr/sbin/nologin或者/bin/false

1
# usermod -s | --shell /usr/sbin/nologin username

或者

1
# usermod -s | -shell /bin/false username

/bin/false

/bin/false什么也不做只是返回一个错误状态,然后立即退出。将用户的shell设置为/bin/false,用户会无法登录,并且不会有任何提示。

/usr/sbin/nologin

nologin会礼貌的向用户显示一条信息,并拒绝用户登录:

This account is currently not available.

有一些软件,比如一些ftp服务器软件,对于本地非虚拟账户,只有用户有有效的shell才能使用ftp服务。这时候就可以使用nologin使用户即不能登录系统,还能使用一些系统服务,比如ftp服务。/bin/false则不行,这是二者的重要区别之一。

/etc/nologin

如果存在/etc/nologin文件,则系统只允许root用户登录,其他用户全部被拒绝登录,并向他们显示/etc/nologin文件的内容

锁定用户账户

锁定用户账户

1
# passwd -l | --lock username

#解锁用户账户

1
# passwd -u | --unlock username

删除用户密码

1
# passwd -d | --delete username

----------------------------------------------------------------

参考:

早上来了没什么事看会鸟哥的Linux私菜房,看看用户管理的相关东西。知道了Linux用户管理最重要的两个文件就是/etc/passwd和/etc/shadow这两个文件。其中/etc/passwd是用来存储登陆用户信息的,它的基本格式如下:

    root:x:0:0:root:/root:/bin/bash

    bin:x:1:1:bin:/bin:/sbin/nologin

    daemon:x:2:2:daemon:/sbin:/sbin/nologin

    adm:x:3:4:adm:/var/adm:/sbin/nologin

    由上面的格式可以看出,每一行代表一个用户的信息,一共包括7个字段的信息,每个字段的信息用冒号隔开。这7个字段分别代表:

1. 账号名称:即登陆时的用户名

2. 密码:早期UNIX系统的密码是放在这个文件中的,但因为这个文件的特性是所有程序都能够读取,所以,这样很容易造成数据被窃取,因此后来就将这个字段的密码数据改放到/etc/shadow中了

3. UID:用户ID,每个账号名称对应一个UID,通常UID=0表示root管理员

4. GID:组ID,与/etc/group有关,/etc/group与/etc/passwd差不多,是用来规范用户组信息的

5. 用户信息说明栏: 用来解释这个账号是干什么的

6. 家目录:home目录,即用户登陆以后跳转到的目录,以root用户为例,/root是它的家目录,所以root用户登陆以后就跳转到/root目录这里

7. Shell:用户使用的shell,通常使用/bin/bash这个shell,这也就是为什么登陆Linux时默认的shell是bash的原因,就是在这里设置的,如果要想更改登陆后使用的shell,可以在这里修改。另外一个很重要的东西是有一个shell可以用来替代让账号无法登陆的命令,那就是/sbin/nologin。

    当我看到这里的时候,我就去登陆我们实验室的服务器,打开/etc/passwd这个文件,里面果然有很多的类似上面格式的用户账号信息。由于我们实验室服务器开放了ftp服务,而我正好有一个ftp的账号,我看到我的账号信息是这样的lxb:x:530:525::/opt/ftp:/sbin/nologin,通过上面的学习,我觉得它的意思大概是这样的,用户名是lxb,x表示密码经过加密放到/etc/shadow文件中了,UID是530,GID是525,访问的目录是/opt/ftp,我看了一下,这个目录下的内容正好是我登陆ftp后所看到的,至于最后一个/sbin/nologin,应该是登录时候使用的shell,但是它为什么是nologin呢,难道不让我登陆吗?

    于是我用root权限登陆到里面,把后面的/sbin/nologin改成了/bin/bash,重新用ssh进行登陆,真的登陆进去了,而且登陆后的目录正好是/opt/ftp。但是我的权限依旧没有改变,很多文件还是打不开。于是我明白了,这个nologin的作用就是限制某些用户通过ssh登陆到shell上。有时候为了进行系统维护工作,临时禁止其他用户登录,可以使用 nologin 文件,具体做法是在/etc/目录下创建一个名称为 nologin 的文件。例如:

    #touch /etc/nologin

    这样将禁止随后的用户登录到系统中。禁止用户登录时,/etc/nologin 文件中的内容将会显示给用户,会一闪而过。例如,按如下方式创建 nologin 文件:
    disable login by admin temperarily!

    当用户试图登陆时,将会给用户显示"disable login by admin temperarily!",当系统维护结束以后,再删除/etc/nologin文件,其他用户就又可以恢复登陆了,这只是限于能登陆shell的用户来说的,对于那些登陆shell为/sbin/nologin的用户来说没有影响,因为他们本身就无法登陆shell。

posted @ 2017-01-18 09:21  立志做一个好的程序员  阅读(306)  评论(0编辑  收藏  举报

不断学习创作,与自己快乐相处