用户、组
多用户多任务
linux管理模式私有模式:每一个用户对应一个和用户同名的组
公有模式
用户类型(65535个用户)
管理员:只有一个 root 0
普通用户:redhat 1-60000
系统用户: 系统安装自动创建 1-200 201-999
一般用户:手动添加 1000-60000
useradd(用户添加命令)
useradd用户名 /usr/sbin/useradd/
cat/etc/passwd用户配置信息
xiao2:x:1001:1001::/home/xiao2:/bin/bash 用户名:密码占位符:UID(唯一,用来标记用户):GID:注释,描述字段:用户家目录:shell字段/bin/bash /sbin/nologin usermod 【optin...】 【选项参数】 用户名 修改 -l 修改用户登录名称 #usermod -l newxiao1 xiao1 把xiaao1改为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 1892823231 newxiao1 -d 家目录 -s 更改shell字段(可交互式shell,非交互式shell) #usermod -s /sbin/nologin newxiao1 eg:(多次修改) usermod -l newname -u 1234 -g 1000 -c dashazi name
例 [root@www ~] xiao1 (只能是管理员,一次只能添加一个用户)(用户的家目录在你的时候自动生成)
grep ’^用户名‘ /etc/passwd [root@www ~]# grep '^xiao1' /etc/passwd xiao1:x:1001:1001::/home/xiao1:/bin/bash (快速查看创建的用户是否存在) 或[root@www ~]# id xiao1 uid=1001(xiao1) gid=1001(xiao1) groups=1001(xiao1) (id 用户名) 删除用户 userdel -r 用户名 (删除用户以及创建用户相关的所有文件) [root@www ~]# userdel -r xiao1
(id 用户名)
passwd 用户名 (设置用户密码)
-d 删除用户名 -l 锁定用户密码 -u 解锁用户密码
[root@www ~]# cat user | chpasswd
echo redhat : 12345 |chpasswd
更改多个用户密码
passwd -d 用户名 (删除用户密码)
(-d 删除用户密码)
管理员 :可以指定用户名更改系统用户的密码不需要输入之前的密码,不严格匹配密码等级设置
普通用户 :不可以指定用户名,只能跟改自己的密码,需要输入之前的密码,严格匹配密码等级设置
echo mima | paawd --stdin 用户名
组类别
管理组:root
普通组
系统组
一般组
主组,,基本组,私有组,用户的默认组
附加组,额外组 ( 用户默认组之外的组)
groupadd 组名
cat /etc/group 组配置文件
grep ’^组名‘ /etc/group
xiao2:x:1001: 组名:组密码占位符:GID:组中用户名 groupmod【optin...】【选项参数】 组名 -n 修改组名 #groupmod -n grp1(改后组名) g1(改前) -g 修改组id #groupmod -g 2222 g1
2.4删除组
groupdel 组名
2.5设置组密码
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
破解密码
关机-->开机-->鼠标进入启动界面-->第一个引导菜单-->e --->找到inuxi这一行在行尾添加rd.break--->ctrl -x---->mount -o remount,rw /sysroot --->chroot /sysroot--> passwd root -->设置密码--确认密码--->
touch /.autorelabel--->exitr--->exit(等待)
/etc/shadow 用户密码文件
用户名:加密密码:最后—修改密码的天数(从1970年1月1号开始):密码生效最短时间:最长时间:警告时间:延长时间:精确过期时间(1970):保留字段
/etc/gshadow 组密码信息
组名:组密码:组长:组成成员
/etc/defoult/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系统中的权限是在文件中标识
/。
3.2权限两种描述方式
字符形式:r w x
数值形式:r=4 w=2 x=1
3.3目录文件的最高权限值 777
权限过滤值(权限掩码)umask 022
755
文本文件的最高权限值666
权限过滤值(权限掩码)umask 022
644
6 6 6
rw-rw-rw-
0 3 3
--- -wx-wx
6 4 4
rw-r--r--
3.4 权限字符含义
文件文件 : r read 读取文件内容(cat tac more less tail grep)
w write 编辑文件内容(vim > cat <<EOF >file)
x excute 解释运行文件的内容(命令文件)
目录文件 r is
w
x cd (r-x)(rwx)
3.5linux中文件权限匹配方式
可执行文件进程的所属身份是发起者身份,
判断进程发起者身份是否是目标文件的所属用户,是,匹配目标文件所属用户的权限;
不是,判断进程发起者身份是否是目标文件的所属用户,是,匹配目标文件组权限,
不是则直接匹配目标文件其他用户的权限;
3.6更改文件的权限
chmod 权限 文件名
chmod o+权限 文件名 (组成员外其他用户)
chmod g+权限 文件名 (组成员)
[root@www ~]# chmod +x d1 [root@www ~]# ll d1 -rwxr-xr-x. 1 root root 0 Dec 3 15:03 d1
chmod ugo=rwx FILE1 // u user a group o other a all chmod a=rwx FILE1 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 更改文件所属用户 [root@www ~]# ll d1 -rwxr-xr-x. 1 root root 0 Dec 3 15:03 d1 [root@www ~]# chown baiyiwei d1 [root@www ~]# ll d1 -rwxr-xr-x. 1 baiyiwei root 0 Dec 3 15:03 chown 用户名 FILE ... chown 用户名:组名 FILE... 例[root@www ~]# chown zhangsan:zhangsan /var/tmp/fstab(/var/tmp/fstab的拥有者是zhangsan所属组是zhangsan) chgrp 更改文件所属组 chgrp 组名 FILE...
[root@www ~]# chmod o+x /root
[root@www ~]# chmod o+w /root
[root@www ~]# chmod o+r /root
如果没有执行权限(x)可能无法显示文件具体信息
有执行权限(x)
[root@www ~]# chmod o+x /root
[root@www ~]# chmod o+w /root
[root@www ~]# chmod o+r /root
[root@www ~]# su baiyiwei
[baiyiwei@www root]$ ll /root
total 16
-rw-r--r--. 1 root root 0 Nov 21 21:08 aaaa
-rw-------. 1 root root 1276 Nov 19 12:30 anaconda-ks.cfg
-rwxr-xr-x. 1 root root 0 Dec 3 15:03 d1
drwxr-xr-x. 2 root root 6 Nov 23 20:06 dd{1...3}
drwxr-xr-x. 2 root root 6 Nov 19 17:06 Desktop
drwxr-xr-x. 2 root root 6 Nov 19 17:06 Documents
drwxr-xr-x. 2 root root 6 Nov 19 17:06 Downloads
-rw-r--r--. 1 root root 0 Nov 23 18:48 file
-rw-r--r--. 1 root root 1613 Nov 19 14:11 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Nov 23 18:35 mak.lnk
drwxr-xr-x. 2 root root 6 Nov 19 17:06 Music
drwxr-xr-x. 3 root root 17 Nov 23 20:26 newd1
drwxr-xr-x. 2 root root 6 Nov 19 17:06 Pictures
drwxr-xr-x. 2 root root 4096 Nov 24 00:39 pub
drwxr-xr-x. 2 root root 6 Nov 19 17:06 Public
drwxr-xr-x. 2 root root 6 Nov 23 22:37 susroot}
drwxr-xr-x. 2 root root 6 Nov 19 17:06 Templates
drwxr-xr-x. 3 root root 4096 Nov 24 00:39 test
drwxr-xr-x. 2 root root 6 Nov 19 17:06 Videos
drwxr-xr-x. 2 root root 6 Nov 21 22:05 wsx
[baiyiwei@www root]$
无执行权限[root@www ~]# chmod o-x /root
[root@www ~]# su baiyiwei
[baiyiwei@www root]$ ll /root
ls: cannot access '/root/anaconda-ks.cfg': Permission denied
ls: cannot access '/root/initial-setup-ks.cfg': Permission denied
ls: cannot access '/root/Desktop': Permission denied
ls: cannot access '/root/Downloads': Permission denied
ls: cannot access '/root/Templates': Permission denied
ls: cannot access '/root/Public': Permission denied
ls: cannot access '/root/Documents': Permission denied
ls: cannot access '/root/Music': Permission denied
ls: cannot access '/root/Pictures': Permission denied
ls: cannot access '/root/Videos': Permission denied
ls: cannot access '/root/aaaa': Permission denied
ls: cannot access '/root/wsx': Permission denied
ls: cannot access '/root/mak.lnk': Permission denied
ls: cannot access '/root/file': Permission denied
ls: cannot access '/root/dd{1...3}': Permission denied
ls: cannot access '/root/newd1': Permission denied
ls: cannot access '/root/susroot}': Permission denied
ls: cannot access '/root/test': Permission denied
ls: cannot access '/root/pub': Permission denied
ls: cannot access '/root/d1': Permission denied
total 0
-????????? ? ? ? ? ? aaaa
-????????? ? ? ? ? ? anaconda-ks.cfg
-????????? ? ? ? ? ? d1
d????????? ? ? ? ? ? dd{1...3}
d????????? ? ? ? ? ? Desktop
d????????? ? ? ? ? ? Documents
d????????? ? ? ? ? ? Downloads
-????????? ? ? ? ? ? file
-????????? ? ? ? ? ? initial-setup-ks.cfg
d????????? ? ? ? ? ? mak.lnk
d????????? ? ? ? ? ? Music
d????????? ? ? ? ? ? newd1
d????????? ? ? ? ? ? Pictures
d????????? ? ? ? ? ? pub
d????????? ? ? ? ? ? Public
d????????? ? ? ? ? ? susroot}
d????????? ? ? ? ? ? Templates
d????????? ? ? ? ? ? test
d????????? ? ? ? ? ? Videos
d????????? ? ? ? ? ? wsx
[baiyiwei@www root]$
拷贝文件/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 #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 ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 33544 Dec 14 2019 /usr/bin/passwd [baiyiwei@www root]$ passwd //passwd进程的用户身份是root(是执行文件自身的身份) 修改当前用户的密码,更改的是/etc/shadow [root@www ~]# ll /etc/shadow ----------. 1 root root 1727 Dec 3 16:12 /etc/shadow 为什么普通用户可以修改/etc/shadow的密码信息 原因是passwd进程的身份是root,作为root匹配目标文件可以忽略读写权限
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
getfacl 文件名
[root@www ~]# getfacl d4 # file: d4 文件名 # owner: root 所属用户名 # group: root所属组名 # flags: s-- user::rwx group::r-- other::r--
设置扩展权限列表:setfacl -m u:用户名:权限 FILENAME
setfacl -m g:组名:权限 FILENAME
删除扩展权限列表:setfacl -x u:用户名: FILENAME
清空扩展列表 : setfacl -b FILENAME