zoukankan      html  css  js  c++  java
  • useradd新建用户和权限分配

    场景:在搭建Ftp服务器时候,需要新建ftp用户,其实新建的ftp用户和Linux中root新建的用户一样,只是需要了解新建用户时候的相关规则。

    1 解决新建用户缺少配置文件

    1.1 新建用户 指定目录 修改密码

    1. useradd 添加用户或更新新创建用户的默认信息

    语法:useradd  选项 用户名
    

    该命令的各选项含义如下:

    -c comment    描述新用户帐号,通常为用户全名,comment 为字符串。
    -d home_dir   设置用户主目录,默认值为用户的登录名,并放在/home目录下。
    -D            创建新帐号后保存为新帐号设置的默认信息。
    -e expire_date  用 MM/DD/YYYY 格式设置帐号过期日期。
    -f inactivity   设置口令失效时间,该值为 0 使口令失效后帐号立即失效,为 -1 使该选项失效。
    -g group      设置所要创建新用户所在的基本组,group为组名。
    -k skel_dir   设置框架目录,该目录包含用户的初始配置文件,
                  创建用户时该目录下的文件都被复制到用户主目录下。
    -m   自动创建用户主目录,并把框架目录(默认为/etc/skel)下的文件复制到用户主目录下。
    -M   不创建用户主目录。
    -r   允许保留的系统帐号使用用户ID创建一个新帐号。 
    -s shell    指定用户的登录shell。
    -u user_id  设置用户ID


    代码:

    # useradd -d /home/test -m test;

    然后给test设置密码。

    # passwd test;

     

     ps:注意上述test目录中已经存在一些用户默认的配置文件。

    1.2 查看创建的用户列表

    一般情况下是:

    cat /etc/passwd 可以查看所有用户的列表
    w 可以查看当前活跃的用户列表
    cat /etc/group 查看用户组

     

     但是这样看起来不是很简洁,一个简洁的命令是

    cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more

    1.3 删除用户及目录

    按部就班的办法是先删除用户在删除目录:

    删除用户的命令是:userdel 用户名
    比如我刚建立的用户是:zhyh,则命令为:
    userdel zhyh
    执行以上命令成功后利用以下命令删除目录
    rm -rf /home/zhyh/
    一个简单的办法就是执行下面的命令
    userdel -r zhyh

     

    
    

    1.4 问题

    今天新建了一个MQM的用户 ,

    useradd -g mqm -d /var/mqm //容易缺少配置文件
    passwd mqm

    终端中显示 -bash-4.1$而不是 [mqm@locahost~]

    百度了下。据说是因为缺少配置文件,所以将缺少的配置文件复制到用户的家目录既可以。

    将/etc/skel中的文件全部复制到/var/mqm/之后,问题就得到了解决。 操作如下

    #查看用户的家目录
    cat /etc/passwd

    #-a表示复制隐藏文件
    cp -a /etc/skel/.  /var/mqm        

    linux中以 .开头的文件默认隐藏。在命令中加入-a可以对隐藏文件进行操作。

    #可以查看隐藏文件
    ls -a /etc/skel            
    
    #可以复制隐藏文件
    cp -a /etc/skel/.  /    

    如果想将一个文件隐藏,只要在文件名之前加上“ . ”即可

    #隐藏test文件
    mv test  .test   

    2 用户Shell控制

    linux adduser-s /sbin/nologin和/bin/false的区别

    /bin/false 是最严格的禁止login选项,一切服务都不能用,
    /sbin/nologin 只是不允许系统login,可以使用其他ftp等服务

    如果想要用false在禁止login的同时允许ftp,则必须在/etc/shells里增加一行/bin/false。

    知道了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可以用来替代让账号无法登陆shell的命令,那就是/sbin/nologin,此时该用户只能使用ftp登录。

    当我看到这里的时候,我就去登陆我们实验室的服务器,打开/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。

    修改用户的shell类型有两种方式:

    1、编辑/etc/passwd 文件

    vim /etc/passwd

     找到要修改的用户,直接进行编辑即可。

    2、使用命令修改

    usermod -s /bin/bash cs408
    usermod -s /sbin/nologin cs408 //限定用户cs408不能shell登录,只能ftp
  • 相关阅读:
    JavaEE——SpringMVC(11)--拦截器
    JavaEE——SpringMVC(10)--文件上传 CommonsMultipartResovler
    codeforces 460A Vasya and Socks 解题报告
    hdu 1541 Stars 解题报告
    hdu 1166 敌兵布阵 解题报告
    poj 2771 Guardian of Decency 解题报告
    hdu 1514 Free Candies 解题报告
    poj 3020 Antenna Placement 解题报告
    BestCoder5 1001 Poor Hanamichi(hdu 4956) 解题报告
    poj 1325 Machine Schedule 解题报告
  • 原文地址:https://www.cnblogs.com/lixuwu/p/6094555.html
Copyright © 2011-2022 走看看