第六章 用户组和权限管理

173 阅读5分钟

@[TOC](第六章 用户组和权限管理)

实验⼀:linux用户和组管理及权限管理

实验目的

熟练使⽤useradd、groupadd、chown、chmod命令来添加和删除⽤户、添加和删除组以及设置⽤户和组的权限、修改⽂件所属等,passwd、su命令的使⽤。熟悉特殊权限suid、sgid、sticky、acl的功能和⽤法。

前提准备

linux系统,centos6、centos7或ubuntu。

实验步骤

了解useradd命令添加用户时使用的参数,如-g设置主组,-G设置基本组,-s这种默认shell,-M不创建家目录等 内容。 熟悉rwx权限分别应用在文件和目录上的意义,八进制数子表示权限。 理解什么情况下需要设置特殊权限suid、sgid、sticky、acl。

  1. useradd命令:在系统中添加⽤户

【例1】添加三个⽤户名称分别为:liubei、zhangfei、guanyu

[root@Magedu ~]# useradd liubei
[root@Magedu ~]# useradd zhangfei
[root@Magedu ~]# useradd guanyu
[root@Magedu ~]# id liubei
uid=1005(liubei) gid=1005(liubei) groups=1005(liubei)

【例2】在系统上添加⼀个⽤户名称为apache的⽤户,默认shell为/sbin/nolgoin且不创建家⽬录

[root@Magedu ~]# useradd -s /sbin/nologin -M apache 
  1. groupadd命令:添加组

【例3】添加develop组

[root@Magedu ~]# groupadd develop
  1. chown命令:修改⽂件所属关系 【例4】设置/home/app/run/apache⽬录及其⼦⽬录和⽂件属主属组为apache
[root@Magedu ~]# mkdir -p /home/app/run/apache/{log,htdoc,conf}
[root@Magedu ~]# chown -R apache:apache /home/app/run/apache
[root@Magedu ~]# ll /home/app/run/apache
total 0
drwxr-xr-x 2 apache apache 6 May 31 04:07 conf
drwxr-xr-x 2 apache apache 6 May 31 04:07 htdoc
drwxr-xr-x 2 apache apache 6 May 31 04:07 log
[root@Magedu ~]# ll /home/app/run/
total 0
drwxr-xr-x 5 apache apache 42 May 31 04:07 apache

注意:chown -R apache.apache等价于chown -R apache:apache。 4. chmod命令:改变⽂件权限

【例5】修改权限为属主添加写和执⾏权限、属组没有读权限其它⼈有读和执⾏权限

[root@Magedu ~]# touch 1.sh
[root@Magedu ~]# ll 1.sh 
-rw-r--r-- 1 root root 0 Jun 3 22:16 1.sh
[root@Magedu ~]# chmod u+wx,g-r,o=rx 1.sh 
[root@Magedu ~]# ll 1.sh 
-rwx---r-x 1 root root 0 Jun 3 22:16 1.sh

【例6】递归设置testdir⽬录权限为:属组添加可读、可写、可执⾏权限,但其⼦⽂件不添加执⾏权限

[root@Magedu ~]# chmod -R g=rwX testdir/

【例7】设置⽂件1.sh权限为只有属主有读写权限

[root@Magedu ~]# ll 1.sh 
-rw-r--r-- 1 root root 0 Jun 4 00:28 1.sh
[root@Magedu ~]# chmod 600 1.sh 
[root@Magedu ~]# ll 1.sh
-rw------- 1 root root 0 Jun 4 00:28 1.sh
  1. passwd命令:设置⽤户密码

【例8】修改⽤户linux的登录密码

[root@Magedu ~]# passwd linux
Changing password for user linux.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
  1. su命令:切换⽤户 【例9】完全切换linux⽤户⾝份
[root@Magedu ~]# su - linux
Last login: Wed May 23 07:56:53 EDT 2018 on pts/1
[linux@Magedu ~]$ id
uid=1004(linux) gid=1004(linux) groups=1004(linux)

【例10】不完全切换到linux⽤户⾝份

[root@Magedu ~]# su linux
[linux@Magedu root]$ id
uid=1004(linux) gid=1004(linux) groups=1004(linux)
  1. SUID权限设置 【例11】设置⼆进制可执⾏程序⽂件chmod拥有suid权限
[linux@Magedu root]$ cp /usr/bin/chmod ./
[root@Magedu ~]# ll chmod
-rwxr-xr-x 1 root root 58584 Jun 4 02:57 chmod
[root@Magedu ~]# chmod u+s chmod
[root@Magedu ~]# ll chmod 
-rwsr-xr-x 1 root root 58584 Jun 4 02:57 chmod

【例12】取消⼆进制可执⾏程序⽂件chmod拥有的suid权限

[root@Magedu ~]# chmod u-s chmod 
[root@Magedu ~]# ll chmod
-rwxr-xr-x 1 root root 58584 Jun 4 02:57 chmod
  1. SGID权限设置 【例13】设置⼆进制可执⾏程序⽂件chmod拥有sgid权限
[root@Magedu ~]# chmod g+s chmod 
[root@Magedu ~]# ll chmod
-rwxr-sr-x 1 root root 58584 Jun 4 02:57 chmod

【例14】取消⼆进制可执⾏程序⽂件chmod拥有的sgid权限

[root@Magedu ~]# chmod g-s chmod 
[root@Magedu ~]# ll chmod
-rwxr-xr-x 1 root root 58584 Jun 4 02:57 chmod

【例15】对testdir⽬录设置sgid权限,作为协作⽬录

[root@Magedu ~]# ll -d testdir/
drwxrwxr-x 2 root root 37 May 23 04:09 testdir/
[root@Magedu ~]# chmod g+s testdir/
[root@Magedu ~]# ll -d testdir/
drwxrwsr-x 2 root root 37 May 23 04:09 testdir/

【例16】取消testdir⽬录sgid权限

[root@Magedu ~]# chmod g-s testdir/
[root@Magedu ~]# ll -d testdir/
drwxrwxr-x 2 root root 37 May 23 04:09 testdir/
  1. Sticky权限设置 【例17】对testdir⽬录设置sticky权限,实现只有⽂件的所有者或root才能删除该⽬录下的⽂件
[root@Magedu ~]# ll -d testdir/
drwxrwxr-x 2 root root 37 May 23 04:09 testdir/
[root@Magedu ~]# chmod o+t testdir/
[root@Magedu ~]# ll -d testdir/
drwxrwxr-t 2 root root 37 May 23 04:09 testdir/

【例18】取消testdir⽬录的sticky权限

[root@Magedu ~]# chmod o-t testdir/
[root@Magedu ~]# ll -d testdir/
drwxrwxr-x 2 root root 37 May 23 04:09 testdir/
  1. acl特殊权限 【例19】在/testdir/dir⾥创建的新⽂件⾃动属于g1组,组g2的成员如:alice能对这些新⽂件有读写权限,组g3的成员 如:tom只能对新⽂件有读权限,其它⽤户(不属于g1,g2,g3)不能访问这个⽂件夹。
mkdir /testdir/dir -p
groupadd g1
groupadd g2
groupadd g3
useradd -G g2 alice
useradd -G g3 tom 
chgrp g1 /testdir/dir
chmod 2770 /testdir/dir
setfacl -Rm d:g:g2:rw /testdir/dir/
setfacl -Rm g:g2:rwx /testdir/dir/
setfacl -Rm g:g3:rx /testdir/dir/

【例20】备份/testdir/dir⾥所有⽂件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后还原ACL权限 getfacl对⽬录操作时,不能使⽤绝对路径;

[root@Magedu ~]# tar -cvf dir.tar /testdir/dir
[root@Magedu ~]# getfacl -R testdir/dir > /root/acl.txt

删除全部acl权限:

[root@Magedu ~]# setfacl -b /testdir/dir

还原全部acl权限:

[root@Magedu ~]# tar -xvf dir.tar -C /var/tmp
[root@Magedu ~]# cp ac1.txt /var/tmp
[root@Magedu ~]# cd /root
setfacl --restore ac1.txt