1.关于对用户的理解
用户就是系统使用者的身份
在系统中用户存储为若干个串字符和若干个系统配置文件
用户信息涉及到的系统配置文件有:
/etc/passwd ###用户信息
用户:密码:uid:gid:说明:家目录:用户使用的shell
/etc/shadow ###用户认证信息
用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日
/etc/group ###组信息
组名称:组密码:组id:附加组成员
/etc/gshadow ###组认证信息
2.用户权利的下放(超级用户可以下放普通用户不能执行的操作给普通用户,下放权力配置文件:/etc/sudoers)
建立一个新的用户,然后切换到这个新用户下,在这个新用户下添加新的用户,会报错,没有权限执行此操作。(执行hostname,找到主机名称)
超级用户执行visudo进入编辑/etc/sudoers模式,添加如下命令(第一行是注释,系统不执行,主要是第二行)
如果按照上面的命令修改/etc/sudoers保存,并在shell中执行添加新用户的操作,发现要输入密码,为了避开密码的输入,可以:
这样就省去了加密码的麻烦。
为了使新用户可以进行文件的修改,可以在/etc/sudoers中添加/usr/bin/vim(执行的系统命令一般都在/bin 目录下)
不添加/usr/bin/vim的话会出现如下错误,文件显示‘只读’,虽然可以进行修改,
但是当保存退出的时候无法执行。
添加/usr/bin/vim后成功修改,实现了修改功能,
格式:
获得权限用户 主机名称=(获得到的用户身份)命令
westos localhost=(root) /usr/sbin/useradd
westos用户能在localhost以超级用户身份执行/usr/sbin/useradd
注意:修改/etc/shadow文件时,使用visudo;执行下放权限的命令:sudo 命令(因为是新添加的,系统还没用读取,使用sudo重新加载)
3.用户认证信息的修改
chage 参数 用户
-d ##用户密码组后一次修改的时间,如果设定成0,用户登陆系统后必须修改自己的密码
-m ##最短有效期
-M ##最长有效期
-W ##警告期
-I ##用户非活跃天数(密码到期后可以延缓修改的天数)
-E ##帐号到期日格式 -E "YYYY-MM-DD"
使用下面命令进行监控:
4.文件的权限:
- | rw- r-- r-- | 1 | root | root | 0 | Jan 3 07:33 | file |
分别对应(1)~(8)
(1)"-":文件类型
- ##普通文件
d ##目录
c ##字符设备
s ##套接字
p ##管道
b ##快设备
l ##连接
(2)."rw-r--r--":文件读写权限
rw- ###所有人的权限
r-- ###所有组的权限
r-- ###其他人的权限
(3)."1":
对文件 ###文件内容被系统记录的次数
对目录 ###目录中文件属性的字节数
(4)."root" ##文件所有人
(5)."root" ##文件所有组
(6)."0" ###文件内容的大小
(7)."Jan 3 07:33" ####文件最后一次被修改的时间
8."filename" ####文件名字
文件所有人所有组的管理:(watch监控)
chown username file|dir ##更改文件的所有人
chown username.groupname file|dir ##更改所有人所有组
chown -R username dir ##更改目录本身及里面所有内容的所有人
chgrp -R groupname dir ##更改目录本身及里面所有内容的所有组
字符方式修改该文件权限
chmod [-R] <u|g|o><+|-|=><r|w|x> file|dir
chmod u-x filename ##filename用户去掉x权限
chmod g+w filename ##filename用户组添加w权限
chmod u-x,g+w filename ##filename用户去掉x权,filename用户组添加w权限
chmod ugo-r filename ##filename的用户和用户组以及其他人去掉r权限
chmod ug+x,o-r filename ##filename用户和组添加x权限,其他人去掉r权限
数字方式修改该文件权限:
r=4
w=2
x=1
文件权限数字表示方式
rw-|r--|r--
u=rw-=4+2+0=6
g=r--=4+0+0=4
o=r--=4+0+0=4
chmod 修改后权限值 filename
chmod 777 filename
7=rwx
6=rw-
5=r-x
4=r--
3=-wx
2=-w-
1=--x
0=---
5.系统默认权限的设定
从系统存在角度来说,开放权力越大,系统存在意义越高
从系统安全角度来说,开放权力越少,系统安全性越高
所以系统设定新建文件或目录会去掉一些权限
设定方式:
umask ##查看系统保留权限默认为022
umask 077 ##修改该系统保留权限为077,此设定为临时设定,只当前shell中生效
永久设定方式:
只能临时设定:(当前shell中生效,设定之后文件的权限改变)
重新开一个shell,此时文件权限又为‘644’
要永久设定文件权限,在系统配置文件中修改保存。
/etc/bashrc:
/etc/profile:
以上两个文件umask设定值必须保持一致。
让设定立即生效: source /etc/bashrc
source /etc/profile
注意:文件权限一般为‘644’,系统限定了'022',内核限定了‘111(关闭用户,用户组以及普通用户的执行)’ {‘777-022-111=644’}
6.文件的访问控制(acl列表)
getfacl filename|dir
# file: westos/ ##文件名称
# owner: root ##文件所有人
# group: root ##文件所有组
user::rwx ##拥有者权限
user:student:rwx ##特殊用户权限
group::--- ##组权限
mask::rwx ##权限掩码
other::--- ##其他人权限
设定:
setfacl -m <u|g>:<username|groupname>:权限 文件|目录
删除:
setfacl -x <u|g>:<username|groupname>文件|目录
注意:当文件上有权限列表时,ls -l 能看到的权限不一定是真的(详细看/mnt/fille 的用户组权限)
setfacl -b 文件|目录(‘+’表示列表开启)
7.特殊权限:
(1).suid ##冒险位
之针对二进制可执行文件,
文件内记录的程序产生的进程的所有人为文件所有人
和进程发起人身份无关
设定方式:
chmod u+s file
suid=4
chmod 4xxx file
(2).sgid ##强制位
对文件:只针对二进制可执行文件,
任何人运行二进制文件
程序时程序产生的进程的所有组都是文件的所有组
和程序发起人组的身份无关
对目录:当目录有sgid权限后,目录中新建的所有文件的所有组
都自动归属到目录的所有组之中,和文件建立者所在的组无关
设定方式:
chmod g+s file|dir
sgid=2
chmod 2xxx file|dir
(3).sticky ##粘制位
t权限:
只针对与目录,当一个目录上有t权限,那么目录中的文件只能被文件的拥有者删除
设定方式:
chmod o+t direcotry
t=1
chmod 1777 direcotry