17linux批量创建用户与权限管理

一.如何批量创建用户

    在企业中我们通常使用shell脚本批量创建用户,这里为了练习,我选择使用sed和awk来拼接命令

案例一:批量创建用户
[root@db01 ~]# echo useradd_laoli{1..3}
useradd_laoli1 useradd_laoli2 useradd_laoli3
#这是echo命令

[root@db01 ~]# echo useradd_laoli{1..3}|xargs -n1
useradd_laoli1
useradd_laoli2
useradd_laoli3
#使用xargs命令一行行处理

[root@db01 ~]# echo useradd_laoli{1..3}|xargs -n1|sed -r 's#_# #g'
useradd laoli1
useradd laoli2
useradd laoli3
#使用sed命令把_替换成空格

[root@db01 ~]# echo useradd_laoli{1..3}|xargs -n1|sed -r 's#_# #g'|bash
#交给bash运行

[root@db01 ~]# id laoli1
uid=1005(laoli1) gid=1005(laoli1) groups=1005(laoli1)
[root@db01 ~]# id laoli2
uid=1006(laoli2) gid=1006(laoli2) groups=1006(laoli2)
[root@db01 ~]# id laoli3
uid=1007(laoli3) gid=1008(laoli3) groups=1008(laoli3)
#id查看,创建成功

案例二:批量创建用户并给他随机密码
[root@db01 ~]# echo laoli{1..3}|xargs -n1|sed -r 's#(.*)#useradd \1;p=`mkpasswd`;echo $p|passwd --stdin \1#g'
useradd laoli1;p=`mkpasswd`;echo $p|passwd --stdin laoli1
useradd laoli2;p=`mkpasswd`;echo $p|passwd --stdin laoli2
useradd laoli3;p=`mkpasswd`;echo $p|passwd --stdin laoli3

案例三:批量创建用户并给他随机密码,然后账号密码保存到密码本里
[root@db01 ~]# echo laoli{1..3}|xargs -n1|sed -r 's#(.*)#useradd \1;p=`mkpasswd`;echo $p|passwd --stdin \1;echo \1 "\t" $p >> passwd.txt#g'|bash

#查看密码本
[root@db01 ~]# cat passwd.txt 
laoli1 	 y9-N2msjF
laoli2 	 eFBl18|uq
laoli3 	 nv|23BWxy




二.chmod权限管理

在linux系统中,chown是 Linux/Unix 系统中用于更改文件或目录的所有者和所属组的命令。

如果想要知道我对某个文件或目录有什么权限,则使用chmod命令

查看权限
[root@db01 ~]# ll 2.txt 
-rw-r--r--. 1 root root 0 Jul  6 05:26 2.txt

rwx权限含义

-rw-r--r--   root    root   这里可以查看权限

-rw-r-r--可以分为四组

第一组 -  代表文件类型,普通文件为-,目录为d,软连接为l

第二组rw-  代表属主的权限

第三组r--  代表属组的权限

第四组r--   代表其他用户的权限

r         4        可读

w        2        可写

x         1        可执行,脚本文件才需要x权限

也可以用数字来表示文件权限,例如此文件-rw-r--r--,权限用数字表示就是644(几位权限相加)

修改文件权限

chmod语法:

         u代表属主,g代表属组,o代表其他用户,使用chmod进行加减权限即可

1.使用rwx更改文件权限

                       

[root@db01 ~]# chmod u+x 2.txt 
[root@db01 ~]# ll
[root@db01 ~]# ll 2.txt 
-rwxr--r--. 1 root root 0 Jul  7 06:11 2.txt
#给属主添加可执行

[root@db01 ~]# chmod g+w 2.txt 
[root@db01 ~]# chmod o+rwx 2.txt 
[root@db01 ~]# ll
-rwxrw-rwx. 1 root root   0 Jul  7 06:11 2.txt
#给g和o改变权限

[root@db01 ~]# chmod u-wx,g+wx,o-x 2.txt 
[root@db01 ~]# ll
-r--rwxrw-. 1 root root   0 Jul  7 06:11 2.txt
#如果想改变多个,需要用逗号分隔

也可以使用等号=进行权限更改,等号为重新复制,先清空后附加权限

[root@db01 ~]# chmod u=rwx 2.txt 
[root@db01 ~]# chmod u=rwx,g=wx,o=rx 2.txt 
[root@db01 ~]# ll 2.txt 
-rwx-wxr-x. 1 root root 0 Jul  7 20:16 2.txt
#等号改变权限

可以用a代表所有,为所有位更改权限
[root@db01 ~]# touch 2.txt
[root@db01 ~]# ll 2.txt 
-rw-r--r--. 1 root root 0 Jul  7 20:18 2.txt
[root@db01 ~]# chmod a-r 2.txt 
[root@db01 ~]# ll 2.txt 
--w-------. 1 root root 0 Jul  7 20:18 2.txt
#可以看到所有位的r权限没了

[root@db01 ~]# chmod a=rwx 2.txt 
[root@db01 ~]# ll 2.txt 
-rwxrwxrwx. 1 root root 0 Jul  7 20:18 2.txt
#使用等号改变所有位的权限

总结:想更改权限就使用对应的ugo,对其进行加减或者等号赋值,语法很简单

2.使用数字方式改变文件权限
[root@db01 ~]# touch 2.txt
[root@db01 ~]# ll 2.txt 
-rw-r--r--. 1 root root 0 Jul  7 20:23 2.txt
[root@db01 ~]# chmod 764 2.txt 
[root@db01 ~]# ll 2.txt 
-rwxrw-r--. 1 root root 0 Jul  7 20:23 2.txt
[root@db01 ~]# chmod 431 2.txt 
[root@db01 ~]# ll 2.txt 
-r---wx--x. 1 root root 0 Jul  7 20:23 2.txt
[root@db01 ~]# chmod 777 2.txt 
[root@db01 ~]# ll 2.txt 
-rwxrwxrwx. 1 root root 0 Jul  7 20:23 2.txt

#数字方式比字母方式更直观

对于文件的rwx含义

文件权限控制文件的可读 可写 可执行!

可以查看文件必须有:r 的权限

可以读写文件必有有:  rw 的权限

可以执行文件必须有:  rx的权限

普通文件最高权限: 666

在企业中所有普通文件权限最高必须为: 644

对于目录的rwx含义

r 读取(Read):允许列出目录下的文件和子目录(如 ls 命令)。

w 写入(Write):允许在目录中创建、删除、重命名文件或子目录(需配合 x 权限)。

x 执行(Execute):允许进入目录(cd)或访问目录内的文件元数据(如 stat)。

总结:

1.仅查看文件 → 目录至少 r-x。

2.修改目录内容 (如删除,创建,移动操作)→ 目录必须 rwx(尤其是 x 不可或缺)。

linux系统默认权限

文件默认权限为-rw-r--r--(644)

目录默认权限为drwx-r-xr-x(755)

普通文件最高权限: 666

普通目录最高权限: 777

umask值

linux系统创建文件和目录的默认权限,就是用最高权限减去umask值

                文件/目录默认权限=最高权限-umask

[root@db01 ~]# umask
0022
#查看系统umask值

查看系统mask值位0022,第一位为特殊位,我们后面再说,我们只看后三位,文件默认权限为:

                            666-022=644

临时修改umask值
[root@db01 ~]# umask 044
[root@db01 ~]# umask
0044

如果umask值里有奇数位,则文件相减后奇数位要加1

设置umask为032
[root@db01 ~]# umask 032
[root@db01 ~]# umask
0032

创建文件,权限为644(666-032=634,奇数位加1=644)
[root@db01 ~]# touch test.txt
[root@db01 ~]# ll test.txt 
-rw-r--r--. 1 root root 0 Jul  7 20:49 test.txt

这个只需要了解,在企业中我们绝大多数情况下不会修改umask值

隐藏权限

1查看隐藏权限命令lsttr
[root@db01 ~]# touch test.txt
[root@db01 ~]# lsattr 1.txt 
---------------- 1.txt
2.设置隐藏权限chattr

参数有两个:

i 无敌的,谁也无法对1.txt对任何的操作

a 无敌的,只可以追加内容进去 >>

chattr语法和chmod类似,是加减a和i来改变权限,语法应该是一看就明白

[root@db01 ~]# lsattr 1.txt 
---------------- 1.txt
[root@db01 ~]# chattr +i test.txt 
[root@db01 ~]# lsattr test.txt 
----i----------- test.txt
[root@db01 ~]# chattr +a test.txt 
[root@db01 ~]# lsattr test.txt 
----ia---------- test.txt
[root@db01 ~]# chattr -ai test.txt 
[root@db01 ~]# lsattr test.txt 
---------------- test.txt
3.特殊权限位: 了解

1.suid 给文件或命令添加s权限,则拥有对应主人的权限

2.2.粘滞位 控制自己的文件只能自己管理 /tmp目录就是粘滞位权限 1777

在系统创建一个目录: 可以让任何用户在目录中创建文件

这是我的个人学习笔记,主要用于记录自己对知识点的理解和梳理。由于目前仍在学习探索阶段,内容中难免存在理解偏差或表述疏漏,恳请各位大佬不吝赐教,多提宝贵意见~ 若有不同看法,欢迎理性交流探讨,感谢包容与指正!

你可能感兴趣的:(Linux初级,chrome,前端)