云计算 --day06

陈鑫


用户 、组

-rw-r--r--. 1 root root    0 Dec  2 18:10 1

                  用户    组

多用户多任务的管理系统

linux 管理模式私有模式:  每一个用户对应一个和用户同名的

(管理用户可以通过来执行,可以对组下发权限,这样组下的用户也可以使用对应的权限)

                       公有模式:多个用户共用一个组

1.用户类别(最多可以创建65535个用户)

管理员:  root             UID    (一个系统默认只有一个管理用户)

普通用户:redhat       1-60000

普通用户分为两类:

                 系统用户:系统安装自动创建    1-200    201-999

                  一般用户:手动添加     1000-60000    (用户自己创建出来的)

1.1创建用户   (只能在管理员下的身份创建)

useradd  用户名                     /usr/sbin/useradd(默认的文件路径)    (只能一个一个的添加,不能同时添加多个组)                  (sbin--管理员下的路径)  (bin--所有用户下的路径)

格式:

useradd    [选项]     一个用户名

-u   更改用户UID               

-g   更改用户的基本组       

-G  更改用户的附加组     

-c    注释信息                  

-d    家目录

-s    更改shell字段   (可交互式shell、非交互式shell)   

命令演示:

[root@localhost ~]# useradd   1         用户名不能是数字,必须是用户名
useradd: invalid user name '1'   
      
[root@localhost ~]# useradd   xiao1
[root@localhost ~]# cat  /etc/passwd      (查看用户是否创建好在配置文件中查询)
xiao1:x:1002:1002::/home/xiao1:/bin/bash

[root@localhost ~]# su   redhat
bash: /etc/bashrc: Permission denied
[redhat@localhost root]$ useradd  xiao2   普通用户不能创建用户
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.

                     root用户创建用户时就在这配置文件
[redhat@localhost root]$ exit      
exit

查看创建的用户

[root@localhost ~]# cat  /etc/passwd      (查看用户是否创建好在配置文件中查询)
xiao1:x:1002:1002::/home/xiao1:/bin/bash

如何判断该用户是否创建成功

     法一:   (cat查询所有用户,比较慢)

                 

[root@localhost ~]# cat  /etc/passwd      (查看用户是否创建好在配置文件中查询)
xiao1:x:1002:1002::/home/xiao1:/bin/bash

      法二:切换用户

[root@localhost ~]# su  xiao1
bash: /etc/bashrc: Permission denied
[xiao1@localhost root]$ exit
exit

       法三: 通过grep过滤

[root@localhost ~]# grep  '^xiao1'   /etc/passwd
xiao1:x:1002:1002::/home/xiao1:/bin/bash

       法四:通过id 命令

         id        用户名       (在系统中可能会有重名的用户名,但是每个用户的id是唯一的)

[root@localhost ~]# id  xiao1
uid=1002(xiao1) gid=1002(xiao1) groups=1002(xiao1)

1.2查看用户

grep       '^用户名'       /etc/passwd

id              用户名

cat  /etc/passwd  (用户配置文件)

xiao1:x:1002:1002::/home/xiao1:/bin/bash

  用户名:密码的占位符:UID:GID:描述信息,注释字段:用户的家目录:shell字           段/bin/bash登陆式shell        /sbin/nologin非登陆式shell

1.3修改用户

usermod [option...] [选项参数]  用户名

-l    修改用户登录的用户名            #usermod    -l newxiao1   xiao1  把xiao1改名为newxiao1

-u   更改用户UID             #usermod    -u  1111   newxiao1    #usermod  newxiao1 -u  1111

-g   更改用户的基本组     #usermod   -g  redhat    newxiao1

-G  更改用户的附加组     #groudadd  g1        #usermod   -G   g1  newxiao1

-c    注释信息                   #usermod   -c18123827227    newxiao1

-d    家目录                      #usermod  -d 家目录    newuser

-s    更改shell字段   (可交互式shell、非交互式shell)   

                                        #usermod  -s    /sbin/nologin   newuser

-L  锁定用户密码
-U   解锁用户密码

eg:

#usermod -l new1 -u 1234 -g 1000 -c newuser  newuser

1.4删除用户

userdel -r     用户       (删除用户以及创建用户相关的所有文件 )    (配置文件,家目录)

[root@localhost ~]# userdel   -r  xiao1
[root@localhost ~]# id  xiao1
id: ‘xiao1’: no such user

注:默认也会删除用户的基本组,但是如果基本组中有其他用户,userdel -r删除不会删除基本组

[root@www ~]# useradd haha
[root@www ~]# tail -1 /etc/group
haha:x:1002:
[root@www ~]# userdel -r haha
[root@www ~]# tail -1 /etc/group
user:x:1001:
[root@www ~]# useradd xixi
[root@www ~]# usermod -G xixi user
[root@www ~]# tail -1 /etc/group
xixi:x:1002:user
[root@www ~]# userdel -r xixi        ---xixi基本组中存在其他用户,删除用户不会删除基本组
userdel: group xixi not removed because it has other members.
[root@www ~]# tail -1 /etc/group
xixi:x:1002:user
​

1.5用户设置/修改密码  (笔试题会考格式)

passwd    [用户名]           (建用户密码)  (如果有密码,则它是改密码,如果没有密码,则它是创建密码)

[root@localhost ~]# passwd  xiao1
Changing password for user xiao1.
New password:             正常输入密码,不会显示的
Retype new password:      重复确认密码
passwd: all authentication tokens updated successfully.

 然后登录验证这个用户


管理员和普通用户在设置密码的区别

[root@localhost ~]# passwd         默认更改当前用户密码
Changing password for user root.    root管理员不需要输入原来的密码
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

[root@localhost ~]# su  -    redhat
-bash: /etc/bashrc: Permission denied
-bash: /etc/bashrc: Permission denied
[redhat@localhost ~]$ passwd   xiao1      普通用户是没有更改密码的权力的
passwd: Only root can specify a user name.     
[redhat@localhost ~]$ passwd  redhat
passwd: Only root can specify a user name.    

[redhat@localhost ~]$ passwd            
Changing password for user redhat.         普通用户只能设置更改自己的密码
Current password:                           并且需要输入原来的密码
New password:                              新设置的密码需要输入8位  有数字,字符,字母构成
BAD PASSWORD: The password is the same as the old one
passwd: Authentication token manipulation error

管理员:可以指定用户名更改系统任意用户的密码,不严格匹配密码等级设置

普通用户:不可以指定用户名,只能更改自己的密码,需要输入之前的密码,严格匹配密码等级设置

更改密码的另二种方法

①echo   mima  |  passwd  --stdin  用户名  (   --stdin把前面一个命令的输出结果作为passwd命令的标椎输入

[root@localhost ~]# echo  具体密码  | passwd --stdin  用户名

  (密码可以看到)

②chpasswd 批量更改

[root@localhost ~]# vim  users
[root@localhost ~]# cat  users  |  chpasswd   ^C
[root@localhost ~]# cat  users
redhat:1234
root:1234
xiao1:1234

也可以一个个更改:

[root@localhost ~]# echo   redhat:123456   |  chpasswd  

  

-d      删除用户密码

-l       锁定用户密码
-u       解锁用户密码

eg:

删除用户密码

[root@localhost ~]# passwd  -d  xiao1
Removing password for user xiao1.
passwd: Success

1.6破解密码:  (破解密码----红帽认证考试)

主机关机-->开机-->鼠标进入启动界面-->第一个引导菜单--> e-->找到linux标记的这一行在行尾(quiet)添加rd.break--->ctrl-x--->mount    -o     remount ,rw  /sysroot  --->chroot  /sysroot -->passwd  root -->设置密码--确认密码--->touch  /.autorelabel -->exit -->exit  (等待)

详:

第一个引导菜单:鼠标点击中间       再按  e   键

(两个菜单都可以)

 找到linux标记的这一行在行尾(quiet)添加rd.break--->按 ctrl-x 键

 跳转下一页等待加载

输入

mount    -o     remount ,rw  /sysroot 

(通过挂载的方式对   /   文件系统也就是  /   分区 设置一个 rw  权限)

注:系统默认文件系统对密码有一个只读的权限r,改密码也要一个权限写w

输入

chroot  /sysroot  

(切换文件系统,切换到  /分区)

接下来出现的提示符sh跟正常打开虚拟机一样

输入

passwd  root -->设置密码--确认密码

可以不加root , 因为前面提示符#就代表管理员

如果是中文版,确认密码会出现乱码

输入

touch  /.autorelabel  (必不可少

+ 隐藏文件autorelabel 

在 / 文件系统下创建隐藏文件

注:这条密令是对linux主机安全模块Slinux进行初始化操作

输入

exit -->exit 

第一次exit是从Shell退出到交换模式Switch

第二次是从交换模式退出到内核层,接下来加载到操作系统层

最后等待它系统自动重启,不是手动

 

密码设置成功之后,重新输入密码时,不是和自己设置普通用户进行验证

而是通过Not  listed 指定用户名 root 进行验证

 

 


2.组类别

管理组:  root   GID=0 

普通组:  1-60000

普通组分为这两类:

                             系统组

                             一般组

主组,基本组,私有组  ==  用户的默认组  (默认组不需要自己创建,用户创建出来的时候就有了)

eg:root用户的默认组就是root组

linux系统默认的是私有模式,只要用户创建出来, 组也随之创建好,为主组(和用户同名)

若没有主组,也就没有用户了

附加组,额外组,用户组 == 默认组之外的组   (一个用户可以有多个组)

2.1组添加           (也是管理员才能做的一个操作)

groupadd       一个组名     (不能同时创建多个组

创建组

groupadd  组名

2.2查看组

grep     '^组名‘’        /etc/group     (组的所有信息都在 组配置文件)

cat     /etc/group     组配置文件(组名)

#man  5  group
redhat:x:1000:

组名:组密码占位符:GID:组中的用户名

2.3 修改组信息

groupmod  [option...][选项参数]组名

#groupadd grp2 

-n   修改组名     #groupmod     -n  grp1   g1

-g    修改组id      #groupmod  -g    2222   g1

2.4  删除组

groupdel     组名

注:是能删除一个附加组,哪怕附加组中有用户也可以删除,但是不能删除一个基本组

2.5设置,修改组密码

gpasswd      组名

-a   把指定用户加入组    #usermod  -G g1 redhat  ==  #gpasswd  -a  redhat   g1

-d  将指定用户从组移除   #gpasswd -d  redhat g2

-M  指定多个用户加入组(指定新的组成员列表)   #gpasswd -M  user1,user2 g2   #gpasswd -M  haha,xixi  g2


-r   删除组密码

-A  指定组长           #gpasswd -A haha g2
-R  锁定组密码         #gpasswd -R  g2

2.6  登入新组

newgrp     组名       切换组身份


练习题1

1.新建组,shengchan,caiwu,jishu

2.新建用户要求如下:

* wjx 是shengchan组的附加用户

* liuy 是caiwu组的附加用户

* zxx 是jishu组的附加用户

* 新建admin用户,此用户不属于以上提到的三个部门,以上用户密码设置为redhat

#groupadd shengchan
#groupadd caiwu
#groupadd  jishu 
​
#useradd -G  shengchan  wjx
#useradd liuy
#usermod -G caiwu liuy
#useradd zxx
#gpasswd -a zxx jishu
#useradd admin
​
(1)passwd wjx
(2)echo redhat |passwd --stdin liuy
(3)echo zxx:redhat |chpasswd
(4)vim users
wjx:redhat
liuy:redhat
zxx:redhat
admin:redhat
#cat users | chpasswd

3.实验

创建学习组1,学习组2 ;他们的组gid分别为1111,2222,添加成员并将uid为1088,

和uid为1066的成员为两组的组长,其中一组组长有一个‘外号’laoda。

不同学习组成员进入其他组需要密码才能进入(设置密码);即使密码泄露也不希望组之外的成员进入。

#groupadd std1 
#groupmod -g 1111 std1
#groupadd -g 2222 std2
​
#useradd u1
#useradd u2
#usermod -u 1088 u1
#usermod -c laoda u1
#useradd -u 1066  ha1
#useradd ha2
用户加入组
#usermod -G std1  u1
#gpasswd -a u2 std1
#gpasswd -M ha1,ha2  std2
#gpasswd -A u1 std1
#gpasswd -A ha1 std2
​
#gpasswd std1
#gpasswd std2
#gpasswd -R std1
#gpasswd -R std2
​

不允许用户远程登录


扩展

useradd haha /etc/passwd

                      /etc/group

                      /etc/shadow 密码文件

                      /etc/gshadow

                      /home/USERNAME (d)

                      /var/spool/mail/USERNAME (-)

groupadd /etc/group /etc/gshadow

                /etc/shadow 用户密码文件

用户名:加密密码:最后一修改密码的天数(1970/1/1):密码生效最短时间:最长时间:警告时间:延长时间:精确过期时间(1970/1/1):保留字段
#passwd
  -x, --maximum=DAYS      maximum password lifetime (root only)
  -n, --minimum=DAYS      minimum password lifetime (root only)
  -w, --warning=DAYS      number of days warning users receive

/etc/gshadow 组密码信息 7 5

组名:组密码:组长:组成成员

/etc/default/useradd 用户创建默认加载的配置文件

参数含义
GR0UP=100这个选项用于建立用户的默认组,也就是说,在添加每个用户时,用户的初始组就是 GID 为 100 的这个用户组。但 CentOS 并不是这样的,而是在添加用户时会自动建立和用户名相同的组作为此用户的初始组。也就是说这个选项并不会生效。 Linux 中默认用户组有两种机制:一种是私有用户组机制,系统会创建一个和用户名相同的用户组作为用户的初始组;另一种是公共用户组机制,系统用 GID 是 100 的用户组作为所有新建用户的初始组。目前我们采用的是私有用户组机制。
HOME=/home指的是用户主目录的默认位置,所有新建用户的主目录默认都在 /home/下。
INACTIVE=-1指的是密码过期后的宽限天数,也就是 /etc/shadow 文件的第七个字段。这里默认值是 -1,代表所有新建立的用户密码永远不会失效。
EXPIRE=表示账号过期时间,也就是 /etc/shadow 文件的第八个字段。默认值是空,代表所有新建用户没有失效时间,永久有效。
SHELL=/bin/bash表示所有新建立的用户默认 Shell 都是 /bin/bash。
SKEL=/etc/skel在创建一个新用户后,你会发现,该用户主目录并不是空目录,而是有 .bash_profile、.bashrc 等文件,这些文件都是从 /etc/skel 目录中自动复制过来的。因此,更改 /etc/skel 目录下的内容就可以改变新建用户默认主目录中的配置文件信息。
CREATE_MAIL_SPOOL=yes指的是给新建用户建立邮箱,默认是创建。也就是说,对于所有的新建用户,系统都会新建一个邮箱,放在 /var/spool/mail/ 目录下,和用户名相同。

/etc/login.defs 登录用户默认匹配的配置文件

注:配置文件中的#表示注释 
 MAIL_DIR    /var/spool/mail   \#创建用户时,要在目录/var/spool/mail中创建一个用户mail文件
 PASS_MAX_DAYS  99999    \#密码最大有效期
 PASS_MIN_DAYS  0    \#两次修改密码的最小间隔时间
 PASS_MIN_LEN  5      \#密码最小长度,对于root无效
 PASS_WARN_AGE  7   \#密码过期前多少天开始提示
​
 #创建用户时不指定UID的话自动UID的范围
 UID_MIN          500\#用户ID的最小值
 UID_MAX         60000  \#用户ID的最大值
​
 #自动组ID的范围
 GID_MIN          500\#组ID的最小值
 GID_MAX         60000    \#组ID的最大值
​
USERDEL_CMD  /usr/sbin/userdel_local  \#当删除用户的时候执行的脚本
CREATE_HOME   yes     \#使用useradd的时候是够创建用户目录
USERGROUPS_ENAB yes    \#用MD5加密密码

练习题2

1.创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"

useradd gentoo

gpasswd -a gentoo bin

gpasswd -a gentoo root

#usermod -s /bin/csh -c "Gentoo Distribution" gentoo

2.创建下面的用户/组,用户natasha,使用admins 作为附属,用户harry也使用admins 作为附属组,用户sarah不可交互登录系统,且不是admins 的成员,natasha,harry,sarah密码都是centos

5.查看UID、GID范围的配置文件,修改为1500-60000。并查看密码加密算法

cat /etc/login.defs

6.查看创建用户时的模板配置文件

cat /etc/default/useradd

7.修改创建用户时的默认设置,家目录/www,默认shell 为/sbin/nologin

cat /etc/default/useradd


3.权限

3.1 系统中的权限是在文件中标识

r   w   x                r-x                r--

 4    2    1            4   1                 4

所属用户权限   所属用户组权限    其他用户权限

3.2权限两种描述方式       

(1)字符形式 r read w write x excute

(2)数值形式 r=4 w=2 x=1

-rw-------. 1 root root 1456 Nov 19 12:19 anaconda-ks.cfg     600
drwxr-xr-x. 2 root root    6 Nov 19 14:12 Desktop              755


3.3文件默认权限值

文本文件最高的权限值:666    (少了一个执行权限x=1)

权限掩码   权限过滤值:022            #umask

文本文件默认的权限值:644


目录文件最高的权限值:777

权限掩码    权限过滤值:022            #umask

目录文件默认的权限值:755

rw-    rw-    rw-          6  6  6
---     -wx    -wx         0  3  3   
rw-     r--      r--          6  3  3

----     ----      --x        6  4   4

3.4 权限字符含义

文本文件:r    read    读取文件内容  (cat tac more less  head  tail  grep   )

                        w    write     编辑文件内容  (vim   echo    cat    <<     >file)

                        x     excute   解释运行文件的内容(命令文件)

目录文件:r 查看目录中的文件名 ls

                  w 创建文件 touch mkdir cp mv > rm

                   x        cd    (r-x)(rwx)

3.5 linux 中文件权限匹配规则

可执行文件进程的所属身份是用户发起者身份,

判断进程发起者身份是否是目标文件的所属用户,是,匹配目标文件所属用户的权限

不是,判断进程发起者身份是否是目标文件的所属组用户,是,直接匹配目标文件组权限,

不是,则直接匹配目标文件其他用户的权限

3.6更改文件的权限

chmod  权限  文件名

注:作为普通用户只能更改属于自己的文件的权限。
u所属用户位   g所属组    o其他用户   a 所有

chmod   ugo=rwx       FILE1     //u     user      g  group    o    other   a   all

==chmod   a=rwx       FILE1 

==chmod   -x       FILE1 

==chmod   u=rwx,g+w,o-x       FILE1 

chmod    777   DIRNAME 

chmod    7       DIRNAME    =  chmod   007       DIRNAME

chmod     u= 7       DIRNAME   --错误

不能数字字母同时存在

注:普通用户修改权限,用户只能更改属于当前用户文件的权限

chown   更改你文件所属用户:

chown    用户名  FILE...

chown    用户名;组名    FILE...

chgrp    更改你文件所属组

chgrp    组名        FILE...

eg:
[root@www ~]# ll aaa
-------rw-. 1 root root 5 Dec  4 14:30 aaa
[root@www ~]# chown xixi:haha  aaa
[root@www ~]# ll aaa
-------rw-. 1 xixi haha 5 Dec  4 14:30 aaa
[root@www ~]# chown redhat aaa
[root@www ~]# ll aaa
-------rw-. 1 redhat haha 5 Dec  4 14:30 aaa
[root@www ~]# chgrp  xixi aaa
[root@www ~]# ll aaa
-------rw-. 1 redhat xixi 5 Dec  4 14:30 aaa

  757  ./a.txt
  758  ll  a.txt
  759  chmod  a=x  a.txt
  760  ll a.txt
  761  ./a.txt
  762  cat  a.txt
[root@localhost ~]# cp  /etc/fstab  /var/tmp
[root@localhost ~]# useradd  zhangsan
[root@localhost ~]# chomd  zhangsan:zhangsan  /var/tmp/fstabbash: chomd: command not found...
Similar command is: 'chmod'
[root@localhost ~]# chown  zhangsan:zhangsan  /var/tmp/fstab 
[root@localhost ~]# ll     /var/tmp/fstab
-rw-r--r--. 1 zhangsan zhangsan 579 Dec  3 23:50 /var/tmp/fstab
[root@localhost ~]# chmod   a-x    /var/tmp/fstab
[root@localhost ~]#  chmod   o+r    /var/tmp/fstab
[root@localhost ~]# ll    /var/tmp/fstab
-rw-r--r--. 1 zhangsan zhangsan 579 Dec  3 23:50 /var/tmp/fstab


(ll   -d   文件)列出指定文件或目录

3.7特殊权限

umask   0022

chmod   4644  file

u+s=4 suid   所属用户的禁锢位

仅对可执行文件(命令文件)  设置有意义:

可执行文件(命令文件)设置u+s权限,可执行文件的进程所属用户是可执行文件自身的用户;

[root@localhost ~]# cd  /pub
[root@localhost pub]# ll  /usr/bin/passwd
-rwsr-xr-x. 1 root root 33544 Dec 14  2019 /usr/bin/passwd

[redhat@localhost pub]$ passwd         //passwd 进程的用户身份是root(是执行文件自身的身份)

passwd  修改当前用户的密码,  更改的是/etc/shadow
[root@localhost pub]# ll  /etc/shadow
----------. 1 root root 1399 Dec  3 23:51 /etc/shadow

为什么普通用户可以修改/etc/shadow的密码信息?

是因为passwd进程的身份是root,作为root匹配目标文件可以忽略读写权限

设置情况:通过任意用户执行命令,通过root身份来执行就可以设置特殊权限u+s

g+s=2   sgid  所属组禁锢位

对可执行文件(命令文件)  设置有意义:   (很少用)
可执行文件(命令文件)设置g+s权限,可执行文件的进程所属组是可执行文件自身的所属组;
(2)对目录文件设置有意义:
任意用户在该目录下创建的文件,文件的所属组都是目录的所属组
eg:
[root@www ~]# mkdir /pub
[root@www ~]# chmod 777 /pub
[root@www ~]# ll /usr/bin/touch 
-rwxr-xr-x. 1 root root 96144 Jul 10  2021 /usr/bin/touch
[user@www ~]$ touch /pub/u1
[user@www ~]$ ll /pub/u1 
-rw-rw-r--. 1 user user 0 Dec  4 16:20 /pub/u1
----------------------目录g+s------------------------------------
[root@www ~]# chmod g+s /pub
[root@www ~]# ll /pub -d
drwxrwsrwx. 2 root root 16 Dec  4 16:20 /pub
[user@www ~]$ touch /pub/u2
[user@www ~]$ ll /pub/
total 0
-rw-rw-r--. 1 user user 0 Dec  4 16:20 u1
-rw-rw-r--. 1 user root 0 Dec  4 16:22 u2

o+t=1   sticky  冒险位

仅对目录文件设置有意义:
目录文件设置o+t权限后,普通用户只能删除自己的文件不能删除别人的文件
[root@www ~]# ll -d /test
drwxrwxrwx. 3 root root 102 Dec  4 15:18 /test
[root@www ~]# ll /test
total 0
-rw-r--r--. 1 root   root   0 Dec  4 15:09 r2
-rw-r--r--. 1 root   root   0 Dec  4 15:09 r3
-rw-r--r--. 1 redhat redhat 0 Dec  4 15:10 red1
-rw-r--r--. 1 redhat redhat 0 Dec  4 15:10 red2
-rw-r--r--. 1 redhat redhat 0 Dec  4 15:10 red3
-rw-r--r--. 1 user   user   0 Dec  4 15:10 u1
-rw-r--r--. 1 user   user   0 Dec  4 15:10 u2
-rw-r--r--. 1 user   user   0 Dec  4 15:10 u3
[user@www test]$ rm -f r2    删除任意用户的文件
--------------------目录o+t----------------------------------
[root@www ~]# chmod o+t /test
[root@www ~]# ll -d /test
drwxrwxrwt. 3 root root 92 Dec  4 16:28 /test

[user@www test]$ rm -f r3
rm: cannot remove 'r3': Operation not permitted
[user@www test]$ rm -f u1
[user@www test]$ rm -f red1
rm: cannot remove 'red1': Operation not permitted

3.8 扩展权限

查看文件的权限列表:getfacl   FILENAME

设置扩展权限列表:setfacl    -m  u:用户名:权限    FILENAME   (-m  设置操作)

                                setfacl    -m   g:组名:权限    FILENAME

删除扩展层权限列表:setfacl   -x   u:用户名:   FILENAME

清空扩展权限:            setfacl   -b   FILENAME

                                

[root@localhost ~]# getfacl  a.txt
# file: a.txt
# owner: root
# group: root
user::--x
group::--x
other::--x

[root@localhost ~]# setfacl  -m  u:redhat:rwx   a.txt
[root@localhost ~]# ll  a.txt
---xrwx--x+ 2 root root 0 Dec  2 23:20 a.txt
[root@localhost ~]# getfacl  a.txt
# file: a.txt
# owner: root
# group: root
user::--x
user:redhat:rwx
group::--x
mask::rwx
other::--x

[root@localhost ~]# setfacl  -m  g:redhat:rwx   a.txt
[root@localhost ~]# getfacl  a.txt
# file: a.txt
# owner: root
# group: root
user::--x
user:redhat:rwx
group::--x
group:redhat:rwx
mask::rwx
other::--x

[root@localhost ~]# setfacl  -x  u:redhat:rwx   a.txt
setfacl: Option -x: Invalid argument near character 10
[root@localhost ~]# getfacl  a.txt
# file: a.txt
# owner: root
# group: root
user::--x
user:redhat:rwx
group::--x
group:redhat:rwx
mask::rwx
other::--x

[root@localhost ~]# setfacl  -b  u:redhat:rwx   a.txt
setfacl: u:redhat:rwx: No such file or directory
[root@localhost ~]# setfacl  -b g:redhat:rwx   a.txt
setfacl: g:redhat:rwx: No such file or directory
[root@localhost ~]# getfacl  a.txt
# file: a.txt
# owner: root
# group: root
user::--x
group::--x
other::--x

 补: 

chown 和 chmod 都是Linux中常用的 解决权限问题的方法

对于初学者来说,使用chmod来改变文件权限是更常用的

但是更多时候,我们需要一种不去更改文件本身属性的方法。

chown 和 chmod 的区别:

1、操作内容不同

查看文件或文件夹属性时,我们可以看到:

使用chmod会修改第一列的内容,即文件或文件夹的读写执行权限;

而使用chown会修改第3、4列内容,即可访问该文件或文件夹的用户名和用户组。

即:

chmod是用来设置文件夹和文件权限的;

而chown是用来设置用户组的,比如授权某用户组。

2、用法不同

chown用法

作用:

用来更改某个目录或文件的用户名和用户组。

一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。

语法:

chown [-cfhvR] [--help] [--version] user[:group] 文件名

也可以简化为:

chown 用户名:组名 文件路径

举例:

例1:chown root:root /tmp/tmp1

就是把tmp1的用户名和用户组改成root和root(只修改了tmp1的属组)。

例2:chown -R root:root /tmp/tmp1

就是把tmp1下的所有文件的属组都改成root和root。

chmod用法

作用:

用来修改某个目录或文件的访问权限。

Linux/Unix 的文件档案存取权限分为三级 : 档案拥有者(Owner)、群组(Group)、其他(Other Users)。利用 chmod 可以藉以控制档案如何被他人所存取。

举例:

例子:chmod -R 777 /home/linux

就是把该目录下的所有文件及文件夹的权限改为可读可写可执行的。


作业题:(红帽认证考题)

1.创建下列用户,组,和组的成员关系(servera)

• 创建组sysmgrs

• 一个名为 natasha 的用户,其属于 sysmgrs,这个组是该用户的从属组

• 一个名为 harry 的用户,属于 sysmgrs,这个组是该用户的从属组

• 一个名为 sarah 的用户,其在系统汇总没有可以交互的 shell  (非登入时shell)

• 用户 natasha,harry,sarah 的秘密吗都要设定为:modteed

#groupadd    sysmgrs

法一:#useradd       -G   sysmgrs(组名/id)      natasha

法二:#useradd   harry                                       

           #usermod  -G  sysmgrs   harry

法三:#gpasswd  -a   sysmgrs   harry   (组密码的形式)

#useradd   -s    /sbin/nologin    sarah

#echo  modteed  |  passwd  --stdin        natasha

#echo  modteed  |  passwd  --stdin         harry

#echo  modteed  |  passwd  --stdin         sarah

2.拷贝文件/etc/fstab 到/var/tmp/fstab 配置文件/var/tmp/fstab 的权限

• 文件/var/tmp/fstab 的拥有者是 root 文件/var/tmp/fstab 属于 root 组

• 文件/var/tmp/fstab 对任何用户不可执行

#cp   /etc/fstab      /var/tmp
#chown  root.root     /var/tmp/fstab
#chmod   a-x          /var/tmp/fstab

• 用户 natasha 能够对文件/var/tmp/fstab具有读写权限    (可以从用户角度  或者从文件)

#useradd natasha

#setfacl -m u:natasha:rw   /var/tmp/fstab

• 用户 harry 对文件/var/tmp/fstab 既不能读也不能写

#useradd harry
#setfacl -m u:harry:---  /var/tmp/fstab

                                    -

• 其他用户(当前和将来的)能对文件/var/tmp/fstab 进行读操作

#chmod  o=r    /var/tmp/fstab

            (若用加减,则要先查看该文件对应用户的权限)

3.创建一个共享目录/home/managers 特性如下

• /home/managers 目录的所有权是 sysmgrs

• sysmgrs 组成员对目录有读写和执行的权限。除此之外的其他用户没有任何权限(root 用户除外)(权限对root没有限制)

• 在/home/managers 目录中创建的文件,其组所有权会自动设置为属于 sysmgrs组

#mkdir      【-pv】      /home/managers  (一级目录)

#chown       sysmgrs:sysmgrs        /home/managers   (所有权:最好理解为所属用户和所属组)

#chmod  g=rwx    /home/managers

若所有权只改所属用户

#chown       sysmgrs     /home/managers

此时  对所属组改权限  要用到扩展权限

#setfacl    -m    g:sysmgrs:rwx    /home/managers

#chmod   o=-     /home/managers

或者  #chmod   770    /home/managers

#chmod    g+s        /home/managers

新手小白,请多多指教~~~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值