用户,组的查看应用。权限管理

day07

多用户多任务的管理系统

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

​ 公有模式

1.用户类别(65535个用户)

管理员: root 0

普通用户:redhat 1-60000

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

​ 一般用户: 手动添加 1000-60000

1.1创建用户

useradd 用户名

/usr/sbin/useradd
-u   更改用户UID        
-g   更改用户的基本组(主组)     
-G   更改用户的附加组   
-c   注释信息          
-d   家目录 
-s   更改shell字段(可交互式shell、非交互式shell)                  

1.2查看用户

grep ‘^用户名’ /etc/passwd

id 用户名

cat /etc/passwd 用户配置文件

xiao1:x:1001:1001::/home/xiao1:/bin/bash
用户名:密码的占位符:UID:GID:注释、描述字段:用户的家目录:shell字段/bin/bash   /sbin/nologin

1.3修改用户

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

-l   修改用户登录名称     #usermod -l newxiao1  xiao1   把xiao1改名为newxiao1
-u   更改用户UID         #usermod  -u 1111 newxiao1   #usermod new1xiao1  -u 1111
-g   更改用户的基本组(主组)     #usermod -g redhat  newxiao1
-G   更改用户的附加组    #groupadd  g1      #usermod  -G g1  newxiao1
-c   注释信息           #usermod -c 18123827227   newxiao1
-d   家目录 
-s   更改shell字段(可交互式shell、非交互式shell)
                       #usermod -s /sbin/nologin  newxiao1
eg:
usermod   -l  newname   -u 1234 -g 1000  -c dashazi  name

1.4删除用户

userdel -r 用户 删除用户以及创建用户相关的所有文件

1.5用户设置/修改密码

passwd [用户名]

-d   删除用户密码
-l   锁定用户密码
-u  解锁用户密码
管理员:可以指定用户名更改系统任意用户的密码不需要输入之前的密码,不严格匹配密码等级设置
普通用户:不可以指定用户名,只能更改自己的密码,需要输入之前的密码,严格匹配密码等级设置
echo mima | passwd --stdin 用户名

chpasswd

[root@www ~]# cat users
redhat:1234
root:1234
xiao1:1234
[root@www ~]# cat users | chpasswd
[root@www ~]# echo redhat:123456 | chpasswd

1.6破解密码:

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

2.组类别

管理组: root 0

普通组: 1-60000

​ 系统组

​ 一般组

主组,基本组、私有组,用户的默认组

附加组,额外组 用户组默认组之外的组

2.1组添加

groupadd 组名

2.2查看组

grep ‘^组名’ /etc/group

cat /etc/group 组配置文件

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

2.3修改组信息

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

-n  修改组名     #groupmod -n grp1   g1
-g  修改组id     #groupmod -g 2222   g1

2.4删除组

groupdel 组名

2.5设置,修改组密码

gpasswd 组名

gpasswd 组名  设置组密码
-r   删除组密码
-a   把指定用户加入组     #usermod -G g1 redhat ==  #gpasswd -a redhat  g1
-M   指定多个用户加入组(指定新的组成员列表)   #gpasswd -M  user1,user2,user3   g1
-d   将指定用户从组中移除   #gpasswd -d user1 g1
-A   指定组长(可以在组中添加成员或删除一个组用户)   #gpasswd  -A   user2   g1
-R   锁定组(用户知道组密码也不能验证登录)                             

2.6 登录新组

newgrp 组名

练习题

1.新建组,shengchan,caiwu,jishu

#groupadd shengchan
#groupadd caiwu
#groupadd jishu

2.新建用户要求如下:

​ * wjx 是shengchan组的附加用户

​ * liuy 是caiwu组的附加用户

​ * zxx 是jishu组的附加用户

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

#useradd wjx
#usermod -G shengchan  wjx   == #useradd -G shengchan  wjx
#useradd -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 file
wjx:redhat
liuy:redhat
zxx:redhat
admin:redhat
#cat file | chpasswd 

3.实验

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

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

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

添加组
#groupadd std1 
#groupmod -g 1111 std1

#groupadd -g 2222 std2
创建用户
#useradd user1
#useradd -u 1088 user2 
把用户加入组
#usermod -G std1  user1
#gpasswd -a user2 std1
#gpasswd -A user2  std1

#useradd da1
#useradd -u 1066 da2
#gpasswd -M  da1,da2  std2
#gpasswd -A d2 std2

#usermod  -c laoda  user2
组密码设置
#gpasswd  std1
#gpasswd std2
#gpasswd -R std1
#gpasswd -R  std2

不允许用户远程登录

usermod -s /sbin/nologin u1

passwd -d u1

passwd -l u1

扩展

/etc/shadow 用户密码文件

用户名:加密密码:最后一修改密码的天数(1970):密码生效最短时间:最长时间:警告时间:延长时间:精确过期时间(1970):保留字段

/etc/gshadow 组密码信息

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

/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加密密码

键=值

键 值

3.权限

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XTmbEcS3-1670143472113)(C:\Users\郝其威\AppData\Local\Temp\WeChat Files\5946f42f1ea6d314aa60da013f28c4d.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cJkYawDe-1670143472114)(C:\Users\郝其威\AppData\Local\Temp\WeChat Files\9534058cb9aba0f5c5ded1e0c14e5ea.png)]

3.2 权限两种描述方式

字符形式: r read w write x excute

数值形式: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 文件默认权限值

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

权限过滤值(权限掩码)umask 022

​ 755

​ 文本文件的最高权限值666

权限过滤值(权限掩码)umask 022

​ 644

3.4 权限字符含义

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

​ w wirte 编辑文件内容(vim > cat << EOF > file)

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

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

​ w 创建文件 touch mkdir cp mv >

​ x 执行 cd (r-x) (rwx)

3.5linux中文件权限匹配方式

可执行文件(命令文件)进程的所属身份是用发起者身份

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

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

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

3.6 更改文件的权限

chmod 权限 文件名

chmod ugo=rwx   FILE1     //u  user   g group   o  other    a  all
chmod a=rwx  FILE1  == chomod rwx file
chmod -x  FILE1
chmod u=rwx,g+w,o-r  file 

chmod   777  DIRNAME  
chmod    7   DIRNAME  == chmod 007 DIRNAME

chmod u=7 FILENAME  --错误
注:普通用户修改权限,用户只能更改属于当前用户文件的权限。

chown    更改文件所属用户
chown 用户名   FILE... 
chown 用户名:组名   FILE... 

chgrp    更改文件所属组
chgrp  组名   FILE...
文本文件最高权限值		666
权限掩码(权限过滤值022)	#umask
文本文件默认权限值		644
目录文件最高权限值		777
权限掩码(权限过滤值022)
目录文件默认权限值		755

拷贝文件/etc/fstab 到/var/tmp/fstab

配置文件/var/tmp/fstab 的权限
• 文件/var/tmp/fstab 的拥有者是 zhangsan文件/var/tmp/fstab 属于 zhangsan 组
• 文件/var/tmp/fstab 对任何用户不可执行
• 其他用户(当前和将来的)能对文件/var/tmp/fstab 进行读操作

#cp  /etc/fstab   /var/tmp/fstab
#useradd zhangsan
#chown zhangsan:zhangsan   /var/tmp/fstab
#chmod a-x /var/tmp/fstab
#chmod o+r /var/tmp/fstab

3.7特殊权限

umask 0022

chmod 4644 file

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

仅对可执行文件(命令文件)设置有意义:可执行文件进程的所属身份是执行文件自身的身份
[root@www pub]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 33544 Dec 14  2019 /usr/bin/passwd
[redhat@www pub]$ passwd   //passwd进程的用户身份是root(是执行文件自身的身份)
                           //passwd 修改当前用户的密码,更改的是/etc/shadow 
[root@www pub]# ll /etc/shadow
----------. 1 root root 1744 Dec  3 11:30 /etc/shadow

为什么普通用户可以修改/etc/shadow的密码信息?
原因是passwd进程的身份是root,作为root匹配目标文件可以忽略读写权限
设置情况:通过任意用户执行命令,通过root身份来执行就可以设置特殊权限u+s

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

对可执行文件(命令文件)设置有意义: 可执行文件进程的所属组身份是执行文件自身的所属组身份 (应用不是很多)
[root@www pub]# ll /usr/bin/touch 
-rwxr-xr-x. 1 root root 96144 Jul 10  2021 /usr/bin/touch
[root@www pub]# chmod g+s /usr/bin/touch
[redhat@www pub]$ touch red2
[redhat@www pub]$ ll
-rw-rw-r--. 1 redhat root   0 Dec  3 16:13 red2
对目录文件设置有意义:在目录下任意用户创建的文件,文件的所属组都是当前目录的所属组
[root@www ~]# mkdir /test
[root@www ~]# chmod 777 /test
[redhat@www ~]$ cd /test
[redhat@www test]$ touch red1
[redhat@www test]$ ll
total 0
-rw-rw-r--. 1 redhat redhat 0 Dec  3 16:19 red1
[root@www ~]# chmod g+s /test                ----对/test 设置sgid
[root@www ~]# ll -d /test
drwxrwsrwx. 2 root root 18 Dec  3 16:19 /test
[redhat@www test]$ touch red2
[redhat@www test]$ ll
total 0
-rw-rw-r--. 1 redhat redhat 0 Dec  3 16:19 red1
-rw-rw-r--. 1 redhat root   0 Dec  3 16:20 red2  ---创建文件的所属组取决于/test目录的所属组

o+t=1 sticky 冒险位

仅对目录文件设置有意义:
o+t在该目录下,用户只能删除属于自己的文件不能删除别人的文件。
注:(目录文件对当前用户如果没有写权限,不能删除文件;对目录文件只有有写权限,用户可以删除任意用户创建的文件)

3.8扩展权限

./+ .表示没有扩展权限,+有扩展权限

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

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

​ setfacl -m g:组名:权限 FILENAME

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

清空扩展权限: setfacl -b FILENAME

练习题:

1.创建下列用户,组,和组的成员关系(servera)
• 创建组sysmgrs
• 一个名为 natasha 的用户,其属于 sysmgrs,这个组是该用户的从属组
• 一个名为 harry 的用户,属于 sysmgrs,这个组是该用户的从属组
• 一个名为 sarah 的用户,其在系统汇总没有可以交互的 shell
• 用户 natsha,harry,sarah 的秘密吗都要设定为:modteed
2.拷贝文件/etc/fstab 到/var/tmp/fstab 配置文件/var/tmp/fstab 的权限
• 文件/var/tmp/fstab 的拥有者是 root 文件/var/tmp/fstab 属于 root 组
• 文件/var/tmp/fstab 对任何用户不可执行
• 用户 natasha 能够对文件/var/tmp/fstab/具有读写权限
• 用户 harry 对文件/var/tmp/fstab 既不能读也不能写
• 其他用户(当前和将来的)能对文件/var/tmp/fstab 进行读操作
3.创建一个共享目录/home/managers 特性如下

• /home/managers 目录的所有权是 sysmgrs
• sysmgrs 组成员对目录有读写和执行的权限。除此之外的其他用户没有任何权限(root 用户除外)
• 在/home/managers 目录中创建的文件,其组所有权会自动设置为属于 sysmgrs组

1:
[root@localhost ~]# useradd natasha
[root@localhost ~]# useradd harry
[root@localhost ~]# useradd sarah
[root@localhost ~]# echo harry: modteed |chpasswd 
[root@localhost ~]# echo sarah: modteed |chpasswd 
[root@localhost ~]# echo natasha: modteed |chpasswd 
[root@localhost ~]# groupadd sysmgrs
[root@localhost ~]# gpasswd -M natasha,harry sysmgrs
[root@localhost ~]# usermod -s /sbin/nologin sarah
2:
[root@localhost ~]# chown root:root /var/tmp/fstab
[root@localhost ~]# chmod a-x /var/tmp/fstab
[root@localhost ~]# chmod u+rw /var/tmp/fstab
[root@localhost ~]# setfacl -m u:natasha:rw /var/tmp/fstab
[root@localhost ~]# setfacl -m u:harry:0 /var/tmp/fstab
[root@localhost ~]# chmod o+r /var/tmp/fstab
3:
[root@localhost ~]# mkdir /home/managers
[root@localhost ~]# chgrp sysmgrs /home/managers
[root@localhost ~]# chmod u-rwx /home/managers
[root@localhost ~]# setfacl -m g:sysmgrs:rw /home/managers
[root@localhost ~]# chmod g+s /home/managers

r/tmp/fstab
[root@localhost ~]# chmod a-x /var/tmp/fstab
[root@localhost ~]# chmod u+rw /var/tmp/fstab
[root@localhost ~]# setfacl -m u:natasha:rw /var/tmp/fstab
[root@localhost ~]# setfacl -m u:harry:0 /var/tmp/fstab
[root@localhost ~]# chmod o+r /var/tmp/fstab
3:
[root@localhost ~]# mkdir /home/managers
[root@localhost ~]# chgrp sysmgrs /home/managers
[root@localhost ~]# chmod u-rwx /home/managers
[root@localhost ~]# setfacl -m g:sysmgrs:rw /home/managers
[root@localhost ~]# chmod g+s /home/managers


你可能感兴趣的:(linux,服务器,运维)