前天看了管道符
管道符:cmd1 输出
cmd2 输入
cmd1 | cmd2
如果想将错误信息传给cmd2
cmd1 |& cmd2 或 cmd1 2>&1| cmd2
加上 >
2>
<
&>
就是重定向
<< key
与用户名和组相关的
/etc/passwd
/etc/shadow 放用户口令的
/etc/group
/etc/gshadow
以上可以用cat查看也可以用
getent passwd|shadow|group|gshadow
前提是必须是root尤其是 shadow ,gshadow
上一节课讲到用户账号和组账号可以同名
也就是 UID=GID ,一般用户创建账号时是默认创建一个和他同名的组作为主组,即uid和主组相同
在Linux中默认一个uid=0的号即root ,并且gid=0的也叫root的组
如果把liang号 UID设为0 就可以获得和root一样的权限
准确的说ID为0的就是管理员
我们把用户加到组里面就会继承组的权限
工作中 一般先建一个账号
useradd -s /sbin/nologin -r -d /data/mysql -m -u1234 mysql
-s shell类型 nologin给某个服务用的,一般都是系统账号 -d指定家目录,后面跟指定目录。 -r 一旦加上就不会建家目录,邮箱也不会生成,如果想建家目录加上-m 后面跟指定用户名 -u指定UID如果在多台服务器上建账号不指定UID 系统会随机分配,管理麻烦
usermem
userdel 带-r选项会把邮箱一起删除
今天
文件的权限
read r 读
write w 写
excute x 执行
读文件 要确保文件可读才行 如果是二进制文件读取后会把系统弄乱码 ,
解决办法exit logout 或CTRL+D 或敲命令reset(重置字符)
读写文件一般针对文本说的
执行列外 执行:当程序运行
改所有者 chown w f1 更改f1的所有者为w
查组的列表 getent group
改所有组 chgrp rpc f1 更改f1的所有组为rpc
建两个组 #groupadd g1
#groupadd g2
把w用户加到g1组里 有三种方法
#groupmems -a w -g g1
#usermod -aG g2 w 给wang建一个叫g2的附加组 如果没有a 将会把上一个附加组g1覆盖抹去
列如
[root@liang data 21:00:42]#id wang
uid=502(w) gid=504(wang) groups=504(wang)
[root@liang data 21:08:11]#groupmems -a wang -g g1
[root@liang data 21:16:11]#id wang
uid=502(w) gid=504(wang) groups=504(wang),501(g1)
[root@liang data 21:16:18]#usermod -aG g2 wang
[root@liang data 21:16:50]#id wang
uid=502(w) gid=504(w) groups=504(w),501(g1),502(g2)
普通账号无法改变UID
列如
[root@liang data 21:19:10]#su wang
[wang@liang data 21:19:25]$ll
total 16
-rw-r--r--. 1 w root 0 Apr 4 20:53 f1
drwx------. 2 root root 16384 Apr 2 19:54 lost+found
[w@liang data 21:19:30]$chown mage f1
chown: changing ownership of `f1': Operation not permitted
可以改变GID 前提是文件是所有者的,并且必须要在这个组里
例如
[w@liang data 21:20:08]$chgrp g1 f1
[w@liang data 21:24:17]$ll f1
-rw-r--r--. 1 wang g1 0 Apr 4 20:53 f1
继承的组权限是一样的
相对于普通用户 。
通过这 我们把将要访问f1文件的 人 分成 三类人
第一类 文件的所有者 权限最大
第二类 所加入的 所属于的组 权限相对小
第三类 other 权限最严
如何对三类人 授权
1 chmod change mode
方法 :mode 法
chmod who opt per file chmod跟上对谁操作who 做什么操作opt 针对他授予什么权限per 跟上文件file
who :u g o a(all)
opt : + - =
per :r w x X X特殊权限
chmod u+x,file
chmod u+x,g-w,o= file
例如
[w@liang data 21:54:06]$ll f1
-rw-r-----. 1 wang g1 0 Apr 4 20:53 f1
[w@liang data 21:54:35]$chmod u= f1
[w@liang data 21:54:44]$ll f1
----r-----. 1 w g1 0 Apr 4 20:53 f1
普通用户读写执行 有限制
删除文件不是对文件的权限 而是对目录的
方法2: 数字法
u g o
rwx rw- r--
111 110 100
421 42 4
7 6 4
chmod 421 f1
chmod -R 422 dir1 更改dir1下的所有文件的权限为422
umask 取消对应的权限 mask 掩码
设为多少
新建的文件的权限就是666-umask值剩下的数,但是 如果是奇数+1 偶数不变
新建的文件夹的权限是777-umask值剩下的数。
例如
[root@liang data ]#umask 251
[root@liang data ]#mkdir dir2
[root@liang data ]#ll
total 0
drwxrwxrwx. 2 liang liang 27 Apr 5 16:29 dir1
dr-x-w-rw-. 2 root root 6 Apr 5 17:05 dir2
[root@liang data ]#touch f1
[root@liang data ]#ll
total 0
drwxrwxrwx. 2 liang liang 27 Apr 5 16:29 dir1
dr-x-w-rw-. 2 root root 6 Apr 5 17:05 dir2
-r---w-rw-. 1 root root 0 Apr 5 17:05 f1
在Linux中要想存的住就要放在文件里
所以umask值可以存在 .bashrc 中
-p
#umask -p >>.bashrc
-s
#umask -s
u=rwx g=rw o=r
可以直接看到设置的 不用算 我们也可以这样
#umsak u=rwx g=r o=rw 这样设置也可以