useradd abc1;echo $RANDOM|md5sum|cut -c 1-10|tee /root/pass.txt|passwd --stdin abc001
约定:
0:超级用户
1-200:系统用户(系统创建出来的)
201-999:系统用户(自建)
1000+:普通用户
普通用户最小uid
UID_MIN 1000
最大uid
UID_MAX 60000
系统用户最下uid
SYS_UID_MIN 201
最大uid
SYS_UID_MAX 999
基本权限
1.权限管理
用来约束用户对系统的操作
权限:
r(read):读 4
w(write):写 2
x(exec):执行 1
-:没有权限 0
[root@oldboyedu ~]# ll
文件类型 权限 selinux 硬链接数 文件的属主 文件的属组
rwx------ . 1 odb edu 1.txt
d rwxrwxrwx . 2 root root 123.txt
d:目录
c:字符设备
b:块设备
l:软链接文件
p:管道文件
s:socket文件(套接字文件)
-:普通文件
rwx与ugo(用户,组,其他用户)的关系
u(user):用户
g(group):组
o(other):其它用户
用户权限相关命令:
chmod:修改权限位上的权限
+:增加权限
u+x
g+x
o+x
a+x
-:删除权限
u-x
g-x
o-x
a-x
=:赋值权限
u=rwx
g=x
o=w
数字授权 :
[root@oldboyedu ~]# chmod 712 456.txt
chown:修改属主,属组权限
[root@oldboyedu ~]# chown root.zls100 /opt/zls1.txt
[root@oldboyedu ~]# ll /opt/zls1.txt
-rw-rw--wx 1 root zls100 5 Jul 6 20:26 /opt/zls1.txt
[root@oldboyedu ~]# chown zls099:zls100 /opt/zls1.txt
[root@oldboyedu ~]# ll /opt/zls1.txt
-rw-rw--wx 1 zls099 zls100 5 Jul 6 20:26 /opt/zls1.txt
[root@oldboyedu ~]# chown zls098 /opt/zls1.txt
[root@oldboyedu ~]# chown zls098 /opt/zls1.txt
[root@oldboyedu ~]# ll /opt/zls1.txt
-rw-rw--wx 1 zls098 zls100 5 Jul 6 20:26 /opt/zls1.txt
[root@oldboyedu ~]# chown .zls097 /opt/zls1.txt
[root@oldboyedu ~]# ll /opt/zls1.txt
-rw-rw--wx 1 zls098 zls097 5 Jul 6 20:26 /opt/zls1.txt
[root@oldboyedu ~]# chown :zls096 /opt/zls1.txt
[root@oldboyedu ~]# ll /opt/zls1.txt
-rw-rw--wx 1 zls098 zls096 5 Jul 6 20:26 /opt/zls1.txt
stat -c %a filename
2.权限对文件的限制
文件只有w的权限时,可以写文件,但是用vim编辑时候看不见原来的内容,要强制保存 :wq! 会覆盖原来的内容
只是对文件的内容有限制
只能对文件内容:读取,写入,执行
文件只有r(read):只能读取内容,不能写入,不能执行
[zls100@oldboyedu ~]$ cat /opt/zls.txt
ifconfig
[zls100@oldboyedu ~]$ echo 123 > /opt/zls.txt
-bash: /opt/zls.txt: Permission denied
[zls100@oldboyedu ~]$ /opt/zls.txt
-bash: /opt/zls.txt: Permission denied
文件只有w(write):不能读取文件内容,可以写入,不可以执行
[zls100@oldboyedu ~]$ cat /opt/zls.txt
cat: /opt/zls.txt: Permission denied
[zls100@oldboyedu ~]$ echo date >> /opt/zls.txt
[zls100@oldboyedu ~]$ vim /opt/zls.txt
[zls100@oldboyedu ~]$ /opt/zls.txt
-bash: /opt/zls.txt: Permission denied
文件只有x(exec):不能读取文件内容,不能写入内容,也不能执行(普通用户不能执行,root可以)
[zls100@oldboyedu ~]$ cat /opt/zls.txt
cat: /opt/zls.txt: Permission denied
[zls100@oldboyedu ~]$ echo date >> /opt/zls.txt
-bash: /opt/zls.txt: Permission denied
[zls100@oldboyedu ~]$ /opt/zls.txt
bash: /opt/zls.txt: Permission denied
wx:可以看,可以写入,不能执行(普通用户:必须配合r)
[zls100@oldboyedu opt]$ cat /opt/zls1.txt
[zls100@oldboyedu opt]$ echo date > /opt/zls1.txt
[zls100@oldboyedu opt]$ cat /opt/zls1.txt
date
[zls100@oldboyedu opt]$ /opt/zls1.txt
权限组合:
如果普通用户想要执行:rx
如果普通用户想要编辑:rw
可读,可写,可执行:rwx
常用组合:
3.权限对目录的影响
如果目录只有r权限:只能看见目录下的文件,不能看到文件属性,不能进入目录,不能创建删除文件。
[zls100@oldboyedu ~]$ ll /opt/
ls: cannot access /opt/zls.txt: Permission denied
total 0
-????????? ? ? ? ? ? zls.txt
[zls100@oldboyedu ~]$ ls /opt/
ls: cannot access /opt/zls.txt: Permission denied
zls.txt
[zls100@oldboyedu ~]$ cd /opt/
-bash: cd: /opt/: Permission denied
[zls100@oldboyedu ~]$ touch /opt/zls1.txt
touch: cannot touch ‘/opt/zls1.txt’: Permission denied
[zls100@oldboyedu ~]$ rm -fr /opt/zls.txt
rm: cannot remove ‘/opt/zls.txt’: Permission denied
目录只有一个w权限:啥都不能干
[zls100@oldboyedu ~]$ ll /opt/
ls: cannot open directory /opt/: Permission denied
[zls100@oldboyedu ~]$ cd /opt/
-bash: cd: /opt/: Permission denied
[zls100@oldboyedu ~]$ rm -f /opt/zls.txt
rm: cannot remove ‘/opt/zls.txt’: Permission denied
[zls100@oldboyedu ~]$ touch /opt/zls1.txt
touch: cannot touch ‘/opt/zls1.txt’: Permission denied
目录只有一个x权限:只能进入目录,不能看,不能删除,不能创建
[zls100@oldboyedu ~]$ ll /opt/
ls: cannot open directory /opt/: Permission denied
[zls100@oldboyedu ~]$ rm -f /opt/zls.txt
rm: cannot remove ‘/opt/zls.txt’: Permission denied
[zls100@oldboyedu ~]$ touch /opt/zls1.txt
touch: cannot touch ‘/opt/zls1.txt’: Permission denied
[zls100@oldboyedu ~]$ cd /opt/
权限组合:
rx:可以查看,可以进入,但是不能删除 不能创建
[zls100@oldboyedu opt]$ ll /opt/
total 4
---------- 1 root root 9 Jul 6 19:47 zls.txt
[zls100@oldboyedu opt]$ cd /opt/
[zls100@oldboyedu opt]$ ll
total 4
---------- 1 root root 9 Jul 6 19:47 zls.txt
[zls100@oldboyedu opt]$ rm -f zls.txt
rm: cannot remove ‘zls.txt’: Permission denied
[zls100@oldboyedu opt]$ touch zls1.txt
touch: cannot touch ‘zls1.txt’: Permission denied
rw:和单独的r一样
[zls100@oldboyedu opt]$ ll /opt/
ls: cannot access /opt/zls.txt: Permission denied
total 0
-????????? ? ? ? ? ? zls.txt
[zls100@oldboyedu opt]$ cd /opt/
-bash: cd: /opt/: Permission denied
[zls100@oldboyedu opt]$ rm -f /opt/zls.txt
rm: cannot remove ‘/opt/zls.txt’: Permission denied
[zls100@oldboyedu opt]$ touch /opt/zls1.txt
touch: cannot touch ‘/opt/zls1.txt’: Permission denied
wx:可以进入,可以删除,可以创建,不能查看
[zls100@oldboyedu opt]$ cd /opt/
[zls100@oldboyedu opt]$ ll
ls: cannot open directory .: Permission denied
[zls100@oldboyedu opt]$ rm -f zls.txt
[zls100@oldboyedu opt]$ touch zls1.txt
rwx:可读,可写,可执行
[zls100@oldboyedu opt]$ ll /opt/
total 0
-rw-rw-r-- 1 zls100 zls100 0 Jul 6 20:22 zls1.txt
[zls100@oldboyedu opt]$ cd
[zls100@oldboyedu ~]$ cd /opt/
[zls100@oldboyedu opt]$ touch zls.txt
[zls100@oldboyedu opt]$ rm -f zls.txt
目录常用组合:rx 和 rwx
特殊权限-------------------------------------------------
[root@oldboyedu ~]# ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd
s出现在u(用户权限位):
SetUID:
修改用户密码:passwd
/etc/passwd
-rw-r--r--. 1 root root 10512 Oct 1 2019 /etc/passwd
/etc/shadow
----------. 1 root root 7831 Jul 6 18:18 /etc/shadow
$6$k2B1MAIL$1VE2ge32wvbLbX0vlf8krhc4Tvh8bNbnE9IHT2VHFJNhsS2xpDcYaISk1Zy.lOG1pLUTvg0.mJvAkOmJ.mIl1.
$6$ZcBjoLY4$Hwdki6gn7VD3nC7f.bzyLFHGgRuIfI3z41ql7mha3YMWhW21U2/JRIkgb.M0C1tqEsFTUcLOR0lgdu1.D7ves.
1)setuid的作用:
普通用户执行具有setuid权限的命令时,会以该命令的属主身份去执行
2)setuid的权限是:4000
3)授权方式:
ugo方式:
chmod u+s filename
number方式:
chmod 4000 filename
注意:如果文件用户权限位上原本没有执行权限,则setuid:S
如果文件用户权限位上原本有执行权限,则setuid:s
[root@oldboyedu ~]# ll /bin/write
-rwxr-sr-x. 1 root tty 19624 Oct 31 2018 /bin/write
1)setgid的作用:
主要是做共享目录。
将目录设置为SGID后,如果在该目录下创建文件,都将与该目录的所属组保持一致
2)setgid的权限是:2000
3)授权方式:
ugo方式:
chmod g+s dirname
number方式:
chmod 2000 dirname
注意:如果文件用户组权限位上原本没有执行权限,则setgid:S
如果文件用户组权限位上原本有执行权限,则setgid:s
[root@oldboyedu ~]# ll -d /tmp/
drwxrwxrwt. 14 root root 20480 Jul 6 20:27 /tmp/
1)粘滞位(sbit)的作用:
普通用户在具有粘滞位的目录下创建文件,只有用户自己能操作,其他用户一概无法操作,即使上级目录有rwx权限
2)sbit的权限是:1000
3)授权方式:
ugo方式:
chmod o+t dirname
number方式:
chmod 1000 dirname
注意:如果文件其他用户权限位上原本没有执行权限,则sbit:T
如果文件其他用户权限位上原本有执行权限,则sbit:t
问题1:
[root@oldboyedu ~]# useradd alex -g zls100
[root@oldboyedu ~]# ll /opt/zls.txt
-rwxr---w- 1 zls100 zls100 0 Jul 6 23:05 /opt/zls.txt
权限的属性:
chattr:
+:增加权限
-:取消权限
=:赋值权限
i:锁定文件,不可移动,不可修改,不可删除,可以执行
a(append):锁定文件,不可移动,不可删除,可以追加内容,可以执行
lsattr:查看特殊权限
[root@oldboyedu ~]# chattr +i /etc/passwd
[root@oldboyedu ~]#
[root@oldboyedu ~]# rm -f /etc/passwd
rm: cannot remove ‘/etc/passwd’: Operation not permitted
[root@oldboyedu ~]# mv /etc/passwd /tmp/
mv: cannot move ‘/etc/passwd’ to ‘/tmp/passwd’: Operation not permitted
[root@oldboyedu ~]# rm -f /etc/passwd
rm: cannot remove ‘/etc/passwd’: Operation not permitted
[root@oldboyedu ~]# lsattr /etc/passwd
----i----------- /etc/passwd
[root@oldboyedu ~]# chattr -i /etc/passwd
[root@oldboyedu ~]# lsattr /etc/passwd
---------------- /etc/passwd
------------------------------------------------------------------umask--------------------------------------------
1.umask的作用:
控制文件或者目录创建的初始权限
2.umask的计算
#查看umask:
[root@oldboyedu ~]# umask
0022
目录权限:755
777-022=755
文件权限:
666-022=644
----------------------------
[root@oldboyedu ~]# umask 046
[root@oldboyedu ~]# umask
0046
目录:731
777-046=731
文件:620
666-046=620
------------------------------
[root@oldboyedu ~]# umask
0023
目录:754
777-023=754
文件:644
666
-013
664
-------------------------------
[root@oldboyedu ~]# umask
0035
目录:742
777-035=742
文件:642
666
-035
642
注意:umask计算时,目录使用777-umask,目录一直不受到umask影响
umask计算时,文件使用666-umask,当umask权限位上含有奇数时,文件权限是奇数位减完+1
umask影响的范围:
touch
mkdir 不指定参数的情况下
vim
vi
useradd
vsftp
samba
if [ $UID -gt 199 ] && [ "/usr/bin/id -gn
" = "/usr/bin/id -un
" ]; then
umask 002
else
umask 022
fi
输入、输出、管道符-
重定向:将原本输出在屏幕上的内容,输出到指定文件或设备中
文件描述符:
0 -> /dev/pts/0 :stdin 标准输入
1 -> /dev/pts/0 :stdout标准输出
2 -> /dev/pts/0 :stderr错误输出
3 -> /var/log/messages :文件名
输出重定向:
1>:标准输出重定向(会覆盖文件)
1>>:标准输出追加重定向(不会覆盖文件)
2>:错误输出重定向(会覆盖文件)
2>>:错误输出追加重定向(不会覆盖文件)
0<<:标准输入重定向
[zls100@oldboyedu ~]$ find /etc/ -name '*.conf' > /tmp/conf4.txt 2>&1
[zls100@oldboyedu ~]$ find /etc/ -name '*.conf' &> /tmp/conf5.txt
|:管道符,连接多条命令,管道符左边的命令将标准输出,输出给管道符右边的命令,右边的命令,标准输入接收
网友评论