Linux用户及权限管理

目录:linux

-、linux用户及组的管理算法

1.用户和组的基本概念docker

1.1用户类别及用户标示shell

1.2组类别及组标识centos

1.3用户认证信息及加密算法安全


2.用户信息及用户密码相关文件app

2.1用户的信息库文件/etc/passwdless

2.2用户的密码库文件/etc/shadowide


3.组信息及组密码相关文件工具

3.1组的信息库文件/etc/group

3.2组的密码库文件/etc/gshadow


4.用户及组的相关管理命令

4.1用户管理命令

4.2组管理命令

4.3密码管理及其余相关命令


2、linux文件权限管理

1.文件权限模型

1.1进程安全上下文及文件权限的表示

1.2文件和目录的权限状态


2.文件权限状态及相关管理命令

2.1文件的八进制权限表示法

2.2权限管理命令chmod


3.文件从属关系及相关管理命令

3.1属主管理命令chown

3.2属组管理命令chgrp


4.文件umask的特性及管理

4.1umask的做用

4.2umask的管理


linux用户及组的管理:


1.用户和组的基本概念


1.1用户类别及用户标示

用户类别:管理员和普通用户

管理员,即root用户,能够对系统进行一切操做;


普通用户:分为系统用户和登陆用户。

系统用户:是为了可以让那些后台进程或服务类进程以非管理员的身份运行,一般须要为此建立多个普通用户;这类用户从不用登陆系统;

登陆用户:是须要操做计算机的交互式登陆的用户


用户标示:

即UID,用做用户名称的转换,用0-65535之间的二进制数字表示,默认60000后的UID用做保留

管理员的UID永远为0


普通用户的UID则为1-65535

系统用户的UID在centos6里为1-499,在centos7里为1-999

登陆用户的UID在centos里为500-60000,centos7里为1000-60000


1.2组类别及组标示

用户组按类别可分为三类:


第一种类别:管理员组和普通用户组,普通用户组里又分为了系统用户组和登陆用户组。

第二种类别:基本组和附加组

第三种类别:私有组和公共组


组标示:

即GID,用做组名称的转换,用0-65535之间的数字表示,默认60000后的GID用做保留


管理员组的GID永远为0


普通用户组的GID则为1-65535

系统用户组的GID在centos6里为1-499,在centos7里为1-999

登陆用户组的GID在centos里为500-60000,centos7里为1000-60000


1.3用户认证信息及加密算法


用户认证:

用户登陆计算机时,计算机经过对比事先存储的数据与登陆时提供的信息是否一致;即验证用户的密码。


密码的使用策略应遵循如下几点:

1、使用随机密码;

2、最短长度不要低于8位;

3、应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;

4、按期更换


密码文件里存储的密码是加密的,而对密码进行加密的方式在centos里主要是单向加密,算法主要有md五、sha一、sha22四、sha25六、sha38四、sha512


对于单项加密这种机制而言,为了不多个用户的密码相同,在计算之时加salt(随机数,每一个用户的salt都不同);加入的salt不一样,加密后的结果相去甚远,这样即便两个用户的密码相同,在用户看来两个加密后的密文字符串也不同,避免用户密码泄露




2.用户信息及用户密码相关文件

 2.1用户的信息库文件/etc/passwd

wKioL1ZtBpmAuH-EAAAicyAOoTc876.png


用户的信息存储在/etc/passwd文件中,以冒号分隔的每一个字段的含义为

name:password:UID:GID:GECOS:directory:shell

name:       用户名

password:密码占位符。实际密码保存在/etc/shadow中

UID:      用户的ID号

GID:       用户所属的基本组的ID号;

GECOS:    注释信息。可选的,提供用户的信息

directory:用户的家目录;用户登陆系统后首先进入此目录,root用户默认是/root,普通用户则是/home/用户名

      shell:    用户的默认shell,定义用户登陆系统后使用的shell程序;


2.2用户的密码库文件/etc/shadow


早期的unix系统的密码保存在/etc/passwd中,但passwd文件对全部用户可读,存在安全隐患,因此如今的linux使用shadow保存加密后的密码,/etc/shadow文件只有管理员才能够访问


wKioL1ZtB9qhYGi2AAAyEUIuEz0249.png


/etc/shadow文件中保存了用户加密后的密码及密码的各类期限,以冒号为分隔每段分别表示为:


用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期限:非活动期限:过时期限:保留字段


用户名:即用户的名称,对应/etc/passwd中的用户名


加密的密码:

此段若是表示为*,则表示禁止此用户登陆;

若是加密的字符串前有!表示用户被禁用,新建立的用户尚未密码时就是禁用状态,使用!!表示;

若是此段是空的,表示用户没有密码,登陆时不须要密码;

wKiom1ZtCDizF-MUAAAQxuEUUOc767.png加密后的密码以$为分隔符,分隔成三段

第一段:加密算法,1-6分别表示md五、sha一、sha22四、sha25六、sha38四、sha512

第二段:用户的salt随机数

第三段:用户加密后的密码


最近一次修改密码的时间:linux计算日期是以1970年 1月1号开始计算到修改密码那一刻的时间天数


最短使用期限:表示多久后才能够改密码。0表示能够随时更改


最长使用期限:更改后的密码最长可使用多少天


警告期限:密码在到达最常使用期限前,系统会发出警告,提醒用户密码将过时请更新密码,默认是7,表示密码在到达最常使用期限前的7天会发出警告


非活动期限(过时期限):若是过了警告期没有更有更改密码,则在非活动期限内,必须更改密码后才能够登陆进系统


过时期限:帐户过时时间,帐户过时时,用户将不被容许登陆

注意,帐户过时不一样于密码过时。帐户过时时,用户将不被容许登陆;密码过时时,用户将不被容许使用其密码登陆。


保留字段:此字段保留做未来使用



3.组信息及组密码相关文件


3.1组的信息库文件/etc/group


组的信息存储在/etc/group文件中

wKiom1ZtCI-QMF6xAAAaqEy0Ytw142.png

每行以冒号为分隔符分割成4段,依次表示 为

group_name:password:GID:user_list


group_name:用户组的名称

password:  组密码占位符,实际密码保存在/etc/shadow中

GID:        组的id号

user_list: 用户列表,注意:该组的用户成员是:以此组为附加组的用户的用户列表;而用户的基本组在/etc/passwd中记录


3.2组的密码库文件/etc/gshadow


/etc/gshadow 文件中保存了用户组加密后的密码

wKiom1ZtCNXA4WOxAAAVl_kbQy8843.png

分别为:

组名:加密了的密码:组管理员:组成员


4.用户及组的相关管理命令


4.1用户管理命令


useradd命令:建立用户

useradd [选项] 登陆名

选项:

-u, --uid UID:指定UID;

-g, --gid GROUP:指定基本组ID,此组必须事先存在;

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;

-c, --comment COMMENT:指明注释信息;

-d, --home HOME_DIR:以指定的路径做为用户的家目录;经过复制/etc/skel此目录并重命名实现;指定的家目录路径若是事先存在,则不会为用户复制环境配置文件; 

-s, --shell SHELL:指定用户的默认shell,可用的全部shell列表存储在/etc/shells文件中;

-r, --system:建立系统用户;

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

-f:用户密码过时后,帐户被完全禁用以前的天数。0表示(到最长使用期限后)当即禁用,-1表示禁用这个功能(帐户永不由用,改密码后仍可使用)。

 

注意:建立用户时的诸多默认设定配置文件为/etc/login.defs    

 

 useradd-D:显示建立用户的默认配置;

 useradd -D 选项: 修改默认选项的值;修改的结果保存于/etc/default/useradd文件中;

wKiom1ZtCUWSnHGtAAAlRPCIvuA045.png


练习:将建立用户时默认shell更改成/bin/csh

 wKioL1ZtCVyDj4rSAAAJk3M0cYY961.png


usermod命令:修改用户属性

usermod [选项] 登陆名

      -u,--uid UID:修改用户的ID为此处指定的新UID;

       -g, --gid GROUP:修改用户所属的基本组;注意,指定的组要事先存在

       -G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组。注意:原来的附加组会被覆盖;

       -a, --append:与-G一同使用(-a -G NEW_GROUP),用于为用户追加新的附加组;

wKioL1ZtCaOy3QHOAAAKdSc5wxQ724.png

      -c, --comment COMMENT:修改注释信息;

       -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;

       -m, --move-home:只能与-d选项一同使用(-m -d NEW_HOMEDIR),用于将原来的家目录移动为新的家目录;原有的文件都会保留

wKioL1ZtCdrhos2UAAAXAtSGEKc707.png

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

      -s, --shell SHELL:修改用户的默认shell;

      -L, --lock:锁定用户密码;即在用户原来的密码字符串以前添加一个"!"禁止用户登陆

      -U, --unlock:解锁用户的密码

 

userdel命令:删除用户,默认不删除用户的家目录

userdel [选项] 登陆

                -r:删除用户时一并删除其家目录

 

4.2组管理命令

 

groupadd命令:添加组

groupadd [选项] group_name     

    -g GID:指定GID;默认是上一个组的GID+1

    -r: 建立系统组

 

groupmod命令:修改组属性

groupmod [选项] GROUP

    -g GID:修改GID

    -n new_name:修改组名


groupdel命令:删除组

groupdel [选项] GROUP

 

练习1:

建立用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001);

wKioL1ZtCs7hp-2fAAAYmQQeKOs653.png

练习2:

建立用户fedora,其注释信息为"Fedora Core",默认shell为/bin/tcsh;

wKioL1ZtCtqDSk1wAAAMPHdpVvc900.png

练习3:

修改gentoo用户的家目录为/var/tmp/gentoo;要求其原有文件仍能被用户访问;

wKiom1ZtCuKBLXRjAAAK72twi50405.png

练习4:

为gentoo新增附加组netadmin;

wKiom1ZtCu2B1zUkAAAPh4_qnco334.png

 

4.3密码管理及其余相关命令

 

passwd命令:

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-nmindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

 

(1) passwd:不带任何选项,修改用户本身的密码;

(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;

       -l, --lock          锁定用户,使其没法登陆;

        -u, --unlock        解锁用户;

        -d, --delete        清除用户密码串;

        -e, --expire       终止用户密码,使其当即过时,必须修改密码方可登陆;

        -i, --inactive DAYS 非活动期限;

        -n, --minimum DAYS  密码的最短使用期限;

        -x, --maximum DAYS  密码的最长使用期限;

        -w, --warning DAYS  警告期限;

 

        --stdin

        echo "PASSWORD" | passwd--stdin USERNAME

       将管道前输入的字符串内容做为管道后用户的密码


练习:

将magedu做为docker用户的密码,同时不显示密码更改信息

wKiom1ZtC4mhCIK9AAATKKBMYwQ129.png

 

组密码文件:

/etc/gshadow默认给组定义其组密码,也能管理组中的用户

组密码做用:

须要临时切换到某个组做为其基本组的用户,若是其附加组不包含此组,则必须输入组密码后才能切换到此组


gpasswd命令:

gpasswd [选项] GROUP_NAME

-a USERNAME:向组中添加用户   

练习:向mygrp组中添加docker用户

wKioL1ZtC9SDTndRAAATHCwkxx8434.png

-d USERNAME:从组中移除用户   

练习:将mygrp组中的archlinux用户移除

wKiom1ZtDDGhSuiSAAAUhZi2Ssc681.png

 

newgrp命令:临时切换指定的组为基本组;

newgrp [-] [group]  切换后须要退出执行exit便可,

注意:

若是切换的组是用户所属的附加组,则能够直接切换;不然切换到其余组则须要输入其组密码才能够切换到此组

-:-选项会模拟用户从新登陆以实现从新初始化其工做环境;即登陆时的基本组就为临时切换的指定组

不加-则只表示临时切换到新的基本组

 

chage命令:更改用户密码过时信息

chage [选项] 登陆名

      -d 修改最近一次修改密码的时间

      -E 修改密码过时时间

      -I 非活动期限

      -W 警告期限

      -m 最短使用期限

      -M 最长使用期限

 


linux文件权限管理:

 

1.文件权限模型

 

文件的权限模型大致分为两类:

1、mode:rwxrwxrwx 注意:权限当中的读写执行权限位置是固定的

2、ownership:从属关系(user, group)

 

1.1进程安全上下文及文件权限的表示

 

进程安全上下文,进程对文件的访问权限应用模型:

1、进程的属主与文件的属主是否相同;若是相同,则应用属主权限;

2、不然,则检查进程的属主是否属于文件的属组;若是是,则应用属组权限;

3、不然,就只能应用other的权限;

 

权限:

r:readable, 可读的

w:writable, 可写的

x:executable,可执行的


    1.2文件和目录的权限状态

文件:

r:可以使用cat、less等工具获取文件的数据

w:可修改文件的数据,包括改动原来的内容或新增内容

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

     对于文件来讲,默认不该该有执行权限,应为若是其拥有执行权限,则能够将其运行为一个进程,有可能发起危险操做

 

目录(路径映射):

r可以使用ls命令获取其下的全部文件列表;可是不包括查看详细信息(ls -l)

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

x:可cd至此目录中,且可以使用ls -l来获取全部文件的详细属性信息;

     对于目录来讲,通常都会有读取和执行权限,不然没法查看目录下的文件列表


2.文件权限状态及相关管理命令


      2.1文件的八进制权限表示法

ls-l

rwxrwxrwx:

左三位:定义user(owner)属主的权限

中三位:定义group属组的权限;

      右三位:定义other其余用户的权限


权限组合机制:

---000 0

--x001 1

-w-010 2

-wx011 3

 r--100 4

 r-x101 5

 rw-110 6

 rwx111 7


练习:

rw-rw-r--(664),rwxrwxr-x(775),rwxr-x---(750),rw------(600), 

rwxr-xr-x(755),664(rw-rw-r--),640(rwxr-----),600(rw-------),775(rwxrwxr-x)


     2.2权限管理命令chmod


chmod命令:改变文件权限             

chmod [OPTION]...MODE[,MODE]... FILE...

chmod [OPTION]... OCTAL-MODEFILE...

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


三类用户:

u:属主 user

g:属组 group

o:其它 other

a:全部 all


(1) chmod [OPTION]... MODE[,MODE]... FILE...


赋权表示法:直接操做一类用户的全部权限位rwx;

u=

g=

o=

a=

例如:

chmodg=rw fstab

chmodug=r fstab

chmodu=rwx,g=rw,o= fstab


受权表示法:直接操做一类用户的一个权限位r,w,x;

u+,u-

g+,g-

o+,o-

a+,a-

例如:

chmodu-x fstab

chmodo+r fstab

chmodug+x fstab

chmodg-wx fstab

chmod+x fstab

chmod-x fstab

chmodu+x,g+w fstab


(2) chmod [OPTION]... OCTAL-MODE FILE... 

八进制权限位表示法:三个位置的权限都要写上

例如:

chmod  660 fstab


(3)chmod [OPTION]... --reference=RFILE FILE...         

参考其余的文件权限并修改至与之同样

例如:

chmod--reference=/var/log/messages fstab

将fstab的权限改至跟/var/log/messages同样


选项:

-R,--recursive:递归修改

      递归修改文件权限时,最好只用于受权表示法中,由于目录有执行权限,递归修改文件后,全部文件也拥有了执行权限

例如:

chmod-R 700 skel/

chmod-R go= skel/

chmod-R u+r skel/


注意:用户仅能修改属主为本身的那些文件的权限;



3.文件从属关系及相关管理命令


    3.1属主管理命令chown

chown命令:既能够修改属主,也能够修改属组

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

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


选项:

-R:递归修改

例如:

chown -R docker skel/

chown:mygrp /tmp/mytest/  冒号以前没有内容,表示属主不变

chown -R archlinux:mygrp skel/

chown -R archlinux.mygrp skel/

chown-R --reference=/tmp/moosefs/ /tmp/skel/


     3.2属组管理命令chgrp

          chgrp命令:只能用来改属组,通常不多用到(chown命令既能够修改属主,也能够修改属组)

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

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

   注意:仅管理员可修改文件的属主和属组;


练习:

1、新建系统组mariadb, 新建系统用户mariadb,属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;

wKiom1ZtDxHCvjRZAAAkrueUr9I619.png

2、新建GID为6000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;

wKioL1ZtDyiQxhc7AAAgMW-XMtk845.png

3、新建用户suse,其家目录为/users/suse,密码同用户名;

wKiom1ZtDy2jnrElAAAS6pecHtU607.png

4、新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;

wKiom1ZtENXRu9j2AAAZYKopv3k799.png

5、为用户gentoo和fedora新增附加组mageedu;

wKiom1ZtEOTQESI_AAAP428lsdY121.png

6、复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的全部文件的属组为mageedu,并让属组对目录自己拥有写权限;

wKioL1ZtEPaTBZGMAAAl7VKpjkg476.png


4.文件umask的特性及管理

 

    4.1 umask的做用

umask:文件的权限反向掩码,遮罩码;

文件的默认权限:

666-umask (由于文件默认不该该拥有执行权限)

目录的默认权限:

777-umask (目录默认应该拥有执行权限)

 

注意:之因此文件用666去减,表示文件默认不能拥有执行权限;若是减得的结果中有执行权限,则须要将其加1;

umask: 023

666-023=644

777-023=754

 

4.2 umask的管理

umask命令:

umask:查看当前umask

umask MASK: 设置umask

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

 

练习:

设置umask为023并建立/tmp/test文件 和/tmp/testdir目录查看其权限

    wKiom1ZtES2jG3ErAAAweJ0kMls319.png

相关文章
相关标签/搜索