天天看点

用户及文件权限用户及文件权限

用户及文件权限

1.用户理解

  用户就是系统使用者的身份,一般有超级用户和普通用户

  在系统中用户存储为若干串字符和若干个系统配置文件

  用户信息涉及到的系统配置文件:

    /etc/passwd       ###用户信息

   比如:kiosk用户

 kiosk:x:1000:1000:kiosk:/home/kiosk:/bin/bash

   用户为kiosk:密码x(隐藏起来了):uid为1000:gid为1000:说明文字“kiosk”:家目录/home/kiosk:用户使用的shell为/bin/bash

    /etc/shadow       ###用户认证信息

   比如kiosk用户的认证信息

 kiosk:$6$lYEMED5q$ydTHZAWDoggDEcS13WQO26vzofATD2UcMSagP8qPBl3PcRJujxI10lAbz25l9IuWIL8QMtrUZulzTSzcQCTJm0:17524:0:999999:3:2::

      用户为kiosk:密码为绿色区域:最后一次密码修改该时间-默认1970年1月1号:最短有效期0天:最长有效期999999天:警告期3天:非活跃期2天:帐号到期日-未设置

     /etc/group      ###组信息

   比如root组信息  root:x:0:

    组名称为root:组密码x(隐藏起来了):组id为0:附加组成员无

    /etc/gshadow     ###组认证信息

   /home/username    ###用户家目录

   /etc/skel/.*    ###用户骨架文件

  当不小心删除了/etc/passwd 可以执行命令 cp /etc/passwd-  /etc/passwd ,相应的/etc/group也有相应的备份文件/etc/group-

用户及文件权限用户及文件权限

2.用户管理

(1).用户建立(仅超级用户,普通用户建立新用户需要相关权限,后边再说)

       useradd     参数       用户名字

                            -u                             ##指定用户uid

                            -g                             ##指定用户初始组信息,这个组必须已经存在

                            -G                            ##指定附加组,这个组必须存在

                            -c                             ##用户说明

                            -d                             ##用户家目录

                            -s                             ##用户所使用的shell,/etc/shells记录了用户能使用shell的名字

(2)用户删除

        userdel       -r           用户名称            ##  -r  表示删除用户信息及用户的系统配置

(3)组的建立

        groupadd     -g            组名             ##建立组

        groupdel       组名字                        ##删除组

   对以上命令进行实验,执行以下命令进行实验的监控

用户及文件权限用户及文件权限

   回车后,打开监控内容,新建一个shell

用户及文件权限用户及文件权限

   建立westos新用户,初始uid为1003,监控内容可以看出相应的组建立了gid为1003,家目录为/home/westos

   命令: useradd -u 1003 westos

用户及文件权限用户及文件权限

  再次实验useradd -g westos(实验前执行userdel -r westos  删除westos用户的配置信息)gid初始为1004,2222,很明显无法建立,因为gid为1004,2222的组不存在,试   试21,成功了

    命令 :userdel -r westos    useradd -g 21 westos

用户及文件权限用户及文件权限

  删除westos配置信息,指定westos用户附加组cpdump,组id为72

  命令: userdel -r westos   useradd -G 72 westos

用户及文件权限用户及文件权限

  添加说明westos是进行用户建立实验的用户,第一次未执行userdel -r westos命令westos已经存在,故无法建立,系统默认westos uid gid为1001。

  命令:userdel -r westos  useradd -c “用户建立的实验”  westos

用户及文件权限用户及文件权限

  删除westos用户信息,新建westos指定家目录为/mnt/w-home

  命令:userdel -r westos     useradd -d /mnt/w-home westos

用户及文件权限用户及文件权限

  删除用户westos用户信息,指定所使用shell为/bin/tcsh

  命令: userdel -r westos      useradd  -s  /bin/tcsh  westos

用户及文件权限用户及文件权限

  新建组group1 ,gid为1234

  命令: groupadd -g 1234 group1

用户及文件权限用户及文件权限

    删除很简单了直接执行命令: groupdel group1

(4)用户id信息的查看

       id       参数   用户

                 -u                   ##用户uid

                 -g                  ##用户初始组id

                 -G                 ##用户所有所在组id

                 -n                 ##显示名称而不是id数字

                 -a                 ##显示所有信息

      id查看westos用户信息;id -u westos查看westos uid显示1001,其他同此。需要说明的是,id -a westos和id westos显示结果相同。

用户及文件权限用户及文件权限

(5)用户信息更改

        usermod      参数     用户名

                                -l                           ##更改用户名称

                               -u                           ##更改uid

                               -g                           ##更改gid

                               -G                          ##更改附加组

                               -aG                        ##添加附加组

                               -c                           ##更改说明

                               -d                          ##更改家目录

                               -md                      ##更改家目录指定及家目录名称

                               -s                          ##更改shell

                               -L                          ##冻结帐号

                               -U                         ##解锁

   实验

    将用户名westos改成redhat

用户及文件权限用户及文件权限

  执行命令  usermod -l redhat westos 监控信息中名称变成redhat ;usermod -l【欲修改用户新名称】 【原名称】

用户及文件权限用户及文件权限

  将westos用户的uid改为1005,输入命令usermod -u 1005 westos 后回车显示改变了。Gid的修改需要组id已经存在,否则无法修改,不再实验

用户及文件权限用户及文件权限

   将westos添加到附加组slocate中

   执行命令: usermod -G 21 westos

用户及文件权限用户及文件权限

  将westos 添加到group1中

  命令 usermod -G group1 westos

用户及文件权限用户及文件权限

   可以发现usermod -G 组名称/组id用户  都是可以将其添加到附加组内的

   再把westos添加到group1附加组的基础上,还要把westos添加到slocate组中

   执行命令: uesrmod -aG 21 westos  意思是在westos已经属于group1组的基础上在将其添加到slocate中

用户及文件权限用户及文件权限

  更改westos用户家目录并且指定到/mnt/test下

  执行命令: usermod -md /mnt/test/ westos

用户及文件权限用户及文件权限

   锁定及解锁westos用户,usermod -L westos锁定用户密码,usermod -U westos解锁密码,用cat /etc/shadow | tail -n 1查看westos用户密码状态,注意密码位前的!字    符哦。带!表示锁定状态。

用户及文件权限用户及文件权限

  (6).用户权力下放

.    在系统中超级用户可以下放普通用户不能执行的操作给普通用户

      **下放权力配置文件:/etc/sudoers

      **下放权力的方法

     超级用户执行visudo进入编辑/etc/sudoers模式

     格式:

     【获得权限用户 主机名称=(获得到的用户身份) 命令】

       Eg:student foundation10=(root)  /usr/sbin/useradd

      student用户能在主机为 foundation10上以超级用户身份执行/usr/sbin/useradd

     **执行下放权限命令

    【sudo 命令】  ##如果第一次执行sudo需要输入当前用户密码

     在/etc/sudoers中如果设置如下:

     student foundation10=(root)     NOPASSWD: /usr/sbin/useradd

   表示用户调用sudo命令的时候不需要自己密码

 实验:

  普通用户student不具备新建用户权限,也就是无法执行/usr/sbin/useradd命令

用户及文件权限用户及文件权限

 新开shell切换root用户执行visudo(visudo = vim /etc/sudoers)前者命令形式如果改错会有提示,安全一些,建议使用前者命令

用户及文件权限用户及文件权限

   hostname查询主机名称,在104-105行写入说明和命令,注意说明以##开头。

用户及文件权限用户及文件权限

  保存退出提示错误,按e进入检查修改,NOPASSWD后少:字符

用户及文件权限用户及文件权限
用户及文件权限用户及文件权限

  修改完成后保存退出,以student身份新建用户lee,并用id lee查看用户信息。

用户及文件权限用户及文件权限

  注意:授权第一次新建用户是需要密码的,第二次就不需要了。

         执行命令前加上sudo, 即sudo useradd lee

(7)用户认证信息的控制(root用户)

     passwd        [-参数]    用户名称

                               -l                         ##锁定帐号

                              -u                         ##解锁帐号

                              -n                         ##设置密码最短有效期

                              -x                          ##设置密码最长有效期

                             -w                          ##设置修改警告期

                              -i                           ##设置非活跃天数

                             -S                           ##查看用户密码状态

                             -e                            ##登陆界面强制要求用户修改密码

          chage        参数         用户名称

                              -d                              ##上一次更改日期,如果设定成0,用户登陆系统后 必须修改自己的密码                                       

                              -m                            ##设置密码最短有效期

                              -M                             ##设置密码最长有效期

                              -W                            ##设置密码修改警告期限

                               -I                             ##设置非活跃天数

                              -E <YYYYMMRDD>      ##帐号失效期

  实验

     执行命令 watch -n 1 | tail -n 3 /etc/shadow进入westos密码信息监控模式

用户及文件权限用户及文件权限

    westos密码位后依次是密码上次修改日期:密码最短有效期:密码最长有效期:密码修改警告期:非活跃天数:密码过期日期

   利用passwd修改westos密码最短有效期10天,最长有效期8888天,警告期30天,非活跃天数15天

用户及文件权限用户及文件权限

 登陆强制改密码

    执行命令passwd -e westos 显示成功,监控信息显示上次修改日期位0,logout退出后登陆需要更改密码,就不实验了。

用户及文件权限用户及文件权限
用户及文件权限用户及文件权限

    利用chage设置student用户密码最短有效期5天,最长有效期1234天,警告期10天,非活跃天数2天,密码过期日2019-12-31

用户及文件权限用户及文件权限

  上图中显示并不是2019-12-31日反而是18261,其实从1971年1月1日算起的。了解就可以了。

 3. 文件权限

   (1)文件属性的查看 ls -l filename

用户及文件权限用户及文件权限
用户及文件权限用户及文件权限

    (以下**1-8对应上图中1-8相应的位置)

    **1."-":文件类型

         -                ##普通文件

         d               ##目录

         c               ##字符设备

         s              ##套接字

         p              ##管道

         b              ##快设备

         l               ##连接

  **2."rw-r--r--":文件读写权限

用户及文件权限用户及文件权限

     *     所有人的权限

    $     所有组的权限

   @    其他人的权限

  **3."1":

    对文件:文件内容被系统记录的次数

    对目录:目录中文件属性的字节数

  **4."root":文件所有人

  **5."root":文件所有组

  **6."0":文件内容的大小

  **7."Jan  1 05:10":文件最后一次被修改的时间

  **8."file":文件名字

  监控命令

    watch -n 1 ls -lR /mnt

4.文件普通权限

用户及文件权限用户及文件权限

    u:文件所有人对文件可以读写

    g:文件组成员对文件可读

    o:其他人对文件可读

     u优先匹配,g次优先,o当u,g不匹配时匹配

   r 权限(read读的意思)

   对文件:可以查看文件中的字符

   对目录:可以查看目录中文件的信息

   w权限(write写的意思)

   对文件:可以更改文件内字符

   对目录:可以在目录中添加删除文件

   x权限(execute执行的意思)

   对文件:可以运行文件内记录的程序动作

   对目录:可以进入目录中

5.字符方式修改该文件权限

       命令:chmod [-R] <u|g|o><+|-|=><r|w|x> file|dir

             chmod u-x file1                                ##file1拥有者去掉x权限

             chmod g+w file1                              ##file1拥有组添加w权限

             chmod u-x,g+w file1                        ##file1拥有者去掉x权,file1拥有组添加w权限

             chmod ugo-r file2                            ##file2的用户组其他人去掉r权限

             chmod ug+x,o-r file3                       ##file3用户和组添加x权限,其他人去掉r权限

实验:在/tmp下新建文件file和目录westos,在wetsos下新建linux1,linux2,linux3三个文件,并对其进行监控

用户及文件权限用户及文件权限
用户及文件权限用户及文件权限

   给与/tmp下file文件其他人可写的权力,以及file文件所有组可执行的权限

   执行命令:chmod g+x,o+w /tmp/file

用户及文件权限用户及文件权限

  给/tmp/westos/linux3任何人可执行权限

  命令:chmod ugo+x /tmp/westoslinux3

用户及文件权限用户及文件权限

6.数字方式修改该文件权限

  在linux中

       r=4

      w=2

      x=1

  文件权限数字表示方式

用户及文件权限用户及文件权限

     u=rw-=4+2+0=6

     g=r--=4+0+0=4

    o=r--=4+0+0=4

  所以文件权限表示为644

    chmod 修改后权限值 file

    chmod 777 file

     7=rwx

     6=rw-

     5=r-x

     4=r--

     3=-wx

     2=-w-

     1=--x

     0=---

实验:将linux3中所有人所有组其他人的x权限去除,linux3所有人权限为755,去除所有人x权限即755-111=644

用户及文件权限用户及文件权限

   执行命令:chmod 644 /tmp/westos/linux3

用户及文件权限用户及文件权限

7.系统默认权限的设定

   从系统存在角度来说,开放权力越大,系统存在意义越高

   从系统安全角度来说,开放权力越少,系统安全性越高

   所以系统设定新建文件或目录会去掉一些权限 umask拿掉默认的022,对于文件666-022,对于目录777-022,所以root新建出来的文件权限为644,目录为755

 设定方式

      umask      ##查看系统保留权限默认为022

      umask 077       ##修改该系统保留权限为077,此设定为临时设定,只当前shell中生效

用户及文件权限用户及文件权限

  永久设定方式:

        vim /etc/bashrc ##shell  其中002为普通用户umask 022超级用户umask

用户及文件权限用户及文件权限
用户及文件权限用户及文件权限
用户及文件权限用户及文件权限

  **修改成功:wq保存退出

        vim /etc/profile ##系统 002普通用户umask 077超级用户umask

用户及文件权限用户及文件权限
用户及文件权限用户及文件权限
用户及文件权限用户及文件权限

  以上两个文件umask设定值必须保持一致

     执行命令:source /etc/bashrc

                         source /etc/profile

  让设定立即生效

用户及文件权限用户及文件权限

  重新打开shell查询umask,改过来了

用户及文件权限用户及文件权限

  新建一个文件查看权限,666-077=600

  新建一个目录查看权限,777-077=700

用户及文件权限用户及文件权限

  没错吧

8.文件所有人所有组的管理

     chown  username file|dir                            ##更改文件的所有人

     chown  username.groupname file|dir     ##更改所有人所有组

     chown -R username dir                             ##更改目录本身及里面所有内容的所有人

     chgrp -R groupname dir                            ##更改目录本身及里面所有内容的所有组

    (chown = chage owner 改变拥有者,chgrp = chage group  更改组别)

 实验:改变/tmp/file 所有人为lee ,所有组为tom

用户及文件权限用户及文件权限

 执行命令:chown lee.tom /tmp/file   (注意所有者与所有组之间是点不是逗号)

用户及文件权限用户及文件权限

  把westos的所有人改成tom

用户及文件权限用户及文件权限

  将westos以及其目录下的linux2的所有组改为student

用户及文件权限用户及文件权限

 将/tmp所有文件以及目录(含目录里的所有文件)所有组改为student

用户及文件权限用户及文件权限

 9.特殊权限

  suid ##冒险位

   只针对二进制可执行文件,

   文件内记录的程序产生的进程的所有人为文件所有人

   和进程发起人身份无关

   设定方式:

     chmod u+s file

     suid=4

     或

     chmod 4xxx file

实验:以/bin/touch为例

对于二进制文件/bin/touch,所有人添加s权限,用户lee使用/bin/touch创建file所有人为root,root用户下取消所有人s权限,用户lee再次使用/bin/touch创建文件file1,所有人为lee

   注意图中红线画出内容

用户及文件权限用户及文件权限
用户及文件权限用户及文件权限

  sgid     ##强制位

    对文件:只针对二进制可执行文件,

    任何人运行二进制文件

    程序时程序产生的进程的所有组都是文件的所有组

    和程序发起人组的身份无关

    对目录:当目录有sgid权限后,目录中新建的所有文件的所有组

    都自动归属到目录的所有组之中,和文件建立者所在的组无关

   设定方式:

     chmod g+s file|dir

     sgid=2

     或

     chmod 2xxx file|dir

实验

  对文件

  给/bin/touch用户组添加s权限,新建文件file2,查看属性,file2所有组为root,切换用户lee,同样,lee使用/bin/touch文件新建文件file2,lee所新建文件所有者为lee,但所有组却为root,root用户下取消/bin/touch文件所有的组的s权限,lee用户使用/bin/touch创建文件file3,所有者,所有人都为lee

用户及文件权限用户及文件权限
用户及文件权限用户及文件权限

 对目录:

 超级用户身份下在/tmp下新建目录test,给与其他人twx权限,用户组给与s权限,此时目录test所有组为root,切换student用户,student用户在/tmp/test目录中新建文件file,查看属性,法ile所有人为student,所有组依旧为root

用户及文件权限用户及文件权限

sticky ##粘制位

    t权限:

  只针对与目录,当一个目录上有t权限,那么目录中的文件只能被文件的拥有者删除

  设定方式:

   chmod o+t direcotry

   t=1

  或

  chmod 1777 direcotry

实验

  student用户在/tmp下新建目录westos,查看属性,其他人无w权限,给与其他人t权限和w权限,打开新shell切换用户lee,lee在/tmp/westos下新建文件le,切换tom用户,tom用户在/tmp/westos下新建文件to,当用户tom想删除lee在此目录内创建的文件le时,被拒绝,但用户tom删除自己所创建文件to时成功了。

用户及文件权限用户及文件权限

10.设定acl列表

设定格式

setfacl -m <u|g>:<username|groupname>:权限 文件|目录

-m #设定

u #用户

g #组

getfacl filename|dirname   查看acl列表内容

getfacl  /westos/

# file: westos/ ##文件名称

# owner: root ##文件所有人

# group: root ##文件所有组

user::rwx ##拥有者权限

user:student:rwx ##特殊用户权限

group::--- ##组权限

mask::rwx ##权限掩码

other::--- ##其他人权限

注意:当文件上有权限列表时,ls -l 能看到的权限是假的

实验:

Root在/tmp下新建文件file,并进行编辑两行内容“westos,redhat”设定权限660,查看文件权限。实验如下

用户及文件权限用户及文件权限

切换student用户,student用户作为其他人身份无权限查看/tmp/file文件

用户及文件权限用户及文件权限

root用户设定student用户对/tmp/file文件拥有rw权限

用户及文件权限用户及文件权限

再次切换student用户,可以查看/tmpfile文件内容

用户及文件权限用户及文件权限

对于所有组而言,所有组拥有对/tmp/file文件的rw权限,那么此所有组内的成员都会拥有/tmp/file文件的rw权限。

Root用户新建组lee,新建用户test,将test’用户添加到lee组内,id查看test信息,同时通过acl设定lee组拥有/tmp/file文件的rw权限,切换用户test,因为用户test’在lee组内,lee组拥有/tmp/file文件的rw权限,所以test用户也拥有此文件的rw权限。

用户及文件权限用户及文件权限
用户及文件权限用户及文件权限

删除列表中的用户或者组

setfacl -x <u|g>:<username|groupname> 文件|目录

取消student对/tmp/file文件的权限

用户及文件权限用户及文件权限

删除组lee对/tmp/file文件的权限,test在组lee内,因此test无法查看/tmp/file文件内容

用户及文件权限用户及文件权限

关闭列表,setfacl -b 文件|目录

ls -l 查看/tmp/file属性在第九位权限后有一个+号,通过setfacl -b /tmp/file 关闭acl列表

用户及文件权限用户及文件权限

(1)acl mask值

**mask 权限掩码

mask用来标实能够赋予用户最大权限

当用chmod改变文件普通权限时可能会被破坏

修复

setfacl -m m:rwx 文件名称

实验:root用户在/tmp下新建文件file,设定用户test对此文件拥有rwx权限,改变/tmp/file文件权限为700,查看acl列表信息,发现user和group后出现#effective,新建shell以test用户身份查看/tmp/file文件,发现无法查看。当出现#effective时,表示文件被损坏。

用户及文件权限用户及文件权限

通过命令:setfacl -m m:rwx /tmp/file 来修复,可以看出#effective消失,test用户可以查看/tmp/file,当然没内容显示了,root用户刚建立file文件的时候,就是一个空文件

用户及文件权限用户及文件权限

(2) acl 默认权限

当我们需求某个目录对于student可写,并且目录中新建的子目录对student也可写

就要设定默认默认权限

注意: 默认权限只对目录中新建立的文件或者目录生效,对已经建立的文件无效,

对于目录本身也无效

setfacl -m d:u:student:rwx -R /dir

实验:

(1)root用户在/tmp下新建目录westos,在westos下新建文件linux1,linux2;

查看linux1,linux2,westos的权限,对目录westos进行acl权限设置

用户及文件权限用户及文件权限

(2)root用户在westos下新建目录test,以及test下新建文件file,切换student用户,发现student用户对test以及test下的file文件具备rwx权限。

用户及文件权限用户及文件权限

继续阅读