一、用户和组的基本概念                                             

1、用户  

  用户:用于获取计算机资源或服务的标识符,比如用户名。计算机处理的是UID,用户名和UID的关系存储在/etc/passwd文件中,每个用户都有权限访问这个文件。

  影子口令:用户的密码存储在/etc/shadow中

  用户类别:

  • 管理员。管理员的UID为0
  • 普通用户(系统用户和一般用户)。普通用户的UID 1-65535,一般用户500-60000。
  • 系统用户。系统用户1-499 。一登陆就运行的后台进程(服务)以普通用户的身份来运行,叫做系统用户。系统用户只是为了运行某一类进程,这类用户不需要登陆系统。

 2、组

  容器(用户组): 也是一个标识符,用于关联权限,方便地指派权限,每一个组都有一个GID。

  影子口令:组密码存储在/etc/gshadow

  组类别:

  • 普通组(系统组和一般组)
  • 管理员组。

或者可以分为:

  • 私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组 ,该组即为私有组。
  • 基本组:用户的默认组
  • 附加组,额外组:默认组以外的其它组

 二、/etc/passwd                                                

man 5 passwd 可以查看该文件详细格式

[root@hao ~]# cat /etc/passwd
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
...
hao:x:::haohao:/home/hao:/bin/bash

字段解析:

  1、account: 登录名

  2、password:密码。 如果是x则表示是密码占位符,真正的密码在/etc/shadow中

  3、UID

  4、GID:基本组ID

  5、GECOS:用户注释信息

  6、directory:家目录

  7、shell:用户默认shell。当前系统上所有的合法shell存在/etc/shells。

[root@hao ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh

三、/etc/shadow

[root@hao ~]# cat /etc/shadow
root:$$OPY00iMwaBSqsynd$uLgMkMKWSzVor5giiOkjk9tnN0pzIMEgqqudfTwnGu..Oxrw5DcXwffI7cVyw9nUquLGNa4VTTyl0To6gRWi.:::::::
bin:*:::::::
...
hao:$$Ogbf1lEV5ro4510u$.pHdwem8YndttOjmImB/MxK//cLZ.8He0wF5pz/AS9m4R2S2pTCG.vnHqOPs9oCL1LA2E5oR9uhLRQnUih/:::::::

man 5 shadow可以查看文件详细格式

字段解析:

  1、login name 登录名

  2、encrypted password:加密后的密码,如下面。如果为*或!!,则代表该用户是锁定的,也就是不允许登陆的。

$$OPY00iMwaBSqsynd$uLgMkMKWSzVor5giiOkjk9tnN0pzIMEgqqudfTwnGu..Oxrw5DcXwffI7cVyw9nUquLGNa4VTTyl0To6gRWi.:::::::

  密码的格式为$<ID>$<SALT>$<PWD>。其中ID代表所使用的加密方法,具体如下

   ID       |    Method
-------------------------------
1 | MD5 (Linux, BSD)
2a | Blowfish (OpenBSD)
md5 | Sun MD5 For the new SHA-256 and SHA-512 methods the following values are
selected: ID | Method
-------------------------------
5 | SHA-256
6 | SHA-512

  SALT为加入的杂质,随机生成的,因此密码相同,杂质也不一定相同。

  3、date of last password change。上次密码更改时间(从1970年1月1号开始算起经过的天数)。

  4、 minimum password age。密码最短使用期限

  5、maximum password age 密码最长使用期限。

  6、password warning period:密码警告期限

  7、password inactivity period:密码宽限期

  8、account expiration date:密码有效期

  9、reserved field:保留字段

常用的加密方法:

  对称加密:加密和解密使用同一个密码。

  公钥加密:每个密码成对出现,一个为私钥(secret key),一个公钥(public key)即公钥加密,私钥解密或私钥加密,公钥解密,即公钥加密只能使用与之对应的私钥机密,反之亦然。公钥加密的秘钥长度比对称加密要长的多,安全性也要比对称加密安全,但是速度要慢,一般慢三个数量级,因此公钥加密很少拿来加密数据,用于做秘钥交换。

  单向加密:或称为散列加密。不能由密文取得明文。用于实现提取数据特征码,每个数据的特征码唯一,如指纹加密。单向加密可以用来做数据完整性校验。其特性包括:

  1、不可逆。也就是只能有明文获得密文,不能由密文获取明文

  2、雪崩效应。初始条件的微小改变可能引起结果的巨大改变,防暴力破解。对inittab文件进行稍微可变,可以看出其特征码改变很大

[root@hao ~]# cp /etc/inittab  ./
[root@hao ~]#
ls
anaconda-ks.cfg install.log ?????? ?????? ?????? ??????
inittab install.log.syslog ????????? ?????? ?????? ??????
[root@hao ~
]# md5sum inittab
3f206e10339f61eaf8d378bf504db462 inittab
[root@hao ~
]# nano inittab
[root@hao ~
]# md5sum inittab
11bec7e54fd168e19ca5d8cff1b5dd1c inittab

  3、定长输出 MD5:128位  SHA1:(Secure Hash Algorithm)安全的哈希算法 160位定长输出

三、/etc/group

第一个字段组名 第二个字段密码占位符 第三个字段GID 第四个字段以这个组为附加组的用户列表,多个用户用逗号隔开

[root@hao ~]# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
...
hao:x:500:
guang:x:501:

四、用户管理                                                            

1、useradd(adduser)添加用户

[root@hao ~]# which useradd
/usr/sbin/useradd
[root@hao ~]# ls -l $(which useradd)
-rwxr-x---. root root Dec /usr/sbin/useradd
[root@hao ~]# which adduser
/usr/sbin/adduser
[root@hao ~]# ls -l $(which adduser)
lrwxrwxrwx. root root Jul : /usr/sbin/adduser -> useradd

命令格式:useradd [options] username

[root@hao ~]# useradd guang
[root@hao ~]# tail - /etc/passwd
guang:x::::/home/guang:/bin/bash
[root@hao ~]# tail - /etc/group
guang:x::
[root@hao ~]# tail - /etc/shadow
guang:!!:::::::
[root@hao ~]# passwd guang
Changing password for user guang.
New password:
BAD PASSWORD: it does not contain enough DIFFERENT characters
BAD PASSWORD: is a palindrome
Retype new password: passwd: all authentication tokens updated successfully.
[root@hao ~]# tail - /etc/shadow
guang:$$0ndd3rOB$OP74KA4BocxxtU87tDCUE/JGHlZbygHML9KnabirIXLJ8yQJAGdP7setenuZP1fVcOK2ZhhK05aUWYqdDBcjG/:::::::

命令选项:

  -u:指定UID,须保证该UID未使用。如果未使用该选项,用户UID默认为/etc/passwd下的最大用户UID的下一个

[root@hao ~]# useradd -u  testuser
[root@hao ~]# tail - /etc/passwd
testuser:x::::/home/testuser:/bin/bash

  -g:指定基本组,如果不使用该选项则默认添加一个和用户同名的基本组,如果使用该选项则一定保证该组名存在。

[root@hao ~]# useradd -g mygroup testusergroup
[root@hao ~]# tail -1 /etc/passwd
testusergroup:x:1001:502::/home/testusergroup:/bin/bash

  -G:指定额外组(附加组),可以有多个。

[root@hao ~]# useradd -G mygroup testuser1
[root@hao ~]# tail - /etc/passwd
testuser1:x::::/home/testuser1:/bin/bash
[root@hao ~]# tail /etc/group
webalizer:x::
tomcat:x::
sshd:x::
tcpdump:x::
slocate:x::
hao:x::
guang:x::
mygroup:x::testuser1
testuser:x::
testuser1:x::

  -c:指定注释信息

  -d:指定家目录 默认为在/home/下创建一个跟用户同名的目录为家目录。

[root@hao ~]# useradd -c "haohao" -d /home/haohao testuser2
[root@hao ~]# tail - /etc/passwd
testuser2:x:::haohao:/home/haohao:/bin/bash

  -s:指定shell路径。该路径需要出现在/etc/shells。默认为/bin/bash

  -r:添加系统用户。即UID在1-500之间,而且系统用户不允许登陆系统,且不存在家目录,即使路径存在。该选项通常单独使用。

[root@hao ~]# useradd -r testr
[root@hao ~]# tail - /etc/passwd
testr:x::::/home/testr:/bin/bash
[root@hao ~]# ls /home
guang hao haohao testuser testuser1

  添加用户的默认信息保存在/etc/default/useradd

[root@hao ~]# file /etc/default/useradd
/etc/default/useradd: ASCII text
[root@hao ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=
HOME=/home
INACTIVE=-
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

2、userdel删除用户

命令格式:userdel  [option] username 删除用户时,若未指定选项,其家目录不会被删除

命令选项:

  -r:删除用户同时删除用户的家目录

[root@hao ~]# ls /home
guang hao haohao testuser testuser1 testusergroup
[root@hao ~]# userdel testuser
[root@hao ~]# ls /home
guang hao haohao testuser testuser1 testusergroup
[root@hao ~]# userdel -r testusergroup
[root@hao ~]# ls /home
guang hao haohao testuser testuser1

3、id 查看用户的UID等相关信息

命令格式:id [option] [username]

命令选项:

  -u:查看UID

[root@hao ~]# id -u testuser1

  -g:查看基本组

[root@hao ~]# id -g testuser1

  -G:查看其附加组和基本组

[root@hao ~]# id -G testuser1
 

  -n:显示名字而不是ID

[root@hao ~]# id -u -n testuser1
testuser1
[root@hao ~]# id -g -n testuser1
testuser1
[root@hao ~]# id -G -n testuser1
testuser1 mygroup

 4、finger查看用户账号信息

命令格式: finger username

5、usermod修改用户账号属性

命令格式:usermod [option] username。用法同useradd,

命令选项:

  -u:更改用户uid

  -g:更改用户GID

  -G:更改用户附加组,即覆盖原有的附加组。一般同-a选项一同使用,即添加用户到新的附加组,原来的附加组不被覆盖。

  -c:更改注释信息

  -d:更改家目录。如果原来家目录下已有该用户的文件夹,原家目录下的文件夹不会被迁移到新的家目录下。一般和-m选项一同使用,则可以使其原家目录下文件  迁移到新的家目录下。

  -s:更改shell。

  -l:更改用户名

  -L:锁定账号

  -U:解锁用户

6、chsh(change shell)修改用户shell

root@hao ~]# finger testuser1
Login: testuser1 Name:
Directory: /home/testuser1 Shell: /bin/bash
Never logged in.
No mail.
No Plan.
[root@hao ~]# chsh testuser1
Changing shell for testuser1.
New shell [/bin/bash]: /bin/tcsh
Shell changed.
[root@hao ~]# finger testuser1
Login: testuser1 Name:
Directory: /home/testuser1 Shell: /bin/tcsh
Never logged in.
No mail.
No Plan.

7、chfn(change finger)修改注释信息

[root@hao ~]# chfn testuser1
Changing finger information for testuser1.
Name []: test
Office []: test
Office Phone []:
Home Phone []: Finger information changed.
[root@hao ~]# tail - /etc/passwd
testuser1:x:::test,test,,:/home/testuser1:/bin/tcsh
testuser2:x:::haohao:/home/haohao:/bin/bash

8、 passwd 修改用户密码

普通用户只能使用不带参数的该命令更改自己的密码,管理员可以使用该命令更改其他用户的密码

命令格式:passwd [option][username]

root@hao:~# passwd user1
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

命令选项:

  --stdin(standard in ):从标准输入读取密码。经测试Ubuntu没有该参数,可以使用chpasswd命令替换,chpasswd username password,均可以用echo输出指  定的信息,然后管道给这两个命令处理,如:

root@hao:~# echo "newpassword"|passwd user1 --stdin
root@hao:~# ehco "newpassword" |chpasswd user1

  -l:锁定用户账号

  -u:解锁用户

  -d:删除密码

root@hao:~# tail - /etc/shadow
user1:$$eKF3mI4G$O3pzjIQiRodxGRw9c4SVUAQ34oi8vOMcguGW4/7LBTYK2ADppH/sPVtqsjKP9ajZamXU8SmZgtm/uWKTtaxam/:::::::
root@hao:~# passwd -d user1
passwd: password expiry information changed.
root@hao:~# tail - /etc/shadow
user1::::::::

9、pwck(password check)检查用户完整性

[root@hao ~]# pwck
user 'adm': directory '/var/adm' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'gopher': directory '/var/gopher' does not exist
user 'ftp': directory '/var/ftp' does not exist
user 'avahi-autoipd': directory '/var/lib/avahi-autoipd' does not exist
user 'saslauth': directory '/var/empty/saslauth' does not exist
user 'pulse': directory '/var/run/pulse' does not exist
pwck: no changes

五、组管理

1、groupadd创建组

命令格式:groupadd [options] groupname

命令选项:

  -g:指定GID

  -r:添加系统组

[root@hao ~]# groupadd  -r nginx
[root@hao ~]# tail - /etc/group
nginx:x::

2、groupmod修改组属性

命令格式:groupmod [options] groupname

命令选项:

  -g:修改GID

  -n:修改groupname

3、groupdel删除一个组

4、gpasswd给组加密码

命令格式:gpasswd groupname

用户创建一个文件,该文件的属主为该文件,属组为该用户所在的基本组

[root@hao ~]# useradd hadoop
[root@hao ~]# su - hadoop
[hadoop@hao ~]$ cd /tmp
[hadoop@hao tmp]$ touch a.hadoop
[hadoop@hao tmp]$ ll
total
-rw-rw-r--. hadoop hadoop Nov : a.hadoop
drwx------. hao hao Aug : keyring-4BcUXT
drwx------. hao hao Jul : keyring-DTEmAL
drwx------. hao hao Jul : keyring-FD7mUX
drwx------. hao hao Aug : keyring-YtvBn9
drwx------. hao hao Jul : keyring-ZCIk4h
drwx------. root root Jul : keyring-l3Td4R
drwx------. gdm gdm Nov : orbit-gdm
drwx------. gdm gdm Nov : pulse-0dTthpTUZIEl
drwx------. hao hao Aug : pulse-1lfMnULTO8sm
drwx------. root root Jul : pulse-u8BNu0nCsMTX
[hadoop@hao tmp]$ id
uid=(hadoop) gid=(hadoop) groups=(hadoop) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

5、newgrp:将用户的基本组临时切换到其他组(登陆到其他组)

只有当用户跟所切换到的组没有任何关系时(即要切换到的组也不是该用户的附加组时),需要输入密码。可以用exit退出

[root@hao ~]# gpasswd mygroup
Changing the password for group mygroup
New Password:
Re-enter new password:
[root@hao ~]# su - hadoop
[hadoop@hao ~]$ cd /tmp
[hadoop@hao tmp]$ newgrp mygroup
Password:
[hadoop@hao tmp]$ id
uid=(hadoop) gid=(mygroup) groups=(hadoop),(mygroup) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[hadoop@hao tmp]$ touch b.hadoop
[hadoop@hao tmp]$ ll
total
-rw-rw-r--. hadoop hadoop Nov : a.hadoop
-rw-r--r--. hadoop mygroup Nov : b.hadoop
drwx------. hao hao Aug : keyring-4BcUXT
drwx------. hao hao Jul : keyring-DTEmAL
drwx------. hao hao Jul : keyring-FD7mUX
drwx------. hao hao Aug : keyring-YtvBn9
drwx------. hao hao Jul : keyring-ZCIk4h
drwx------. root root Jul : keyring-l3Td4R
drwx------. gdm gdm Nov : orbit-gdm
drwx------. gdm gdm Nov : pulse-0dTthpTUZIEl
drwx------. hao hao Aug : pulse-1lfMnULTO8sm
drwx------. root root Jul : pulse-u8BNu0nCsMTX

《鸟哥的Linux私房菜》学习笔记(4)——用户和组的更多相关文章

  1. 鸟哥的Linux私房菜学习笔记——文件权限与目录配置

    Linux的文件权限和目录配置 在linux中的每个用户必需属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. (1)所有者 一般为文件的创建者,谁创建了该文件,就是天 ...

  2. 鸟哥的linux私房菜学习笔记 __ 命令与文件的搜寻

    连续输入两次[tab]按键就能够知道使用者有多少命令可以下达.那你知不知道这些命令的完整档名放在哪里?举例来说,ls 这个常用的命令放在哪里呢? 就透过 which 或 type 来找寻吧! 范例一: ...

  3. 鸟哥的Linux私房菜学习笔记(1)

    2014/10/29 1.档案的权限管理分为三个部分: 拥有者.群组.其他 2.ls -al 命令可以看到档案的详细信息 3.档案的属性中由十个部分构成 第一个部分是档案类型 -代表档案.d代表文件夹 ...

  4. 【鸟哥的Linux私房菜】笔记1

    Linux是什么 从操作系统与cpu架构关系到linux  Richard Mathew Stallman GPL 关于GNU计划 Linux的发展 Linux的核心版本 Linux的特色 Linux ...

  5. 鸟哥的linux私房菜学习-(一)优缺点分析以及主机规划与磁盘分区

    一.linux的优缺点 那干嘛要使用Linux做为我们的主机系统呢?这是因为Linux有底下这些优点: 稳定的系统:Linux本来就是基于Unix概念而发展出来的操作系统,因此,Linux具有与Uni ...

  6. 【鸟哥的Linux私房菜】笔记2

    Linux的应用 学习资源整理 安装记录 >< 1.Linux的应用: 网络服务器 数据库 学术机构的高效运算任务 嵌入式系统 ... 2.挂载与磁盘分区 学习资源整理 学习 1.书上的网 ...

  7. 【鸟哥的Linux私房菜】笔记3

    正确地开机 最好不要使用root账号登陆!GNOME图形界面 View items as a list X WindowShell 文本交互界面bash是Shell的名称,Linux的默认壳程序就是b ...

  8. 《鸟哥的Linux私房菜》笔记——02. 关于Linux

    Unix 历史 1969年以前:伟大的梦想--Bell, MIT 与 GE 的「Multics」系统 1969年:Ken Thompson 的小型 file server system 1973年:U ...

  9. 《鸟哥的Linux私房菜》笔记——03. 磁盘分区

    Everything is a file. 常见硬件对应于 Linux 下的文件(/dev目录下) 装置 装置在Linux内的档名 SCSI/SATA/U盘硬盘机 /dev/sd[a-p] U盘 /d ...

  10. 鸟哥的linux私房菜学习

    cat /etc/shells 系统拥有的shellcat /etc/passwd 记录用户使用的shell按两次 tab 键可显示所有可执行的指令alias 查看所有命令的别名alias lm='l ...

随机推荐

  1. 发布MVC网站的时候出现缺少WebHost等程序集问题的解决办法

    将一下几个dll 拷贝到bin文件夹下就行 链接:https://pan.baidu.com/s/17xhTdakzM_SQmOjJdZvviw 密码:c976

  2. BZOJ3798: 特殊的质数(分段打表)

    题意 题目链接 Sol 分块打表,非常好的思想. 对于这种求$[A, B]$区间内xxx的数的个数,然后$B$又不算是特别大的题,考虑分段打表 每个块的大小为$10^5$,打$3 * 10^3$个.然 ...

  3. Java设计模式—装饰模式

    装饰模式是一种比较常见的模式. 定义为:动态的给一个对象添加一些额外的职责.就增加功能来说,装饰模式比生成子类更加灵活. 装饰模式的通用类图如下: 装饰模式的构成: 1) 抽象构件(Component ...

  4. CSS中box-sizing属性的作用

    今天在项目中看到box-sizing这个属性,以前用过,但是不常用!注意,它是CSS3里的属性喔! W3C 盒子模型:标准盒模型,是指块元素box-sizing属性为content-box的盒模型.一 ...

  5. Android使用文件管理器打开指定文件夹,浏览里面的内容

    Android下可以打开一些文件,带有.doc 等后缀的文件网上一般都有解释,这个写一个使用文件管理器打开指定文件夹的 private void openAssignFolder(String pat ...

  6. 国密SM4分组加密算法实现 (C++)

    原博客 :http://blog.csdn.net/archimekai/article/details/53095993 密码学的一次课程设计,学习了SM4加密算法,目前应用于无线网安全. SM4分 ...

  7. 轻松搞定Struts 2:三步走上手小入门

    零.Struts 2是啥? SSH.SSM.SSI如雷贯耳,Struts 2 —— 是的,就这样了... 一.Hello Struts2 1.核心包 2.struts.xml核心控制器配置 <f ...

  8. BZOJ 1229: [USACO2008 Nov]toy 玩具

    BZOJ 1229: [USACO2008 Nov]toy 玩具 标签(空格分隔): OI-BZOJ OI-三分 OI-双端队列 OI-贪心 Time Limit: 10 Sec Memory Lim ...

  9. python实现二叉树的镜像

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...

  10. PostgreSql的使用

    title: PostgreSql的使用 tags: PostgreSql --- PostgreSql官网: https://www.postgresql.org/ 1 PostgreSql的安装 ...