Linux -- 用户与用户组

1.Linux 系统中有三种角色:所有者(用户),用户组与其他人,一张图可以说明用户与用户组的关系。

如图,某公司相当于一个用户组,该用户组下有A,B两个用户,用户拥有各自的私密空间和公用空间,不是该用户组下的就是其他人,其他人无法访问用户组下的内容。

2.GID 与 UID

UID 可以理解为 user ID,也就是 用户ID,GID 可以理解为 group ID,也就是 用户组ID,这两个 ID 值非常重要,一般不建议更改,比如 Linux 中会根据 UID 和 GID 来判断一个文件属于哪个用户和用户组,如果随意改动 UID 和 GID,导致无法找到用户下的文件或者对文件没有了权限,会很麻烦。

用户ID 的范围不同,在 Linux 中代表的特性也不同,在学习对用户组操作前,先了解一下不同 UID 的范围对应的不同特性。

查看用户的 UID 和 GID  id username ,如

[root@localhost ~]# id sherlock
uid=505(sherlock) gid=505(holmes) 组=505(holmes)

也可以查看 /etc/passwd 文件,其中第一个值代表账号名称,第三个值代表 UID,第四个值代表GID,如 sherlock 的 UID 为505,GID 为505

[root@localhost ~]# grep 'sherlock' /etc/passwd
sherlock:x:505:505::/home/sherlock:/bin/bash

3.用户组和用户常用的相关系统文件

/etc/passwd - 使用者账号咨询
/etc/shadow - 使用者账号咨询加密
/etc/group - 用户组信息

Linux -- 用户

1. useradd,具体的 useradd 用法可以查看帮助手册(man useradd)

-u 后面接UID,指定某个UID给该用户

-r 创建一个系统账号,UID小于500

-d 指定某个目录成为主文件夹,默认使用home下的login名称对应的目录为用户的主文件夹

-g 初始用户组,默认的用户组数字为1

-G 后面接组名,代表将用户加入某些组,组与组之间用 ”,” 号隔开

-m 如果没有用户目录则自动创建(一般账号)

-M 不创建用户目录(系统账号)

-c 设置账号 /etc/passwd的说明

-e 账号的失效日期,后面接”YYYY-MM-DD”

-f 密码失效日期,0为立即失效,-1为永不失效,默认为-

-s 后面接shell,默认为/bin/bash

-n 取消将用户加入设置的默认用户组(组名与用户名相同),如果取消,用户会加入默认的100(users) 用户组下
  • 新增用户 useradd username
[root@localhost ~]# useradd sherlock
[root@localhost ~]# id sherlock
uid=(sherlock) gid=(sherlock) 组=(sherlock)
#默认将 /home/sherlock 作为用户的主文件夹
[root@localhost ~]# ll -d /home/sherlock
drwx------ sherlock sherlock 2月 : /home/sherlock
# passwd/shadow/group 添加了这个用户和默认设置的用户组信息
[root@localhost ~]# grep sherlock /etc/passwd /etc/shadow /etc/group
/etc/passwd:sherlock:x::::/home/sherlock:/bin/bash
/etc/shadow:sherlock:!!:::::::
/etc/group:sherlock:x::
  • 设置特定的 UID 给新用户(一般不用)
[root@localhost ~]# useradd -u  sherlock
  • 新增用户时设置用户的初始用户组(注意:设置的用户组必须已经存在)
[root@localhost ~]# useradd sherlock -g holmes
[root@localhost ~]# id sherlock
uid=(sherlock) gid=(holmes) 组=(holmes)
  • 新增用户时将用户加入某个用户组(注意:加入的用户组必须已经存在)
[root@localhost ~]# useradd sherlock -G demo
[root@localhost ~]# id sherlock
uid=(sherlock) gid=(sherlock) 组=(sherlock),(demo)
  • 新增用户时设置说明
[root@localhost ~]# useradd sherlock -g holmes -c "I am sherlock holmes"
[root@localhost ~]# grep sherlock /etc/passwd
sherlock:x:::I am sherlock holmes:/home/sherlock:/bin/bash
  • 新增用户,并设置用户为不可登录主机
[root@localhost ~]# useradd -c "tony" -s /sbin/nologin tony
  • 新增系统账号
[sherlock@localhost home]$ useradd -r sherlock
  • 查看 useradd 的默认值
[root@localhost ~]# useradd -D
GROUP= #默认用户组,如果使用useradd -n username 就会默认加入这个用户组
HOME=/home #默认主文件目录
INACTIVE=- #密码失效日,/etc/shadow 第7列
EXPIRE= #账号失效日,/etc/shadow 第8列
SHELL=/bin/bash #默认的shell
SKEL=/etc/skel #用户主文件夹的内容数据参考目录
CREATE_MAIL_SPOOL=yes #是否自动创建用户的邮箱

2.passwd 密码设置

用法:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

-l 将 /etc/shadow 第二列最前面加上!,使得密码失效
-u 与 -l 相反
-S 列出密码的相关参数
-n 不可更改密码的天数
-x 必须要更改密码的天数
-w 密码过期前的警告天数
-i 密码失效的日期
  • 设置用户密码
[root@localhost ~]# passwd sherlock
更改用户 sherlock 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
  • 查看用户的密码参数
[root@localhost ~]# passwd -S sherlock
sherlock PS -- - (密码已设置,使用 SHA512 加密。)
#用户名 PS 密码创建日期 最小天数 更改天数 警告天数 密码是否会失效(-立即失效,--永不失效)
  • 修改用户的需要更改密码的天数和失效天数
[root@localhost ~]# passwd -x  -i  sherlock
调整用户密码老化数据sherlock。
passwd: 操作成功
[root@localhost ~]# passwd -S sherlock
sherlock PS -- (密码已设置,使用 SHA512 加密。)
#用户名 PS 密码创建日期 最小天数 在30天后需要更改密码 警告天数 密码60天后会失效

3.chage 修改密码参数

用法:chage [options] [LOGIN]

-l 列出账号的详细密码信息
-d 最后一次更改密码的日期
-E 账号失效日
-I 密码失效日期
-m 密码最短保留天数
-M 密码需要修改天数
-W 密码过期前的警告日期
  • 显示密码的详细参数信息
[root@localhost ~]# chage -l sherlock
Last password change : Feb ,
Password expires : Mar ,
Password inactive : May ,
Account expires : never
Minimum number of days between password change :
Maximum number of days between password change :
Number of days of warning before password expires :
  • 强制用户首次登录时必须更改密码,可以在创建用户时加入 [root@localhost ~]# chage -d 0 username ,效果如下:
[root@localhost ~]# chage -d  sherlock
[sherlock@localhost ~]$ chage -l sherlock
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : never
Minimum number of days between password change :
Maximum number of days between password change :
Number of days of warning before password expires :

4.usermod 修改用户账号数据

用法:

usermod [-c comment] [-d home_dir [ -m]]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group[,...]]
[-l login_name] [-s shell]
[-u uid [ -o]] login

-u 后面接UID,指定某个UID给该用户

-r 创建一个系统账号,UID小于500

-d 指定某个目录成为主文件夹,默认使用home下的login名称对应的目录为用户的主文件夹

-g 初始用户组,默认的用户组数字为1

-G 后面接组名,代表将用户加入某些组,组与组之间用 ”,” 号隔开

-m 如果没有用户目录则自动创建(一般账号)

-M 不创建用户目录(系统账号)

-c 设置账号 /etc/passwd的说明

-e 账号的失效日期,后面接”YYYY-MM-DD”

-f 密码失效日期,0为立即失效,-1为永不失效,默认为-

-s 后面接shell,默认为/bin/bash

-n 取消将用户加入设置的默认用户组(组名与用户名相同),如果取消,用户会加入默认的100(users) 用户组下
  • 修改账号的说明 usermod -c “说明内容” username
[root@localhost ~]# grep sherlock /etc/passwd
sherlock:x:::I am sherlock holmes:/home/sherlock:/bin/bash
[root@localhost ~]# usermod -c "I am soooo cool" sherlock
[root@localhost ~]# grep sherlock /etc/passwd
sherlock:x:::I am soooo cool:/home/sherlock:/bin/bash
  • 修改账号的主目录,需要注意,修改账号主目录后,需要把环境配置文件移到新目录下,否则切换到该用户时会造成  -bash-4.1$ 模式,具体操作如下
[root@localhost ~]# usermod -d /home/demo sherlock
[root@localhost ~]# cp -a /etc/skel/. /home/demo

如果触发了 -bash-4.1$ 模式,将 /etc/skel/. 的内容拷贝到用户新的主目录下 主目录下的环境变量有:

5.userdel 删除用户

此命令会删除用户的所有数据,加上 -r 参数代表连用户的主文件夹一起删除

[sherlock@localhost ~]$ userdel -r sherlock

用户组内容见 用户与用户组之用户组篇 

https://www.cnblogs.com/holmes-cat/p/10346842.html

Linux -- 用户篇的更多相关文章

  1. Linux 用户篇——用户管理命令之id、whoami、su、chage

    一.浅谈id.whoami.su.chage 本篇是续写上一篇<Linux 用户篇——用户管理命令之useradd.passwd.userdel.usermod>. (1)id命令 命令格 ...

  2. Linux 用户篇——用户管理命令之useradd、passwd、userdel、usermod

    一.用户重要,用户管理命令同样重要 用户是Linux系统安全的核心,每个登录Linux系统的用户都会分配相应的权限,这些权限取决于能否访问系统中各种对象.而管理这些用户的相关信息离不开用户管理命令,比 ...

  3. Linux 用户篇——用户管理的配置文件

    一.用户管理之配置文件的重要性 在Linux系统中,用户账户的相关信息是存放在相关配置文件中.而Linux安全系统的核心是用户账号,用户对系统中各种对象的访问权限取决于他们登录系统时用的账户,并且Li ...

  4. 不就是抽个血吗,至于么-jQuery,Linux完结篇

    hi 趁着周一去抽血化验,真开心...下午报告才出来,不过早上来了就开始各种晕菜,叫错名字,说错话.....至于么.. 还有在教研室的30天就可以肥家了,凯森凯森.今天不想干活(哪天想干过我就问问), ...

  5. LNMP平台搭建---Linux系统安装篇

    在互联网网站开发领域,有一个名词,大家一定不陌生,那就是LAMP,经典的Web服务器环境,由Linux+Apache+MySQL+PHP组成,,后来,一个名叫Nginx的Web服务器开源出来了,因其更 ...

  6. 用户管理 之 Linux 用户管理工具介绍

    Linux是一个多用户的操作系统,她有完美的用户管理工具,这些工具包括用户的查询.添加.修改,以及用户之间相互切换的工具等:通过这些工具,我们能安全.轻松的完成用户管理: 在这里我们要引入用户控制工具 ...

  7. 对中级Linux 用户非常有用的20 个命令

    也许你已经发现第一篇文章非常的有用,这篇文章是继对初级Linux用户非常有用的20个命令的一个延伸. 第一篇文章的目的是为新手准备的而这篇文章则是为了Linux的中高级用户.在这里你将学会如何进行自定 ...

  8. 对中级 Linux 用户有用的 20 个命令

    也许你已经发现第一篇文章非常的有用,这篇文章是继对初级Linux用户非常有用的20个命令的一个延伸. 第一篇文章的目的是为新手准备的而这篇文章则是为了Linux的中高级用户.在这里你将学会如何进行自定 ...

  9. Linux入门篇(一)——文件

    这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...

随机推荐

  1. browserslist 目标浏览器配置表

    为什么需要: 根据提供的目标浏览器的环境来,智能添加css前缀,js的polyfill垫片,来兼容旧版本浏览器,而不是一股脑的添加.避免不必要的兼容代码,以提高代码的编译质量. 共享使用browser ...

  2. js event事件对象概括

    事件是用户或者浏览器自身执行的动作,而响应某个事件的函数就叫做事件处理程序或者叫事件侦听器. 定义事件处理程序可以大致分为以下三种: 一.html事件处理程序 元素支持的每种事件都可以用一个与之对应的 ...

  3. JS判断是否到达页面底部

    <script type="text/javascript">//判断整个文档到底部$(window).scroll(function(){    //滚动条所在位置的 ...

  4. wpf 转型 android开发总结

    今年马上就要过去了,这一年中我经历了从wpf转型到qt/qml,然后最近又要开始搞android,从我个人的经验来看不论是qml还是android从框架和设计上都跟wpf类似,并且移动端的设计因为很多 ...

  5. C++异常安全

    转自:http://www.cnblogs.com/zgfLawliet/p/3417308.html   异常安全的代码是指,满足两个条件 1异常中立性 : 是指当你的代码(包括你调用的代码)引发异 ...

  6. SQL-SERVER学习(一) 数据表的基本操作

    1.创建一个数据库,数据库的名字是UserInfo create database UserInfo; 2.创建一个数据表,数据表的名字是UserInfocreate table UserInfo( ...

  7. zimbra邮件服务器的搭建和迁移

    背景: 公司最近由于服务器费用问题,需要将邮件服务器从亚马逊(新加坡)云服务器A迁移到阿里云(香港)云服务器B. 由于邮箱使用的是域名访问,但是没有进行备案,所以只能迁移到港澳台地区,才能正常使用. ...

  8. Nginx能干啥?

    Nginx能干的事很多,很强大.官方文档详见点我. Nginx的命令行参数 -? | -h 打印帮助信息 -c file 读取指定配置文件,而不是默认的nginx.conf -g directives ...

  9. 在Clion里链接gtest

    本来以为像之前链接boost一样,加个链接路径就好了,没想到报找不到gtest的符号,搞了半天,没弄明白啥原因. 网上也没搜到好方法,只能把gtest的源码加到项目里,然后在链接了. CMake配置如 ...

  10. SOJ4459 skysky's game(贪心+优先队列)

    天天最近迷上了天天爱消除游戏,现在他觉得这个游戏已经没有意思了.所以他发明一个新的消除游戏.有n堆糖果,每一个糖果有一个重量w,天天每次都选择两个糖果合并为一个糖果,新的糖果的重量等于这两个糖果的重量 ...