用户信息文件:/etc/passwd
aa:x:501:501::/home/aa:/bin/bash
第一列:用户名第二列:密码位(不是真正的密码)第三列:UID 用户ID0 超级用户1~499 伪用户(系统用户)(还有一个例外:65534)>500 普通用户第四列:GID 初始组ID第五列:用户说明第六列:家目录第七列:用户登录后的权限
影子文件: /etc/shadow(真正的密码在shadow里面,512加密)
为什么要把用户和密码分开?
[root@centos ~]# ll /etc/passwd
-rw-r--r--. 1 root root 1535 9月 15 04:02 /etc/passwd
[root@centos ~]# ll /etc/shadow
----------. 1 root root 883 9月 15 04:02 /etc/shadow
如代码所示,shadow除了管理员其他人都不能修改,更加安全
vi /etc/shadow/
- aa:$6$H5hSuu3k$yW6BfM5z35doKs82MeOl452jrcPNw7Z5R0S1Ql0/dQfIwQYqtLT1fQJ2DtwhjkX0FXroTQx2sFzFYh4NoyjEq0:16327:0:99999:7:::
共9列
第一列:用户名
第二列:真正的密码
99999:密码有效时间(270多年)
7:给七天的宽限时间,到期后仍不修改,就封停了
组信息文件: /etc/group
aa:x:500:
怎么查看用户初始组?
vi /etc/passwd
vi /etc/group
1、添加用户
useradd 用户名(最习惯的用法,什么选项都不加)
useradd 选项 用户名
选项:
-g 组名 指定初始组 不要手工指定
-G 组名 指定附加组 把用户加入组,使用附加组
-c 说明 添加说明
-d 目录 手工指定家目录,目录不需要事先建立
-s /bin/bash 手工指定用户登录之后的权限
useradd -g aa bb 添加bb用户,同时指定初始组为aa(通常不要这样做)
useradd -G user1 aa 添加用户aa,指定附加组为user1
useradd -c "test user" -d /user user 用户没有权限,需手动添加
初始组:每个用户初始组只能有一个,初始组只能有一个,一般都是和用户名相同的组作为初始组
附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组
2、设定密码
passwd 用户名
passwd 改变当前用户密码
passwd root 改变root密码
3、删除用户
userdel -r 用户名
-r 连带家目录一起删除(习惯用法,因为userdel会遗留相关信息,user的目录仍然存在)
4、添加组
groupadd 组名
5、删除组
groupdel 组名 注意:组中没有初始用户
6、把已经存在的用户加入组
gpasswd -a 用户名 组名 用户加入组
gpasswd -d 用户名 组名 把用户从组中删除
另一种简单的方法是:直接打开文件,在文件中添加用户
1、id 用户名 显示用户的UID,初始组和附加组
[ root@localhost home ]# id aa
uid=500(aa) gid=500(aa) group=500(aa),0(root)
2、su - 用户名 切换用户身份(-是独立选项,两边都有空格)
- 连带环境变量一起切换
su root 3行
env 11行
USER=aa 18行 说明切错了
[aa@centos ~]$ id aa
uid=500(aa) gid=500(aa) 组=500(aa)
[aa@centos ~]$ su root
密码:
[root@centos aa]# ls
[root@centos aa]# cd
[root@centos ~]# ls
anaconda-ks.cfg httpd-2.2.9 httpd-2.2.9.tar.gz install.log install.log.syslog japan xdl
[root@centos ~]# whoami
root
[root@centos ~]# env
HOSTNAME=centos
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
USER=aa
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
PATH=/usr/lib/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aa/bin
MAIL=/var/spool/mail/aa
PWD=/root
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
HOME=/root
SHLVL=2
LOGNAME=aa
CVS_RSH=ssh
QTLIB=/usr/lib/qt-3.3/lib
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/bin/env
OLDPWD=/home/aa
[root@centos ~]# exit
exit
[aa@centos ~]$ whoami
aa
[aa@centos ~]$ su - root
密码:
[root@centos ~]# env
HOSTNAME=centos
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MAIL=/var/spool/mail/root
PATH=/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
QTLIB=/usr/lib/qt-3.3/lib
CVS_RSH=ssh
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/bin/env
三、ACL权限 用来解决用户身份不足的问题的。(用户操作文件的权限)(用户名尽量不要使用纯数字,系统容易把它当成id)
三个身份:
所有者
所属组
其他人
服务器上:先分身份,再给权限
初始组和附加组指的是:用户和用户组之间的关系。(这个组是我的初始组或附加组)
所有者和所属组指的是:用户和文件的之间的关系。(任何一个文件只能拥有一个所属组)
查看分区ACL权限是否开启
[ root@localhost~ ]# df -h 查看分区使用状况
[ root@localhost~ ]# dumpe2fs -h /dev/sda5
#dumpe2fs命令是查询指定分区详细文件系统信息的命令选项:
-h 仅显示超级块中信息,而不显示磁盘块组的详细信息
查看文档中的:Default mount options : user_xattr acl 发现系统默认是开启的
临时开启分区ACL权限
[ root@localhost ~] # mount -o remount, acl /
#重新挂载根分区,并挂载加入ACL权限
永久开启分区ACL权限
[root@localhost ~]# vi /etc/fstab
UUID=6dbef646-7790-40eb-8f60-0f91c56c72c4 / ext4 defaults,acl 1 1
#添加acl (,acl 注意:因为这是启动文件,所以务必小心)
[ root@localhost ~ ]# mount -o remount /
#重新挂载文件系统或重启系统,使修改生效
1、 getfacl 文件名 查询文件的ACL权限
2、 setgacl 选项 文件名 设定ACL权限
-m 设定ACL权限
-b 删除指定的ACL权限
-x 删除所有的ACL权限
-k 删除默认ACL权限
-R 递归设定ACL权限
d 设定默认ACL权限
setfacl -m u:用户名:权限 文件名
setfacl -m g:组名:权限 文件名
setfacl -m u:bzr:rwx /www 给www目录bzr设置读写执行的acl权限
setfacl -m u:bzr:rwx -R /www 赋予递归acl权限,只能赋予目录
-R 递归
3、 setfacl -m d:u:bzr:rwx -R /www acl默认权限。 注意:默认权限只能赋予目录
注意:如果给目录赋予ACL权限,两条命令都要输入
-R 递归(当前目录和目录下的所有子文件都生效)
-m u:用户名:-R 权限 只对已经存在的文件生效
-m d:u:用户名:-R 权限 只对未来要新建的文件生效
11行 1770 ————>13行 权限位 T(t、T——只能删自己,不能删别人)
16行 增加版主任用户
17行 赋予ACL权限
21行 不支持绝对路径的方式,但这个报错不影响我们的查询结果,可忽略
27行 班主任的权限
[root@centos ~]# mkdir /www
[root@centos ~]# useradd sc
[root@centos ~]# groupadd 89g
[root@centos ~]# gpasswd -a user1 89g
Adding user user1 to group 89g
[root@centos ~]# gpasswd -a user2 89g
Adding user user2 to group 89g
[root@centos ~]# chown sc:89g /www/
[root@centos ~]# ll -d /www/
drwxr-xr-x. 2 sc 89g 4096 9月 15 05:34 /www/
[root@centos ~]# chmod 1770 /www/
[root@centos ~]# ll -d /www/
drwxrwx--T. 2 sc 89g 4096 9月 15 05:34 /www/
[root@centos ~]# ll -d /tmp
drwxrwxrwt. 4 root root 4096 9月 15 03:44 /tmp
[root@centos ~]# useradd bzr
[root@centos ~]# setfacl -m u:bzr:rx /www/
[root@centos ~]# ll -d /www/
drwxrwx--T+ 2 sc 89g 4096 9月 15 05:34 /www/
[root@centos ~]# getfacl /www/
getfacl: Removing leading '/' from absolute path names
# file: www/
# owner: sc
# group: 89g
# flags: --t
user::rwx
user:bzr:r-x
group::rwx
mask::rwx
other::---
12、13行:权限溢出(不可避免,特殊的可以手动修改)(通过修改mask来修改权限)
9行 递归 -R
20行 默认权限 d
42行 cde 已经存在的文件,cde之前的有权限
48行 cde 未来的文件,cde之后的文件有权限
[root@centos ~]# cd /www
[root@centos www]# ls
[root@centos www]# touch abc
[root@centos www]# touch bcd
[root@centos www]# ll
总用量 0
-rw-r--r--. 1 root root 0 9月 15 06:02 abc
-rw-r--r--. 1 root root 0 9月 15 06:02 bcd
[root@centos www]# setfacl -m u:bzr:rx -R /www/
[root@centos www]# ll
总用量 8
-rw-r-xr--+ 1 root root 0 9月 15 06:02 abc(执行权限:对目录来讲是可进入,对文件来讲是可执行)
-rw-r-xr--+ 1 root root 0 9月 15 06:02 bcd(这两行出现了权限溢出)
[root@centos www]# touch cde
[root@centos www]# ll
总用量 8
-rw-r-xr--+ 1 root root 0 9月 15 06:02 abc
-rw-r-xr--+ 1 root root 0 9月 15 06:02 bcd
-rw-r--r--. 1 root root 0 9月 15 06:03 cde
[root@centos www]# setfacl -m d:u:bzr:rx -R /www/
[root@centos www]# getfacl /www/
getfacl: Removing leading '/' from absolute path names
# file: www/
# owner: sc
# group: 89g
# flags: --t
user::rwx
user:bzr:r-x
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:bzr:r-x
default:group::rwx
default:mask::rwx
default:other::---
[root@centos www]# ll
总用量 8
-rw-r-xr--+ 1 root root 0 9月 15 06:02 abc
-rw-r-xr--+ 1 root root 0 9月 15 06:02 bcd
-rw-r--r--. 1 root root 0 9月 15 06:03 cde
[root@centos www]# touch def
[root@centos www]# ll
总用量 12
-rw-r-xr--+ 1 root root 0 9月 15 06:02 abc
-rw-r-xr--+ 1 root root 0 9月 15 06:02 bcd
-rw-r--r--. 1 root root 0 9月 15 06:03 cde
-rw-rw----+ 1 root root 0 9月 15 06:05 def
设置组权限:
12行:组bangzhuren的权限:r-x
[root@centos ~]# groupadd bangzhuren
[root@centos ~]# setfacl -m g:bangzhuren:rx /www
[root@centos ~]# getfacl /www
getfacl: Removing leading '/' from absolute path names
# file: www
# owner: sc
# group: 89g
# flags: --t
user::rwx
user:bzr:r-x
group::rwx
group:bangzhuren:r-x
mask::rwx
other::---
default:user::rwx
default:user:bzr:r-x
default:group::rwx
default:mask::rwx
default:other::---
最大有效权限mask
mask是用来指定最大有效权限的。
如果我给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限
修改最大有效权限
[ root@localhost /]# setfacl -m m:rx 文件名
#设定mask权限位r-x。使用“m:权限”格式
[root@centos ~]# setfacl -m m:rx /www
[root@centos ~]# getfacl /www
getfacl: Removing leading '/' from absolute path names(报错不影响我们查看的信息)
# file: www
# owner: sc
# group: 89g
# flags: --t
user::rwx
user:bzr:r-x
group::rwx #effective:r-x(会有提示,虽然设定的权限是7,但其实最大的权限只有5)
group:bangzhuren:r-x
mask::r-x
other::---
default:user::rwx
default:user:bzr:r-x
default:group::rwx
default:mask::rwx
default:other::---
删除ACL权限
1、[root@localhost /]# setfacl -x u:用户名 文件名
#删除指定用户的ACL权限
[root@localhost /]# setfacl -x g:组名 文件名
#删除指定用户组的ACL权限
2、[root@localhost /]# setfacl -b 文件名
#删除文件的所有ACL权限
setUID
chatter权限
sudo权限