linux用户和组管理及权限管理
一、useradd命令:在系统中添加用户
常用参数:
-d家目录
-g设置主组,
-G设置附加组,
-s指定默认shell,
-M不创建家目录等内容
-m创建家目录
-r创建系统账号(默认不创建家目录)
-c描述 (/etc/passwd中第5个字段中)
-N创建账号时,不创建同名组,默认放到users组内
-u UID
-o 配合-u选项,不检查UID的唯一性,同UID多用户名
在系统上添加一个用户名称为apache的用户;shell为/sbin/nolgoin;主组:apache; 附加组:daemon,bin; UID:80; home:/var/www
[root@centos7 ~]#getent passwd apache 先查看是否存在
[root@centos7 ~]#useradd -G daemon,bin -u 80 -r -m -d /var/www -s /sbin/nologin apache
二、usermod命令:变更用户设置
常用参数:
-u UID
-g GID
-G 附加组,原来的会被覆盖,若保留原有,则要同时使用-a(append)选项
-s SHELL
-c 新注释信息(comment)
-d home 新家目录不会自动创建,若要创建新目录并移动原家数据同时使用-m选项
-l login_name新的名字
-L lock指定用户,在/etc/shadow密码栏增加!
-U unlock指定用户,在/etc/shadow密码栏!去除
-e YYYY-MM-DD指明用户账号过期日期
-f INACTIVE:设备非活动期限
改变用户dushan的主组为g1,添加附加组g2并且保留原来附加组g3
[root@centos7 data]#usermod -g g1 -aG g2 dushan
[root@centos7 data]#id dushan
uid=1001(dushan) gid=1003(g1) groups=1003(g1),1004(g2),1005(g3)
三、userdel命令:删除用户
常用参数:
-r 删除用户家目录
[root@centos ~]#userdel -r apache
四、id命令:查看用户相关的ID信息
常用参数:
-u 显示UID
-g 显示GID
-G 显示用户所属的组的ID
-n 显示名称,需配合ugG使用
[root@centos ~]#id liuying
uid=1001(liuying) gid=1003(liuying) groups=1003(liuying),1002(home)
[root@centos ~]#id -Gn liuying
liuying home
通常使用id命令判断用户是否存在
五、su命令:切换用户
常用方法:
su USERNAME:非登录式切换,不会读取目标用户的配置文件,不改变当前工作目录
su - USERNAME:登录式切换,读取目标用户配置文件,切换至家目录,完全切换
root su 至其他用户无需密码;非root用户切换需密码
常用选项:
-c 切换身份执行命令
-l 登陆 相当于 su - USERNAME
- 完全切换dushan用户身份
[root@centos7 ~]#su - dushan
Last login: Thu Sep 6 16:26:43 CST 2018 on pts/0
[dushan@centos7 ~]$ pwd
/home/dushan
- 不完全切换到linux用户身份
[root@centos7 ~]#su dushan
[dushan@centos7 root]$ pwd
/root
注:su只是切换了root身份,但Shell环境仍然是普通用户的Shell;而su -连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误,报command not found的错误。
六、passwd命令:设置用户密码
常用选项:
-d :删除指定用户密码
-l :锁定指定用户
-u :解锁指定用户
-e :强制用户下次登陆修改密码
-f :强制操作
-n :mindays:指定最短使用期限
-x maxdays:指定最长使用期限
-w warndays:提前多少天开始告警
-i inactivedays:非活动期限
–stdin:从标准输入接收用户密码echo "password"|passwd --stdin USERNAME >/dev/null
修改用户dushan的登录密码
[root@centos7 ~]#passwd dushan
或
[root@centos7 ~]#echo 'dushan' | passwd --stdin dushan
Changing password for user dushan.
passwd: all authentication tokens updated successfully.
七、chage命令: 修改用户密码策略
常用选项:
-d:LAST_DAY 立即生效chage -d 0 dushan
下次登陆强制重设密码
-E --expiredate: 有效期日期
-l --inactive: 非活动期限
-m --mindays:最短有效期
-M --maxdays:最长有效期
-W --warndays:警告日期
-l 显示密码策略
#chage -E 2019-09-16 dushan
#chage -m 0 -M 42 -W 14 -I 7 dushan 最短0天,最长42天,剩14天开始提示,过期7天后锁定。
#chage -d 0 dushan 立即锁定账户,下次登陆强制重设密码
#chfn dushan 给dushan用户添加信息
#finger dushan 查看用户信息(需先安装finger包)
八、groupadd命令:创建组
常用选项:
-g:指明GID号
-r:创建系统组 默认centos6:id<500,centos7:id<1000
添加nginx组
[root@centos7 ~]# groupadd -r -g 8080 nginx
[root@centos7 ~]# getent group nginx 查看创建情况
九、groupmod命令:修改组
常用选项:
-n:新名字
-g:新GID号
[root@centos7 ~]#groupmod -g 2222 -n family home
[root@centos7 ~]#getent group family
family:$5$WOpdK/R32tI5ewPI$tZBOnDP0:2222:dushan
groupdel命令:groupdel family 删除family组
十、gpasswd命令:组密码
常用选项:
-a :将用户添加至指定组中
-d :从指定组中移除用户
[root@centos7 ~]#gpasswd -a dushan family
Adding user dushan to group family
[root@centos7 ~]#gpasswd -d dushan family
Removing user dushan from group family
十一、newgrp命令:临时切换主组
普通用户临时切换主组,作用为创建文件不为自己所有,为所属主组情况下使用
[root@centos7 ~]#su - dushan
Last login: Wed Jul 17 15:55:19 CST 2019 on pts/0
[dushan@centos7 ~]$ touch test.log
[dushan@centos7 ~]$ ll test.log
-rw-rw-r-- 1 dushan dushan 0 Jul 18 14:24 test.log
[dushan@centos7 ~]$ newgrp family
Password:
[dushan@centos7 ~]$ touch test2.log
[dushan@centos7 ~]$ ll test2.log
-rw-r--r-- 1 dushan family 0 Jul 18 14:25 test2.log
十二、groupmems命令:调整组成员
常用选项:
-g,–group groupname 更改指定组(只有root)
-a,–add username 指定用户加入组
-d, --delete username 从组中删除用户
-p,–purge 从组中清除所有成员
-l,–list 显示组成员列表
[root@centos7 ~]#groupmems -g family -a dushan 往family组中添加dushan用户
[root@centos7 ~]#groupmems -l -g family 显示family组中成员
groups+user显示user所属的组
[root@centos7 ~]#groups dushan
dushan : dushan family
十三、newusers命令:批量创建用户
需要/etc/passwd格式文件,批量创建用户,可用于新机器恢复用户
[root@centos7 ~]#newusers /etc/passwd.copy
使用命令后会生成家目录,可是缺少文件,切换用户后cp相关文件即可
#su - test
#cp -r /etc/skel/. .
十四、chpasswd命令:批量修改用户口令
chpasswd本身是交互式命令,直接键入:dushan:centos后,ctrl+d结束即可
[root@centos7 ~]#cat /data/passwd.txt |chpasswd
格式如下:
[root@centos7 ~]#cat /data/passwd.txt
dushan:centos
tom:centos
十五、chown命令:修改文件所属关系
设置/data/dir目录及其子目录和文件属主属组为apache
[root@centos7 data]#chown -R apache.apache /data/dir
[root@centos7 data]#ll
total 8
lrwxrwxrwx 1 root root 19 Sep 6 09:47 apachectl -> /usr/sbin/apachectl
drwxr-xr-x 3 apache apache 33 Sep 6 09:59 dir
-rw-r--r-- 1 root root 98 Sep 6 12:20 fstab.out
-rw-r--r-- 1 root root 170 Sep 3 10:26 functions.bak
注意:chown -R apache.apache等价于chown -R apache:apache
#chgrp home testfile.txt 把文件所属组改为home
十六、chmod命令:改变文件权限
一、chomd常用方法
1. 修改权限为属主添加写和执行权限、属组没有读权限其它人有读和执行权限
[root@centos7 ]#chmod u+wx,g-r,o=rx checkid.sh
2. 递归设置testdir目录权限为:属组添加可读、可写、可执行权限,但其子文件不添加执行权限
[root@centos7 ~]# chmod -R g=rwX testdir/
大写X不添加给子目录执行
3. 设置文件fstab.out权限为只有属主有读写权限
[root@centos7 ~]#chmod 600 fstab.out
4. 参考f2权限,给f1设置权限
[root@centos7 ~]#chmod --reference=f2 f1
二、SUID,SGID:继承所有者,所属组权限
SUID 作用于二进制程序上, 继承所有者权限。(理解,一般不特意设置)
设置二进制可执行程序文件chmod拥有suid权限
[root@centos7 ~]#chmod u+s chmod
取消二进制可执行程序文件chmod拥有的suid权限
[root@centos7 ~]#chmod u-s chmod
注:继承属主的权限 如/usr/bin/passwd,否则普通用户无法修改密码,/bin/vim如设置suid权限,则普通用户可以自行修改/etc/passwd文件身份变成root!
[root@centos7 ~]#ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
GUID作用于二进制程序上,继承所有组权限。
还可作用于文件夹上,新文件继承所属组。
例:对/data目录设置sgid权限,作为协作目录,以后在此目录下建文件,所属组均同/data目录所属组一样
[root@centos7 ~]#chmod g+s /data
[root@centos7 ~]#ll -d /data
drwxrwsr-x. 3 root sales 85 Sep 6 16:31 /data
三、Sticky(粘滞位)权限设置:只有文件的所有者或root才能删除该目录下的文件
对/data目录设置sticky权限
[root@centos7 ~]#chmod o+t /data
表现为chmod 1777
chmod 7777 则为suid guid 和sticky权限都有了,当然这样并没有意义
[root@centos7 ~]#ll -d /data
drwxrwxrwt. 3 root root 85 Sep 6 17:07 /data
取消/data目录的sticky权限
[root@centos7 data]#chmod o-t /data
四、 ACL Access Control List 访问控制列表
ACL生效顺序:所有者,自定义用户,自定义组,其他人
setfacl常用选项:
-m 设置权限
-x 撤销权限
-b 清空权限
-R 递归
-M 读取列表setfacl -M acl.txt f1
(对f1文件设置acl.txt文件中的权限)
-k 删除文件夹权限setfacl -k dir
在/data/dir里创建的新文件自动属于g1组;
[root@centos7 ~]#setfacl -Rm g:g1:rwx /data/dir
dushan用户对/data/dir文件夹只有读权限
[root@centos7 ~]#setfacl -m u:dushan:r-- /data/dir
清空权限
[root@centos7 ~]#setfacl -b /data/dir
查看文件夹ACL权限
[root@centos7 ~]#getfacl /data/dir
复制file1的acl权限给file2
[root@centos7 ~]#getfacl file1 |setfacl --set-file=- file2
ACL备份和还原
getfacl -R /tmp/dir >/root/acl.txt 备份权限
setfacl -R --set-file=acl.txt /tmp/dir 还原权限
或在当前目录下:
setfacl --restore /root/acl.txt 还原权限
五、root用户对某文件防误操作
root也改不了删不了
#chattr +i /etc/
#chattr -i /etc 去除
root可以改不能删
#chattr -a /etc
#chattr +a /etc
网站修改读时间,可添加+A no time updates(修改读时间)
#chattr +A
#chattr -A