在企业中我们通常使用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
在linux系统中,chown
是 Linux/Unix 系统中用于更改文件或目录的所有者和所属组的命令。
如果想要知道我对某个文件或目录有什么权限,则使用chmod命令
查看权限
[root@db01 ~]# ll 2.txt
-rw-r--r--. 1 root root 0 Jul 6 05:26 2.txt
-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进行加减权限即可
[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,对其进行加减或者等号赋值,语法很简单
[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
#数字方式比字母方式更直观
文件权限控制文件的可读 可写 可执行!
可以查看文件必须有:r 的权限
可以读写文件必有有: rw 的权限
可以执行文件必须有: rx的权限
普通文件最高权限: 666
在企业中所有普通文件权限最高必须为: 644
r 读取(Read):允许列出目录下的文件和子目录(如 ls 命令)。
w 写入(Write):允许在目录中创建、删除、重命名文件或子目录(需配合 x 权限)。
x 执行(Execute):允许进入目录(cd)或访问目录内的文件元数据(如 stat)。
总结:
1.仅查看文件 → 目录至少 r-x。
2.修改目录内容 (如删除,创建,移动操作)→ 目录必须 rwx(尤其是 x 不可或缺)。
文件默认权限为-rw-r--r--(644)
目录默认权限为drwx-r-xr-x(755)
普通文件最高权限: 666
普通目录最高权限: 777
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值
[root@db01 ~]# touch test.txt
[root@db01 ~]# lsattr 1.txt
---------------- 1.txt
参数有两个:
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
1.suid 给文件或命令添加s权限,则拥有对应主人的权限
2.2.粘滞位 控制自己的文件只能自己管理 /tmp目录就是粘滞位权限 1777
在系统创建一个目录: 可以让任何用户在目录中创建文件
这是我的个人学习笔记,主要用于记录自己对知识点的理解和梳理。由于目前仍在学习探索阶段,内容中难免存在理解偏差或表述疏漏,恳请各位大佬不吝赐教,多提宝贵意见~ 若有不同看法,欢迎理性交流探讨,感谢包容与指正!