Linux之用户管理--初级上
管理用户命令汇总
命令 | 注释说明(特殊颜色的必须掌握) |
---|---|
useradd增 | 同adduser命令,执行此命令可在系统中添加用户。(更改4个用户文件) |
userdel删 | 执行此命令可删除用户及相关用户的配置或文件(更改4个用户文件) |
passwd | 执行此命令可为用户设置或修改密码。更改/etc/shadow文件 |
chage | 修改用户密码属性。管理/etc/shadow文件 |
usermod改 | 修改用户信息的命令,可以通过usermod来修改登录名,用户的家目录等等 |
id查 | 查看用户的UID,GID及所归属的用户组 |
su | 用户角色切换工具。su - |
sudo |
|
visudo | visudo配置sudo权限的编辑命令;也可以不用这个命令,直接用vi来编辑/etc/sudoers实现。但推荐用visudo来操作(会自动检查语法) |
管理用户组命令汇总
命令 | 注释说明(特殊颜色标记需要掌握) |
---|---|
groupadd | 添加用户组 |
groupdel | 删除用户组 |
/etc/skel目录是用来存放新用户环境变量文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下:默认情况下,/etc/skel目录下的所有文件都是隐藏文件(以.点开头的文件);通过修改、添加、删除/etc/skel目录下的文件,我们可为新创建的用户提供统一的,标准的,初始化用户环境。
[root@chengliang ~]# cd /etc/skel
[root@chengliang skel]# ls
readme
[root@chengliang skel]# ls -al
total 20
drwxr-xr-x. 2 root root 4096 May 12 22:14 .
drwxr-xr-x. 79 root root 4096 May 16 17:07 ..
-rw-r--r--. 1 root root 18 May 11 2016 .bash_logout
-rw-r--r--. 1 root root 176 May 11 2016 .bash_profile
-rw-r--r--. 1 root root 124 May 11 2016 .bashrc
-rw-r--r--. 1 root root 0 May 12 22:14 readme
[root@chengliang skel]#
命令说明: 在/etc/skel/目录下创建一个文件readme,然后我们创建一个新用户,发现在用户的家目录里也默认有一个readme。因此,得出结论,/etc/skel/目录下的所有文件都会默认出现在新建用户的家目录里。
[root@chengliang ~]# su - cheng
[cheng@chengliang ~]$ ls -al
total 24
drwx------. 2 cheng cheng 4096 May 13 01:23 .
drwxr-xr-x. 7 root root 4096 May 12 22:15 ..
-rw-------. 1 cheng cheng 125 May 13 01:23 .bash_history
-rw-r--r--. 1 cheng cheng 18 May 11 2016 .bash_logout
-rw-r--r--. 1 cheng cheng 176 May 11 2016 .bash_profile
-rw-r--r--. 1 cheng cheng 124 May 11 2016 .bashrc
-rw-r--r--. 1 cheng cheng 0 May 12 22:14 readme
[cheng@chengliang ~]$
企业面试题:请问如下登录故障的原理及解决办法?
-bash-4.1$
-bash-4.1$
问题示例: 命令说明:普通用户强制删除了家目录里的变量文件就会出现这种问题。
[teacher@chengliang ~]$ ls -al
total 20
drwx------. 2 teacher teacher 4096 May 30 23:32 .
drwxr-xr-x. 7 root root 4096 May 12 22:15 ..
-rw-------. 1 teacher teacher 149 May 30 23:32 .bash_history
-rw-r--r--. 1 teacher teacher 176 May 11 2016 .bash_profile
-rw-r--r--. 1 teacher teacher 124 May 11 2016 .bashrc
[teacher@chengliang ~]$ rm ./.bash*
[teacher@chengliang ~]$ ls -al
total 8
drwx------. 2 teacher teacher 4096 May 30 23:34 .
drwxr-xr-x. 7 root root 4096 May 12 22:15 ..
[teacher@chengliang ~]$ exit
logout
[root@chengliang ~]# su - teacher
-bash-4.1$
解决方法:我们去把/etc/skel/目录下的变量文件复制回来就好了
[root@chengliang ~]# su - teacher
-bash-4.1$
-bash-4.1$ cp /etc/skel/.bash* ~
-bash-4.1$ exit
logout
[root@chengliang ~]# su - teacher
[teacher@chengliang ~]$ ls -al
total 24
drwx------. 2 teacher teacher 4096 May 30 23:36 .
drwxr-xr-x. 7 root root 4096 May 12 22:15 ..
-rw-------. 1 teacher teacher 80 May 30 23:36 .bash_history
-rw-r--r--. 1 teacher teacher 18 May 30 23:36 .bash_logout
-rw-r--r--. 1 teacher teacher 176 May 30 23:36 .bash_profile
-rw-r--r--. 1 teacher teacher 124 May 30 23:36 .bashrc
[teacher@chengliang ~]$
知识扩展*和.*的问题
[root@chengliang etc]# cp /etc/skel/* /tmp/
[root@chengliang etc]# cd /tmp/
[root@chengliang tmp]# ls
etc mysql.sock readme
[root@chengliang tmp]# ls -al
total 16
drwxrwxrwt. 4 root root 4096 May 30 23:48 .
dr-xr-xr-x. 24 root root 4096 May 12 15:28 ..
drwxrwxrwt. 2 root root 4096 Nov 12 2016 .ICE-unix
drwxr-xr-x. 8 root root 4096 Nov 20 2016 etc
srwxrwxrwx. 1 mysql mysql 0 May 10 21:08 mysql.sock
-rw-r--r--. 1 root root 0 May 30 23:48 readme
[root@chengliang tmp]#
*不复制隐藏文件,所以/etc/skel/目录下的隐藏文件不会复制到/tmp/目录下
那么在运行cp /etc/skel/.*之前,我们先看看.*里都有什么东西? [root@chensiqi1 ~]# ls /etc/skel/.*
/etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc /etc/skel/.:
readme /etc/skel/..:
ConsoleKit inputrc quotatab
DIR_COLORS iproute2 rc
DIR_COLORS.256color issue rc.d
DIR_COLORS.lightbgcolor issue.bak rc.local
NetworkManager issue.net rc.sysinit
X11 issue.net.bak rc0.d
abrt kdump-adv-conf rc1.d
acpi kdump.conf rc2.d
adjtime krb5.conf rc3.d
aliases latrace.conf rc4.d
aliases.db latrace.d rc5.d
alsa ld.so.cache rc6.d
东西太多以下省略....
.*连etc下的东西都复制出来了,这是为什么呢?别忘了,目录下都还有些什么东西,还有.和..
.代表当前目录,..代表上级目录。因此.*就把上级目录的所有文件也复制了。所以我们在复制隐藏文件的时候不能用.*来代表所有。
用户管理命令详解
添加用户命令useradd
- 添加用户的命令有useradd和adduser,这两个命令所能达到的效果是一样的。当然除了useradd和adduser命令以外,我们还能通过修改用户配置文件/etc/passwd和/etc/group及手动创建文件的办法来直接添加用户,不过这里并不推荐,这里建议大家统一使用useradd命令,本文也仅会针对useradd命令进行举例讲解。
- 当使用useradd命令不加参数选项,后面直接跟所添加用户名时,系统首先会读取配置文件/etc/login.defs和/etc/default/useradd中所定义的参数或规则,根据设置的规则添加用户,同时会向/etc/passwd和/etc/group文件内添加新建用户和用户组记录。
- 当然/etc/passwd和/etc/group的加密资讯文件/etc/shadows和/etc/gshadow也会同步生成记录,同时系统还会根据/etc/default/useradd文件中所配置的信息建立用户的家目录,并复制/etc/skel中的所有文件(包括隐藏的环境配置文件)到新用户的家目录中。
useradd语法:
[root@chensiqi ~]# man useradd #下面的内容源于此命令帮助的结果,对于部分地方做了修改
名称:
useradd - 账号建立或更新新用户资讯的工具
语法:
useradd [-c comment] [-d home_dir]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group[,....]]
[-m [-k skeleton_dir] | -M] [-s shell]
[-u uid[-o][-n][-r] login]
useradd -D [-g default_group] [-b default_home]
[-f default_inactive] [-e default_expire_date]
[-s default_shell]
描述:
新账号建立
当不加-D 参数时,useradd指令使用命令列来指定新账号的设定值和使用系统上的预设值(指前文提到的/etc/login.defs和/etc/default/useradd等配置文件)。新用户账号将产生一些系统档案,如用户目录的建立,拷贝起始档案等,这些均可以利用命令列选项指定。此版本为Red Hat Linux 提供,可帮每个新加入的用户建立和用户同名的group,要达到这个目的,不能添加-n选项。
为了方便查看,我们用表格的方式把useradd可使用的参数选项展现给大家如下所示:
|useradd 参数选项|注释说明(特殊颜色的需要掌握)|
|--|--|
|-c comment|新账号password档的说明栏|
|-d home_dir|新账号每次登入时所使用的home_dir.预设值为default_home内login名称,并当成登入时目录名称|
|-e expire_date|账号终止日期。日期的指定格式为MM/DD/YY或者YYYY-MM-DD
|
|-f inactive_day|账号过期几日后永久停权。当值为0时账号则立刻被停权。而当值为-1时则关闭此功能,预设值-1|
|-g initial_group|group 名称以数字来作为用户登入起始用户组(group)。用户组名须为系统现有存在的名称。用户组数字也须为现有存在的用户组,预设的用户组数字为1.
|
|-G group,[...]|定义此用户为多个不同groups的成员,每个用户组使用“,”逗号分隔。用户组名同-g选项的限制。默认值为用户的起始用户组。|
|-m|用户目录如不存在则自动建立。|
|-M|不建立用户家目录,优先于/etc/login.defs文件的设定。一般创虚拟用户时不建立家目录,部署服务时需要创建虚拟用户。
|
|-n|默认情况用户的用户组与用户的名称会相同。如果命令加了-n参数,就不会生成和用户同名的用户组了。|
|-r| 此参数是用来建立系统账号。|
|-s shell|用户登入后使用的shell名称。默认值不填写,这样系统会帮你指定预设的登入shell(根据/etc/default/useradd预设的值)。cat /etc/shells系统支持的shell
|
|-u uid|用户的ID值。这个值必须是唯一的,除非用-o选项。数字不可为负值
|
示例1:useradd -c,-u,-G,-s,-d,-m多个参数组合例子,自定义用户家目录。
示例2:新建用户默认的账号终止日期
示例3:添加用户时的默认shell类型/bin/bash改为/bin/sh
[root@chensiqi1 ~]# cat /etc/shells #查看当前系统支持的shell种类
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[root@chensiqi1 ~]# grep SHELL /etc/default/useradd #查看当前默认的shell配置
SHELL=/bin/bash
[root@chensiqi1 ~]# useradd -D -s /bin/sh #修改为/bin/sh
[root@chensiqi1 ~]# grep SHELL /etc/default/useradd #查看修改结果
SHELL=/bin/sh #修改成功
特别提示,这里仅更改了配置文件的默认值,仅对之后建立的新用户生效,和老用户无关。
注意了,这里我更改shell类型之后,useradd新增用户时发现登陆,会出现如下登陆故障!
-bash-4.1$
-bash-4.1$
Linux之用户管理--初级上的更多相关文章
- Linux实战教学笔记14:用户管理初级(上)
第十四节 用户管理初级(上) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,账号管理 1.1 管理用户命令汇总 命令 注释说明(特殊颜色的必须掌握) useradd增 ...
- Linux实战教学笔记14:用户管理初级(下)
第十四节 用户管理初级(下) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,用户查询相关命令id,finger,users,w,who,last,lastlog,gr ...
- Linux实战教学笔记15:用户管理初级(下)
第十四节 用户管理初级(下) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,用户查询相关命令id,finger,users,w,who,last,lastlog,gr ...
- linux 下用户管理
linux 下用户管理 一.用户的分类 1.超级用户:root UID=0 2.系统用户:不需要登录系统,对应用程序服务,主要维护系统的正常运行:UID = 1 ~ 499(RHEL7 = 1 ~ 9 ...
- 基于操作系统原理的Linux 的用户管理
一.实验目的 1.掌握为root用户修改密码的方法. 2.掌握创建新用户的方法. 3.掌握用户组的管理方法. 4.掌握为用户授权的方法. 二.实验内容 1.Linux的用户管理 (1)创建新用户创建新 ...
- linux系统用户管理(一)
Linux系统用户管理1.用户管理*****2.Linux用户命令****3.用户创建的原理***4.密码管理***5.组命令管理**6.身份切换*****7.sudo提升权限***** 我们现在所使 ...
- (四)Linux之用户管理(用户和用户组)
Linux之用户管理(用户和用户组) 目录 Linux之用户管理(用户和用户组) 一.概述 二.用户和组的关系 三.关于UID和GID(用户ID和组ID) 四.用户和组的数据 /etc/passwd内 ...
- Linux下用户管理、目录结构
linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录. 目录介绍: / root,存放root用户的相关文件 home,存放普通用户的相关文 ...
- Linux下用户管理:创建用户指定密码
首先我们来了解下Linux下用户管理的概念: 如上图所示,左边的一列表示用户名,中间的一列表示用户组,最右边的一列表示的是家目录.用户名我们这里处于简单就,添加了root,xm,xh三个用户.用户组和 ...
随机推荐
- 分享一个完整的Mybatis分页解决方案
Mybatis 的物理分页是应用中的一个难点,特别是配合检索和排序功能叠加时更是如此. 我在最近的项目中开发了这个通用分页器,过程中参考了站内不少好文章,阅读源码帮助更大minglisoft.cn/t ...
- python selenium 元素定位(三)
上两篇的博文中介绍了python selenium的环境搭建和编写的第一个自动化测试脚本,从第二篇的例子中看出来再做UI级别的自动化测试的时候,有一个至关重要的因素,那就是元素的定位,只有从页面上找到 ...
- 论MySQL何时使用索引,何时不使用索引
索引: 使用索引可快速访问数据库表中的特定信息.索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(name)列.如果要按姓查找特定职员,与必须搜索表中的所有行相比,索 ...
- ehcache-----在spring和hibernate下管理ehcache和query cache
1. 在Hibernate配置文件中设置: <!-- Hibernate SessionFactory --> <bean id="sessionFactory" ...
- 开涛spring3(7.4) - 对JDBC的支持 之 7.4 Spring提供的其它帮助
7.4 Spring提供的其它帮助 7.4.1 SimpleJdbc方式 Spring JDBC抽象框架提供SimpleJdbcInsert和SimpleJdbcCall类,这两个类通过利用JDB ...
- rowid去重(删除表的重复记录)
-- 构造测试环境SQL> create table andy(id int,name varchar2(10));Table created.SQL>insert into andy v ...
- vue-cli项目中怎么mock数据
在vue项目中, mock数据可以使用 node 的 express模块搭建服务 1. 在根目录下创建 test 目录, 用来存放模拟的 json 数据, 在 test 目录下创建模拟的数据 data ...
- 刨根究底字符编码之十三——UTF-16编码方式
UTF-16编码方式 1. UTF-16编码方式源于UCS-2(Universal Character Set coded in 2 octets.2-byte Universal Character ...
- IntelliJ IDEA 2017.1.4 x64配置说明
只是为了研究下idea这款编译器怎么使用.开门见山,说下如何配置这款编译器,不配置也能用,但是强迫症表示不服.下面直入正题: 下载与安装就不说了,除了更改安装目录外,没啥注意的地方,建议下载idea去 ...
- css解决IE6,IE7,firefox兼容性问题
在当前IE6 IE7 FifeFox三分天下的情况下,浏览器兼容性问题成为网页设计者需要考虑的问题. 区别不同浏览器的CSS hack写法: 区别IE6与FF: background:orange;* ...