场景:在搭建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::::/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

useradd新建用户和权限分配的更多相关文章

  1. linux 新建用户和权限分配

    1.创建新用户:testuser 命令:#useradd 选项 用户名 选项: -c comment 指定一段注释性描述. -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主 ...

  2. JENKINS安装及新建用户,权限配置

    JENKINS安装及新建用户,权限配置 1. 下载安装 jenkins 官网地址https://jenkins.io/index.html 下载地址https://jenkins.io/downloa ...

  3. navicat 关于orcale新建表空间,用户和权限分配

    图文教程,直观, 上面连接数据库 下面创建表空间 建表空间的设置 表空间名的设置 新建用户 填写用户名,选择默认表空间 成员属性德设置,这里因为是自己用,所以选择最大权限,其他的权限这是需要专业的了 ...

  4. jenkins针对不同的项目组对用户进行权限分配

    因jenkins上存有de(开发).te(测试)等三个不同环境的项目,同时因为项目需求,需要对不同的开发及测试人员配置不同的jenkins权限,即以项目为单位,对不同人员进行不同权限配置,要求如下: ...

  5. JENKINS针对不同项目组对用户进行权限分配

    权限需求 因JENKINS上存有de(开发).te(测试).re(预发布)等三个不同环境的项目,同时因为项目需求,需要对不同的开发及测试人员配置不同的jenkins权限,即以项目为单位,对不同人员进行 ...

  6. Linux用户及权限分配

    一.用户分类 所有者 u; 所属组 g; 其它用户 o; 所有用户 a; 二.用户管理 //查看用户 id user //添加用户 useradd user //设置密码 passwd user // ...

  7. SQL Server 2014 中新建登录及权限分配【界面版】

    本篇经验将和大家介绍分配SQL Server 2014 中,新建登录用户,分配权限,并指定该用户的数据库的方法,希望对大家的工作和学习有所帮助! 方法/步骤 1 打开 MS SQL Server Ma ...

  8. mysql 新增 删除用户和权限分配

    请一定安此步骤来创建新的用户. 1. 新增用户 mysql>insert into mysql.user(Host,User,Password) values("localhost&q ...

  9. kali下添加用户和权限分配

    1.添加用户 useradd -m test #-m的意思是创建用户的主目录 2.为用户test设置密码. passwd test 3.为添加的用户赋予权限(-a 添加 :-G 群组) 如果没有这一步 ...

随机推荐

  1. DISCUZ积分及点评需求

    1.点评设置(可增强用户互动,但又不会顶帖刷屏):目前很难限制用户通过点评刷积分,点评等同于回复但却不需要审核,目前只是简单地关闭了点评功能.需求:可以审核点评内容:可以限制点评不获得积分或每天点评获 ...

  2. .NET和JAVA 反射对比

    反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dll等程序集内部的信息.使用反射可以看到一个程序集内部的接口.类.方法.字段.属性.特性等等信息.在System.Reflectio ...

  3. View Components as Tag Helpers,离在线模板编辑又进一步

    在asp.net core mvc中增加了ViewComponent(视图组件)的概念,视图组件有点类似部分视图,但是比部分视图功能更加强大,它更有点像一个控制器. 使用方法 1,定义类派生自View ...

  4. php面试问题

    问题:请用最简单的语言告诉我PHP是什么? 回答:PHP全称:Hypertext Preprocessor,是一种用来开发动态网站的服务器脚本语言. 问题:什么是MVC? 回答:MVC由Model(模 ...

  5. 通过 itms:services://? 在线安装ipa ,跨过app-store

    1.需要一个html文件,引导下载用户在线安装ipa <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&quo ...

  6. CoolBlog开发笔记第1课:项目分析

    首先说一下CoolBlog开发笔记是我制作的<Django实战项目>系列教程基础篇的内容,使用Django来开发一个酷炫的个人博客,涉及的知识包括项目的分析,环境的搭建,模型和视图定义等等 ...

  7. (6)javascript的程序控制结构及语句-----(1)条件判断

    程序控制结构及语句 编程就是将现实应用,转换为程序能够读得懂的语法语句.Javascript编程中对程序流程控制主要是通过条件判断语句.循环控制语句及continue.break来完成的,其中条件判断 ...

  8. [leetcode-442-Find All Duplicates in an Array]

    Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others ...

  9. 从Java熟练到Android入门

    刚刚从学校出来,唉,从Java转入Android. 当初老师告诉我们Android不重要,结果,Android的所有课不是在玩手机就是在说话,没认真听也没认真看,作业也没认真做,现在想想好后悔啊,以至 ...

  10. Spring Boot框架的搭建

    一.优点: 1.简化了配置,是基于Spring4的一套快速开发整合包,减少复杂度 而Spring MVC基于Spring 的一个MVC框架 2.会有一个statrter整合包,减少样板代码 3.自动配 ...