Linux用户,组和权限管理

用户,组,权限





一、了解什么是用户,组和权限

1.对于linux系统来说,简单明了的特点就是多用户,多任务,也就是说一台linux系统的主机上面可以同时允许多个用户登录,当通过多个终端登录时可以同时使用这台linux的系统,然而对于linux习题来说,一切皆文件,别人和自己的工作任务都是以文件的形式存在的,不同的用户之间岂不是没有隐私或者安全而言,其实在linux上不是这样的,我们可以理解linux把每一个用户分配一间屋子,没有钥匙即权限我们是进不去浏览以及修改文件的,但是既然是一间屋子,那当然也可以允许很多人在一起做实验,而我们在linux中把这样的一子人称为"组";这样解释你们是否就很容易明白了?或者我们可以这样看

二、用户管理

当我们添加一个用户的时候,信息都写在什么地方?

/etc/passwd

#

[[email protected] ~]# head -n 3 /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
	[[email protected] ~]#

#

分析一下用户信息文件的格式:

name:password:UID:GID:GECOS:directory:shell(man 5 passwd命令会显示出passwd文件的信息格式)

用户名:密码(当然是加密的):用户ID:组ID:注释:家目录:用户的shell

当然学习用户管理无非也就是这几个常用的简单命令:

useradd命令:添加用户

useradd  [选项]  登录名

添加一个普通的用户

[[email protected] ~]# useradd www1
[[email protected] ~]#

对于添加用户,我们可以有这样的几种添加方式,

-c, --comment COMMENT:注释信息,一般为Full Name(全名);

[[email protected] ~]# useradd -c "YOUR NAME" www1
[[email protected] ~]#

下面一些简单的命令就不在于演示了:

-d, --home  directory:家目录路径;目标路径不能事先存在,指定一个目录为该用户的家目录;

-g, --gid GROUP:指定用户的基本组组名或GID;

-G, --groups GROUP1(当然这里可以有多个组,[组1,组2...]):用户所属的附加组列表,彼此间用逗号隔开,中间没有空格;

-m, --create-home:强制创建家目录;

-M:不创建用户主目录,即使系统在 /etc/login.defs 中的设置 (CREATE_HOME) 为 yes;

-r, --system:创建一个系统账户

[[email protected] ~]# useradd -r www2

###此时注意观察www2的UID,一定是小于999的,因为管理员的UID是1-999

-s, --shell SHELL:用户的登录 shell 名,默认为留空,让系统根据 /etc/default/useradd 中的 SHELL 变量选择默认的登录shell;

[[email protected] ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[[email protected] ~]#

-u, --uid UID:用户 ID 的数字值,用户的UID在centos7版本以上在1000以上,逐渐递增的

注意:创建登录用户时,为其自定义的shell程序必须为可登录shell,且要位于/etc/shells文件中;

下面是一些不常用的选项

useradd -D:显示创建用户时的默认设置;

useradd -D  选项:设置某默认选项;

-e, --expiredate  EXPIRE_DATE:用户账号的过期期限;过期后会被锁定;日期以 YYYY-MM-DD 格式指定

-f, --inactive INACTIVE:密码过期后,账户被彻底禁用之前的天数。0 表示立即禁用,-1 表示禁用这个功能。

有增加就会修改和删除,我们来看一下:

usermod命令:修改账号信息,其实就是和添加用户的功能很相似

-c, --comment  COMMENT

-d, --home  HOME_DIR:修改家目录为新的位置,但一般应该同时使用-m选项以保证原家目录中的文件会移动到新目录中;

-g, --gid GROUP

-G, --groups  GROUP1[,GROUP2,...[,GROUPN]]]:修改时会覆盖原有的附加组;一同使用-a选项,表示为用户添加新的附加组;

-l, --login  NEW_LOGIN:修改当前用户的用户名;

-s, --shell  SHELL更改用户的shell

-u, --uid  UID重新指定用户的UID

-L, --lock:锁定用户的密码。这会在用户加密的密码之前放置一个“!”

-U, --unlock:解锁用户的密码。这将移除加密的密码之前的“!”

userdel命令:删除用户账号

userdel [选项]  登录名

-r, --remove:用户主目录中的文件将随用户主目录和用户邮箱一起删除

名称解析:groupname <--> gid

解析库:/etc/group

group_name:password:GID:user_list

组名称:组密码:组ID:组成员

passwd命令:密码修改或者管理的命令

当登录的用户执行passwd表示修改自己的密码

[[email protected] ~]# passwd
Changing password for user root.
New password: 
BAD PASSWORD: The password contains the user name in some form
Retype new password: 
passwd: all authentication tokens updated successfully.
[[email protected] ~]#

root可以修改所有人的密码

[[email protected] ~]# passwd www
Changing password for user www.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[[email protected] ~]#

由此可见,root修改用户的密码根本不用确定,当普通用户修改自己的密码时会首先要求验证当前的用户身份

passwd命令很简单,常用的几个选项:

选项:

-l:锁定密码

-u:解锁解密

-d:清除密码

从刚才的例子我们看出,修改的密码都是看不见的,因此我们可以通过管道的命令来确定我们输入密码的正确性,当然也有一定的风险,当然也只有root可以这样的使用

--stdin:从标准输入接收密码;

echo "PASSWORD" | passwd  --stdin  USERNAME
[[email protected] ~]# echo "passwd" | passwd --stdin www
Changing password for user www.
passwd: all authentication tokens updated successfully.
[[email protected] ~]#

这样是不是很清楚的呢?

当我们了解了用户相关用法后,我们要知道这两个文件,有关的配置文件

/etc/login.defs, /etc/default/useradd

同样,查看用户的基本信息命令还是很多的,比如

id命令:查看用户相关的id信息;

id  [OPTION]...  [USER]

-u:仅查看uid

-g:仅查看gid

-G:查看所属的所有组的ID;

-n:显示名称,而非ID;

su命令:switch user

切换用户时:我们一定要注意Linux中的一些细节问题

(1) 不读取目标用户的配置文件(非登录式切换,半切换);

su  USERNAME

(2) 读取目标用户的配置文件(登录式切换,完全切换);

su  -l  USERNAME

su  -  USERNAME

三、组管理

和用户一样,有普通用户和系统用户,组不仅有系统组,普通用户组,还有私有组和附属组

什么是私有组:

私有组就是在用户产生的时候生成的一个与用户名相同的组,只有自己一个人管理和使用

附加组:私有组是用户自己的组,但是用户可以参加到别人的创建的组中去,这样的组我们称之为附加组

一样我们先了解增加的组信息存放在什么地方

/etc/group

[[email protected] ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:

文件信息的格式:

root:$6$fUZ9o45Q$Hr99AVjiSppP9na6MvcjdgQmIc.sASPkArKakfd7T8PuYUqA54SPC7YHrD1xde5nrY/j9ShEj.KeoG89n59b9.:16866:0:99999:7:::

解析:loginname:加密的密码:密码使用的时间:允许密码修改使用最小时间:允许密码修改最大时间:密码警告时间

第一个$后面跟的是密码的算法等级

第二个$后面跟的是salt即产生的随机数

第三个$到"."是加密后的密码

【扩展延伸】

随机数:

熵池:就是存储随机输的地方

伪随机数:软件模拟产生;

用简单的话来说,加密后,我们会添加一些随机数进去,保证加密的等级,而首先我们就会在熵池中进行添加,当熵池中的随机数使用完,我们就需要软件模拟产生一些随机数,是不是有点模糊,了解一下

/dev/random:仅从熵池返回随机数,随机数耗尽时会阻塞进程;

/dev/urandom:先从熵池返回随机数,熵池耗尽时,则从伪随机数生成器返回随机数;

继续组的管理

groupadd命令:添加组

groupadd  [选项]  group

-g  GID:指明GID;

-r, --system:系统组;

groupmod命令:修改组信息

groupmod [选项] GROUP

-g  GID

-n NEW_NAME:修改组名;

groupdel命令:删除组

groupdel [选项] GROUP

影子口令文件:/etc/shadow

登录名:密码:最近一次的修改时间:密码的最短使用期限:密码最长使用期限:提前警告的天数:非活动期限:账号的禁用日期:保留字段

密码:$加密算法$salt$加密的密码字符串

gpasswd命令:为组添加密码

组密码文件:/etc/gshadow

gpasswd [选项] group

-a USERNAME:把用户添加至组中;

-d USERNAME:从此组中移除此用户;

newgrp命令:登录到一个新组

[[email protected] ~]# newgrp linux
[[email protected] ~]# id
uid=0(root) gid=1004(linux) groups=1004(linux),0(root)
[[email protected] ~]#

chage命令:修改用户账号的各种期限;

四、权限管理:

文件或目录对用户显示的某种限制,比如读写执行,我的文件让谁看,让谁修改,让谁执行,这些都是有一定的权限,下面我们看看:

文件:

r:可获取文件的数据;

w:可修改文件的数据;

x:可将此文件运行为进程;

目录:

r:可使用ls命令获取其下的所有文件列表;但不可以使用“ls -l”去获取详细信息,也不可以cd至此目录中;

w:可修改此目录下的文件列表, 即可以在此目录下创建或删除文件;

x:可以使用"ls -l“命令来获取其下的文件的详细属性信息,也可cd至此目录中;

首先我们了解一写特殊的字符

u=user

g=group

o=other

a=(u+g+o)表示所有人

MODE:

赋权表示法:直接操作一类用户的所有权限位rwx;

u=

g=

o=

a=

[[email protected] test2]$ chmod u=rwx test2.txt 
[[email protected] test2]$ ll
total 0
-rwxrw-r-- 1 www www 0 Mar 12 10:48 test2.txt
[[email protected] test2]$

授权表示法:操作一类用户一位或多位权限(中间不使用逗号)

u+, u-

g+, g-

o+, o-

a+, a-

[[email protected] test]$ chmod a+x test.txt 
[[email protected] test]$ ll
total 0
-rwxrwxr-x 1 www www 0 Mar 12 10:47 test.txt
[[email protected] test]$

********************************************

[[email protected] test]$ chmod u-x,g-x,o-x test.txt
[[email protected] test]$ ll
total 0
-rw-rw-r-- 1 www www  0 Mar 12 10:48 test1.txt
drwxrwxr-x 2 www www 22 Mar 12 10:48 test2
-rw-rw-r-- 1 www www  0 Mar 12 10:47 test.txt
[[email protected] test]$

这样是不是更加的明白呢?

两类用户权限收授机制相同:ug+, ug-, ...

不同类的用户权限不同:u+,g+,o+

[[email protected] test]$ chmod ug-w test.txt
[[email protected] test]$ ll
total 0
-rw-rw-r-- 1 www www  0 Mar 12 10:48 test1.txt
drwxrwxr-x 2 www www 22 Mar 12 10:48 test2
-r--r--r-- 1 www www  0 Mar 12 10:47 test.txt
[[email protected] test]$

****************敲一敲代码看看是否一样呢?**************************

当然我们还是有别的表示方法的

r=4

w=2

x=1

[[email protected] test2]# chmod 646 test2.txt 
[[email protected] test2]# ll
total 0
-rw-r--rw- 1 root root 0 Mar 12 10:48 test2.txt
[[email protected] test2]#

常用选项:

-R, --recursive:递归修改;(小心使用哦)

[[email protected] tmp1]$ chmod -R a=rwx tmp2
[[email protected] tmp1]$ ll
drwxrwxrwx 2 www www 42 Mar 12 10:56 tmp2
[[email protected] tmp1]$ cd tmp2
[[email protected] tmp2]$ ll
-rwxrwxrwx 1 www www 0 Mar 12 10:56 1.txt
-rwxrwxrwx 1 www www 0 Mar 12 10:56 2.txt
-rwxrwxrwx 1 www www 0 Mar 12 10:56 3.txt
[[email protected] tmp2]$

chown命令:

chown [OPTION]... [OWNER][:[GROUP]] FILE...

chown [OPTION]... --reference=RFILE  FILE...

[[email protected] test2]# ll
total 0
-rwxrw-r-- 1 www www 0 Mar 12 10:48 test2.txt
[[email protected] test2]# chown root test2.txt
[[email protected] test2]# ll
total 0
-rwxrw-r-- 1 root www 0 Mar 12 10:48 test2.txt
[[email protected] test2]#

看看上面发生什么,文件已经不是www的了

常用选项:

-R, --recursive:递归修改;

********************这一个就不演示了**************************

chgrp命令:

chgrp [OPTION]... GROUP FILE...

chgrp [OPTION]... --reference=RFILE FILE...

刚才我们把文件拥有者改了,那么组能不能改呢?

[[email protected] test2]# chgrp root test2.txt 
[[email protected] test2]# ll
total 0
-rwxrw-r-- 1 root root 0 Mar 12 10:48 test2.txt
[[email protected] test2]#

这完全可以说是自己创建的文件吗?哈哈 你看明白了吗

umask:显示或设定文件模式掩码

文件:

666-umask

[[email protected] test2]# ll
total 0
-rw-r--r-- 1 root linux 0 Mar 12 11:11 1.txt
[[email protected] test2]# umask
0022
[[email protected] test2]#

目录:

777-umask

[[email protected] test2]# ll
total 0
-rw-r--r-- 1 root linux 0 Mar 12 11:11 1.txt
drwxr-xr-x 2 root linux 6 Mar 12 11:14 nihao
[[email protected] test2]# umask
0022
[[email protected] test2]#

注意:之所以文件用666去减,表示文件默认不能有执行权限;如果减得的结果中,u,g或o有执行权限时,则需要加1;

那我们在终端中看的更加仔细点吧

显示:

umask

管理员和普通用户的掩码还是不一样的累

你看?

管理员:

[[email protected] /]# umask
0022
[[email protected] /]#

普通用户

[[email protected] ~]$ umask
0002
[[email protected] ~]$

设定:

umask MASK

[[email protected] test2]# umask
0022
[[email protected] test2]# umask 0023
[[email protected] test2]# umask
0023
[[email protected] test2]#

注意:此设定仅对当前shell进程有效;

时间: 2024-10-13 23:59:28

Linux用户,组和权限管理的相关文章

linux 用户 组 和权限管理

Multi-task  Multi-Users 每个使用者: 用户标识 . 密码: Authentication(认证机制): Authorization  (授权机制): Account / Audition (审计): 组:用户组,用户容器 用户类别: 管理 普通用户 系统用户 登录用户 用户标识: UserIo ,UID 16bits 二进制数字:0-65535 管理员:0 普通用户: 1-65635 系统用户   1-499(Centos6)    1-1000(CentOS7) 登录用

Linux用户及文件权限管理

用户及文件权限管理 一.实验介绍 1.1 实验内容 Linux 中创建.删除用户,及用户组等操作. Linux 中的文件权限设置. 1.2 实验知识点 Linux 用户管理 Linux 权限管理 二.Linux 用户管理 通过第一节课程的学习,你应该已经知道,Linux 是一个可以实现多用户登陆的操作系统,比如"李雷"和"韩梅梅"都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件.但实际上他们的文件都是放在同一个物理磁

linux 用户及文件权限管理

Linux 是一个可以实现多用户登陆的操作系统,比如"李雷"和"韩梅梅"都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件.但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理 和 权限机制,不同用户不可以轻易地查看.修改彼此的文件. 下面我们就来学习一下 Linux 下的账户管理的基础知识. 1.首先查看用户的指令: who am i/whoami 输出的第一列

马哥2016全新Linux+Python高端运维班-Linux用户创建及权限管理

第三周作业内容:1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | cut -d' ' -f1 | sort -u      centos     liu     root 2.取出最后登录到当前系统的用户的相关信息.     第一种方式:         [[email protected] ~]# last | head -n1         liu      tty8        

Linux用户、用户组权限管理详解 --- 02

2,用户.用户组管理操作详解: 2.1 adduser 添加用户: adduser [-u uid][-g group][-d home][-s shell] -u:直接给出userID                      -g:直接给出GID -d:直接将根目录建立在已存在目录         -s:定义shell 添加用户 garfield 1 adduser garfield 通过前面介绍的三个用户管理文件检验用户 garfield 的添加是否成功: 当我们新建用户时,通过 /etc

Linux之用户及文件权限管理

Linux之用户及文件权限管理 前言:Linux 是一个多用户的操作系统:Linux哲学思想之一-"一切皆文件".说明在学习Linux过程中,用户及文件权限的管理是非常重要滴.本文主要是引用了CentOs/RedHat 7.1的命令. 一.用户.组管理 1).用户.组类型: 超级用户(管理员):root用户具有一切权限,只有在进行系统维护(如创建用户.分配权限)时用到:由于root用户权限过大,为了避免管理员的误操作导致不可逆的后果,所以在非必要的情况下不用root用户登录. 普通用户

详解用户,组,权限管理

内容介绍: 我们要使用操作系统进行工作,就需要人机交互操作,这时候计算机就需要创建用户,通过用户来实现操作,而且随着用户的增加需要给用户分组,这时候就需要对文件进行权限管理. 需要使用的工具: 用户相关工具:useradd; userdel; usermod;id;su等: 组相关工具:groupadd; groupdel; groupmod等: 权限管理工具:chmod; chown; chgrp:umask等: 一.用户类别: 管理员:root,管理员用户标识UID:0 普通用户:(系统用户

Linux 基础入门----用户及文件权限管理

用户及文件权限管理 实验介绍 1.Linux 中创建.删除用户,及用户组等操作. 2.Linux 中的文件权限设置. 一.Linux 用户管理 Linux 是一个可以实现多用户登陆的操作系统,比如“李雷”和“韩梅梅”都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件.但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理 和 权限机制 ,不同用户不可以轻易地查看.修改彼此的文件. 下面我们就来学

2017-11-13Linux基础知识(11)用户、组和权限管理

在之前的章节中讲述了bash的基础特性以及IO重定向以和管道等其它的功能程序,之后介绍了一些其相关的命令,例如:tr和tee命令等,之后我们介绍了Here document,在这一章中,我们开始讲述用户.组及权限管理中的一部分,我们首先来说用户和组. 一.用户 Linux操作系统是一款多用户Multi-Users及多任务Multi-tasks的操作系统,也就是说,可以多个用户同时登录该系统执行各自的任务,彼此用户与用户之间互不干扰,这也是当时为了解决主机资源所提供的一种有效手段,那时候主机都在中