提纲
文件系统权限
3A 安全
Authentication : 认证 --> 用户名&密码、指纹、人脸识别、DNA验证 Authorization : 授权 Accounting|Audition : 审计
权限模型
Linux 下组和用户的特点: (1)Linux不支持用户或组的嵌套,windows支持 (2)Linux允许用户名、组名、ID号相同
用户分类
-
安全上下文 Security Context:进程所能够访问资源的权限取决于进程的运行者的身份
-
Linux下判断身份都是看UID号,而非名字
用户级别 | ID号 | 备注 |
---|---|---|
管理员 | 0 | root |
普通用户 | 1-65535 | |
系统用户 | 1~499(v6),1-999(v7) | 对守护进程获取资源进行权限分配(shell:/sbin/nologin;/usr/sbin/nologin) |
普通用户 | 500+(v6),1000+(v7) | 交互式登录 |
- 对于文件和目录而言,用户大概分为三个级别
:
用户级别 | 说明 |
---|---|
1st Class | 拥有者 owner |
2nd Class | 群组成员 group members |
3rd Class | 其他用户 other users |
组分类
组类型 | 说明 |
---|---|
主组 | 用户有且只能有一个主要组,排位第一级别 |
辅助组 | 一个用户可以有0~n个附加组(辅助组) |
私有组 | 组名与用户名相同,且仅包含一个用户 |
#----------------------------------------------------------------------------- # 查看用户组信息 #----------------------------------------------------------------------------- [root@localhost ~]# groups alice alice : alice g2 [root@localhost ~]# getent group alice alice:x:502:user2 [root@localhost ~]# getent gshadow alice alice:!::user2 [root@localhost ~]# id alice uid=501(alice) gid=502(alice) groups=502(alice),1240(g2)
配置文件
配置文件 | 说明 |
---|---|
/etc/passwd | 用户及其属性信息(名称、UID、主组ID等) |
/etc/shadow | 用户密码及其相关属性 |
/etc/group | 组及其属性信息 |
/etc/gshadow | 组密码及其相关属性 |
passwd 文件格式
[liang@centos7 ~]$ getent passwd root liang root:x:0:0:root:/root:/bin/bash liang:x:1000:1000:liang:/home/liang:/bin/bash
从左到右的含义依次是:
字段 | 说明 |
---|---|
name | 登录名 |
password | 密码(x为占位符,加密密码在/etc/shadow) |
UID |
用户ID,root的id=0,范围:1~65535 其中,系统用户:1-499(CentOS6),1-999(CentOS7); 普通用户:500+(CentOS6), 1000+ (CentOS7) |
GID | 用户主组ID(系统组:V6<500, V7<1000) |
GECOS | 备注字段 |
directory | 用户家目录 |
shell | 用户默认的shell |
#----------------------------------------------------------------------------- # 1) getent passwd [username...]: 查看用户的passwd配置文件内容 #----------------------------------------------------------------------------- [root@localhost ~]# getent passwd (= cat /etc/passwd) [root@localhost ~]# getent passwd liang liang:x:500:501::/home/liang:/bin/bash #----------------------------------------------------------------------------- # 2) chfn username : 修改用户的GECOS备注字段内容 #----------------------------------------------------------------------------- [root@localhost ~]# chfn liang Changing finger information for liang. Name []: liangchao Office []: 110 Office Phone []: 10086 Home Phone []: 119 Finger information changed. [root@localhost ~]# getent passwd liang liang:x:500:501:liangchao,110,10086,119:/home/liang:/bin/bash #----------------------------------------------------------------------------- # 3) 修改alice的密码 #----------------------------------------------------------------------------- [root@localhost Packages]# echo 123456 | passwd --stdin alice Changing password for user alice. passwd: all authentication tokens updated successfully. #----------------------------------------------------------------------------- # 4) chsh -s shell username : 修改用户默认的shell类型 # 5) su - username : 切换用户(完全切换) #----------------------------------------------------------------------------- [root@localhost Packages]# getent passwd alice alice:x:501:502::/home/alice:/bin/bash [root@localhost Packages]# chsh -s /bin/csh alice Changing shell for alice.Shell changed. [root@localhost Packages]# getent passwd alice alice:x:501:502::/home/alice:/bin/csh [root@localhost Packages]# su - alice [alice@localhost ~]$ echo $SHELL /bin/csh #----------------------------------------------------------------------------- # 6) 将用户的shell类型改为nologin,导致用户无法切换,也无法登录 #----------------------------------------------------------------------------- [root@localhost Packages]# file /sbin/nologin /sbin/nologin: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped [root@localhost Packages]# su - alice This account is currently not available. #----------------------------------------------------------------------------- # 7) 设定是否将密码放进shadow:pwunconv不放(password unconvert),pwconv放 #----------------------------------------------------------------------------- [root@centos7 testdir]# pwunconv [root@centos7 testdir]# echo 123456 | passwd --stdin liangChanging password for user liang. passwd: Authentication token manipulation error (此时 cat /etc/shadow会报找不到文件,cat /etc/passwd发现所有用户的密码位均有值,不再是x) [root@centos7 testdir]# getent passwd liang liang:$6$XoyQiDfz$R7dcM4mGTBYejUJ8d3w/:1000:1000:liang:/home/liang:/bin/bash [root@centos7 testdir]# pwconv [root@centos7 testdir]# getent passwd liang liang:x:1000:1000:liang:/home/liang:/bin/bash
shadow 文件格式
#----------------------------------------------------------------------------- # loginName:password:last change:min change age:max useage:warning period:inactivity period:expiration date:reserve filed #----------------------------------------------------------------------------- [root@localhost Packages]# getent shadow alice(等同于:cat /etc/shadow ) alice:!$6$AWo3D7uD$GyqAxaEXFkIcG8XE2kPBRl82……tm0LQo7eZhUS37Fj2Pymll.:17014:0:99999:7:::
从左到右的含义依次是:
字段 | 说明 |
---|---|
login name | 登录名 |
encrypted password | 加密密码 |
date of last password change | 从1970年1月1日起到密码最近一次被更改的时间,天数(空即禁用) |
minimum password age | 密码再过几天可以被变更(0表示随时可被变更) |
maximum password age | 密码再过几天必须被变更(99999表示永不过期) |
password warning period | 密码过期前几天系统提醒用户(默认为一周) |
password inactivity period | 密码过期几天后帐号会被锁定 |
account expiration date | 从1970年1月1日算起,多少天后帐号失效 |
reserved field | 预留字段 |
关于各个时间的先后顺序,如下图所示:
[root@localhost Packages]# getent shadow alice(等同于:cat /etc/shadow ) alice:!$6$AWo3D7uD$GyqAxaEX……hUS37Fj2Pymll.:17014:0:99999:7::: #----------------------------------------------------------------------------- # 关于第二列密码详解: # 1) $6: 加密方式 # 常见的加密方式:md5($1),sha1,sha224,sha256,sha384,sha512($6) # * 修改加密算法:authconfig --passalgo=md5 --update #----------------------------------------------------------------------------- [root@localhost Packages]# authconfig --passalgo=md5 --update [root@localhost Packages]# useradd john [root@localhost Packages]# echo 12345 | passwd --stdin john Changing password for user john. passwd: all authentication tokens updated successfully. [root@localhost Packages]# getent shadow john john:$1$nJw0PIvZ$jJ0IklD4k9u3WYxMM4Ssr.:17014:0:99999:7::: #----------------------------------------------------------------------------- # 2) $8MvEcVLBt2bVhbld$:随机数,故即便密码相同,加密后也不同; # 3) !:用户锁定,不可登陆,但root可以su过去 # * 加锁:usermod -L username # * 解锁:usermod -U username #----------------------------------------------------------------------------- [root@localhost Packages]# usermod -L alice [root@localhost Packages]# getent shadow alice alice:!$6$AWo3D7uD$GyqAxaEXFkIcG8XE2k……S37Fj2Pymll.:17014:0:99999:7::: [root@localhost Packages]# usermod -U alice [root@localhost Packages]# getent shadow alice alice:$6$AWo3D7uD$GyqAxaEXFkIcG8XE2kPBR……7Fj2Pymll.:17014:0:99999:7::: #----------------------------------------------------------------------------- # 4) 密码建议:数字/大小写/特殊字符混合;足够长;使用随即密码;定期更换 #----------------------------------------------------------------------------- [root@localhost Packages]# openssl rand -base64 10 (生成随机密码) S8DBJeAt4bugFg== [root@localhost Packages]# echo "`date +%s`/86400" |bc17014 [root@localhost Packages]# echo $[`date +%s`/86400]17014 #----------------------------------------------------------------------------- # 使用户alice下次登录必须修改密码 #----------------------------------------------------------------------------- # 方式一: [root@localhost Packages]# chage -d 0 alice [root@localhost Packages]# getent shadow alice alice:$6$AWo3D7uD$GyqAx……37Fj2Pymll.:0:0:99999:7::: # 方式二: [root@localhost Packages]# passwd -e alice Expiring password for user alice. passwd: Success [root@localhost Packages]# getent shadow alice alice:$6$AWo3D7uD$GyqAxa……ZhUS37Fj2Pymll.:0:0:99999:7:::
group 文件格式
#----------------------------------------------------------------------------- # groupName:passwd:GID:userList #----------------------------------------------------------------------------- [root@centos7 Desktop]# getent group admins admins:x:1002:harry,sarah
字段名 | 说明 |
---|---|
group_name | 用户名 |
password | 密码,若为空则不需密码 |
GID | 组ID |
user_list | 组成员列表 |
gshadow 文件格式
#----------------------------------------------------------------------------- # 关于第二列【密码】的详解: # 1) 若密码出现非加密字符,如!或*,用户将不能用unix密码使用组(组成员不受限) # 2) 组密码用于一个非组成员想要获取组权限(参考 newgrp命令) # 3) ! 开头表明密码锁定 #----------------------------------------------------------------------------- [root@centos7 Desktop]# getent gshadow admins hehe admins:!::harry,sarah hehe:*::
header 1 | header 2 |
---|---|
group name | 存在于系统中的有效组名 |
encrypted password | 密码 |
administrators | 组管理员列表(权限与组成员相同,但可修改组员和组密码) |
members | 成员列表 |
用户、组 管理命令
useradd
-
语法
useradd [options] LOGIN useradd -D useradd -D [options]
-
参数
参数 | 使用说明 |
---|---|
-b BASE_DIR | 指定用户的默认家目录的BASE目录; 默认参考配置文件; 若无-m,则家目录必须存在。 |
-c COMMENT | 描述信息,用作用户的全名 |
-d HOME_DIR | 指定用户家目录;默认在BASE_DIR下建与用户同名的目录作为家目录; |
-D | 改变默认值(当仅用-D则使用默认值;当-D配合其他选项,则用指定值更新默认) |
-e YYYY-MM-DD | 设定用户账号的失效时间(account expiredDate);默认不失效; |
-f INACTIVE_DAYS | 设定当密码过期后多少天帐号将被禁用 |
-g GROUP | 设定主组(组存在);若未指定,则参考/etc/login.defs的USERGROUPS_ENAB的设定(yes:创建同名组;no:参考/etc/default/useradd的GROUP,或100) |
-G 2nd_GROUPS… | 设定附属组 |
-k SKEL_DIR | 设定创建家目录后,从SKEL_DIR拷贝文件到用户家目录 |
-K KEY=VALUE | 设定如下默认值(-K UID_MIN=100 -K UID_MAX=499 -K UMASK=… -K PASS_MAX_DAYS=-1) |
-l | 不降用户添加到lastlog 和 faillog 数据库。 |
-m | 若用户家目录不存在则创建,并从-k指定的数据拷贝到该家目录;家目录的父目录必须存在才能创建 |
-M | 不创建家目录,即使/etc/login.defs(CREATE_HOME=yes)也不行 |
-N | 不创建同名组,为用户添加组:-g 或 /etc/default/useradd(GROUP)指定的 |
-o | 允许创建UID相同的用户,仅当配合-u时有效 |
-r | 创建系统账户(不创建家目录,若必须指定需使用-m选项) |
-s SHELL | 设定用户默认登录shell |
-u UID | 设定用户UID,必须唯一(除非使用-o) |
-U | 创建同名组 |
-
配置文件
/etc/default/useradd : 用户创建的默认值
/etc/login.defs : 密码相关的配置项
/etc/skel/ : 包含默认文件的目录
-
示例
#----------------------------------------------------------------------------- # 新增用户alice: # 1)新增完成后,查看alice的组是alice(未指定时自动创建同名组) # 2)新增完成后,未指定家目录的,自动创建家目录(系统用户不创建) #----------------------------------------------------------------------------- [root@localhost ~]# useradd alice [root@localhost ~]# id alice uid=501(alice) gid=502(alice) groups=502(alice) [root@localhost ~]# ll /home total 12 drwx------. 4 alice alice 4096 Aug 1 11:45 alice drwx------. 28 liang liang 4096 Jul 20 18:04 liang #----------------------------------------------------------------------------- # 创建UID相同的两个用户:mag,mag2 #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -u 1234 mag [root@localhost Packages]# useradd -u 1234 mag2 useradd: UID 1234 is not unique [root@localhost Packages]# useradd -u 1234 -o mag2 [root@localhost Packages]# getent passwd mag mag2 mag:x:1234:1234::/home/mag:/bin/bash mag2:x:1234:1235::/home/mag2:/bin/bash #----------------------------------------------------------------------------- # 创建用户user2,为其添加辅助组:liang,alice,bin #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -G liang,alice,bin user2 [root@localhost Packages]# getent passwd user2 user2:x:1236:1236::/home/user2:/bin/bash [root@localhost Packages]# groups user2 user2 : user2 bin liang alice #----------------------------------------------------------------------------- # 1)创建用户user3,为其指定家目录:/testdir/user3home,目录不存在 # 2)创建用户user4,为其指定家目录:/testdir/user4,目录存在不重建,所需文件不复制 #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -d /testdir/user3home user3 [root@localhost Packages]# getent passwd user3 user3:x:1237:1237::/testdir/user3home:/bin/bash [root@localhost Packages]# ll /testdirtotal 69876 drwx------. 2 root root 16384 Jul 20 16:54 lost+found drwx------. 4 user3 user3 4096 Aug 1 15:51 user3home -r--r--r--. 1 root root 71524872 Jul 22 11:51 VMwareTools-10.0.0-2977863.tar.gz drwxr-xr-x. 9 root root 4096 Aug 12 2015 vmware-tools-distrib [root@localhost Packages]# mkdir /testdir/user4 [root@localhost Packages]# useradd -d /testdir/user4 user4 useradd: warning: the home directory already exists. Not copying any file from skel directory into it. #----------------------------------------------------------------------------- # 创建用户user5,不创建默认组:因未指定组,默认设定GID=100 #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -N user5 [root@localhost Packages]# getent passwd user5 user5:x:1239:100::/home/user5:/bin/bash #----------------------------------------------------------------------------- # 创建系统用户user6,设定shell为/sbin/nologin:不创建家目录、邮箱 #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -r -s /sbin/nologin user6 [root@localhost Packages]# getent passwd user6 user6:x:496:492::/home/user6:/sbin/nologin [root@localhost Packages]# ls /homealice john liang mage mage2 tom user1 user2 user5 [root@localhost Packages]# cd /var/spool/mail [root@localhost mail]# ll total 8 -rw-rw----. 1 liang mail 0 Jul 20 17:15 liang -rw-------. 1 root mail 5376 Aug 1 09:11 root -rw-rw----. 1 rpc mail 0 Jul 20 16:59 rpc #----------------------------------------------------------------------------- # 查看系统创建用户的默认设置: # (1) useradd -D == cat /etc/default/useradd # (2) /etc/skel #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -DGROUP=100HOME=/home INACTIVE=-1EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@localhost Packages]# ll -a /etc/skeltotal 36 drwxr-xr-x. 4 root root 4096 Jul 20 17:00 . drwxr-xr-x. 125 root root 12288 Aug 1 15:55 .. -rw-r--r--. 1 root root 18 May 11 07:21 .bash_logout -rw-r--r--. 1 root root 176 May 11 07:21 .bash_profile -rw-r--r--. 1 root root 124 May 11 07:21 .bashrc drwxr-xr-x. 2 root root 4096 Nov 12 2010 .gnome2 drwxr-xr-x. 4 root root 4096 Jul 20 16:58 .mozilla #----------------------------------------------------------------------------- # 修改用户创建的默认shell:/sbin/nologin #----------------------------------------------------------------------------- [root@localhost mail]# useradd -D -s /sbin/nologin [root@localhost mail]# useradd -D GROUP=100 HOME=/home INACTIVE=-1EXPIRE= SHELL=/sbin/nologin SKEL=/etc/skel CREATE_MAIL_SPOOL=yes #----------------------------------------------------------------------------- # 1、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution" #----------------------------------------------------------------------------- [root@centos7 Packages]# useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo [root@centos7 Packages]# getent passwd gentoo gentoo:x:1001:1001:Gentoo Distribution:/home/gentoo:/bin/csh [root@centos7 Packages]# groups gentoogentoo : gentoo root bin #----------------------------------------------------------------------------- # 2、创建下面的用户、组和组成员关系 # 名字为admins 的组 # 用户natasha,使用admins 作为附属组 # 用户harry,也使用admins 作为附属组 # 用户sarah,不可交互登录系统,且不是admins 的成员, # natasha,harry,sarah密码都是centos #----------------------------------------------------------------------------- [root@centos7 Packages]# groupadd admins [root@centos7 Packages]# useradd -G admins natasha [root@centos7 Packages]# useradd -G admins harry [root@centos7 Packages]# useradd -s /sbin/nologin sarah [root@centos7 Packages]# echo centos | passwd --stdin sarah Changing password for user sarah. passwd: all authentication tokens updated successfully. [root@centos7 Packages]# echo centos | passwd --stdin harry Changing password for user harry. passwd: all authentication tokens updated successfully. [root@centos7 Packages]# echo centos | passwd --stdin natasha Changing password for user natasha. passwd: all authentication tokens updated successfully. [root@centos7 Packages]# getent passwd natasha harry sarah natasha:x:1002:1003::/home/natasha:/bin/bash harry:x:1003:1004::/home/harry:/bin/bash sarah:x:1004:1005::/home/sarah:/sbin/nologin [root@centos7 Packages]# groups natasha harry sarah natasha : natasha admins harry : harry admins sarah : sarah
-
其他参考
newusers passwd格式文件:批量创建用户
chpasswd :批量修改用户口令
#----------------------------------------------------------------------------- # 批量创建用户:newusers filename #----------------------------------------------------------------------------- [root@centos7 testdir]# cat user.txt hehe:x:2000:2000::/home/hehe:/bin/bash hehe2:x:2000:2000::/home/hehe2:/bin/bash hehe3:x:2000:2000::/home/hehe3:/bin/bash hehe4:x:2000:2000::/home/hehe4:/bin/bash hehe5:x:2000:2000::/home/hehe5:/bin/bash [root@centos7 testdir]# newusers user.txt #----------------------------------------------------------------------------- # 批量设定密码:chpasswd # 1) cat passwdfile | chpasswd # 2) echo mage:centos | chpasswd # 3) echo centos | passwd --stdin mage &> /dev/null #----------------------------------------------------------------------------- [root@centos7 testdir]# cat passwd.txt hehe:123456 hehe2:123456 hehe3:123456 hehe4:123456 hehe5:123456 [root@centos7 testdir]# cat passwd.txt | chpasswd #----------------------------------------------------------------------------- # 拷贝默认配置文件等: # 1) cp -r /etc/skel/.[^.]* /path/to/homedir # 2) cp -r `ls -A` /path/to/homedir (这种方法要求用户当前处在/etc/skel) # 3) cp -r /etc/skel/. /path/to/homedir (注意/etc/skel/.和 /etc/skel/.*的差异) #----------------------------------------------------------------------------- [root@centos7 testdir]# cd /etc/skel [root@centos7 skel]# ls -a . .. .bash_logout .bash_profile .bashrc .mozilla [root@centos7 skel]# ls /home gentoo harry hehe hehe2 hehe3 hehe4 hehe5 liang natasha sarah [root@centos7 skel]# cp -r /etc/skel/.[^.]* /home/hehe [root@centos7 skel]# cp -r /etc/skel/.[^.]* /home/hehe2 [root@centos7 skel]# cp -r /etc/skel/.[^.]* /home/hehe3 [root@centos7 skel]# cp -r /etc/skel/.[^.]* /home/hehe4 [root@centos7 skel]# cp -r /etc/skel/.[^.]* /home/hehe5 [root@centos7 skel]# ls -a /home/hehe3 . .. .bash_logout .bash_profile .bashrc .mozilla
usermod
-
语法
usermod [OPTION] login
-
参数
header 1 | header 2 |
---|---|
-a | 新增附加组 |
-u UID | 新UID |
-g GID | 新基本组 |
-G GROUP1[,GROUP2,…[,GROUPN]]] | 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append; |
-s SHELL | 新的默认SHELL; |
-c 'COMMENT' | 新的注释信息; |
-d HOME | 新家目录不会自动创建,原家目录中的文件不会同时移动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m选项 |
-l login_name | 新的名字; |
-L | lock指定用户,在/etc/shadow 密码栏的增加 ! |
-U | unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉 |
-e YYYY-MM-DD | 指明用户账号过期日期; |
-f INACTIVE | 设定非活动期限; |
-
示例
#----------------------------------------------------------------------------- # 修改hehe: # 1)设定UID=20000, 主组=liang,附加组=bin,root,shell=/bin/csh # 2)自动创建家目录=/testdir/hehedir,并移动其下文件 # 3)重命名username=newhehe,增加备注=hehe test # 4)设定帐号过期时间=2017-08-01,非活动时间=10天 #----------------------------------------------------------------------------- [root@centos7 skel]# getent passwd hehe hehe:x:2000:2000::/home/hehe:/bin/bash [root@centos7 skel]# usermod -u 20000 -g liang -G bin,root -s /bin/csh -d /testdir/hehedir -m -c "hehe test" -l newhehe -e 2017-08-01 -f 10 hehe [root@centos7 skel]# getent passwd newhehe newhehe:x:20000:1000:hehe test:/testdir/hehedir:/bin/csh [root@centos7 skel]# getent shadow newhehe newhehe:$6$.VWAU/eiQyR/M$vn/bC13Qyy……lLet0wV4BNzhfQ/:17014:0:99999:7:10:17379: [root@centos7 skel]# cd /testdir/hehedir [root@centos7 hehedir]# ls -a /testdir/hehedir . .bash_history .bash_profile .cache .mozilla .. .bash_logout .bashrc .config [root@centos7 hehedir]# ll /testdir total 2 -rw-r--r--. 1 root root 64 Aug 1 16:56 passwd.txt -rw-r--r--. 1 root root 203 Aug 1 17:01 user.txt #----------------------------------------------------------------------------- # 为用户newhehe新增附加组:bin,root #----------------------------------------------------------------------------- [root@centos7 hehedir]# groups newhehe newhehe : liang ftp [root@centos7 hehedir]# usermod -aG bin,root newhehe [root@centos7 hehedir]# groups newhehe newhehe : liang root bin ftp #----------------------------------------------------------------------------- # 清空sarah的附加组 #----------------------------------------------------------------------------- [root@centos7 hehedir]# usermod -G "" sarah [root@centos7 hehedir]# usermod -G sarah sarah
userdel
-
语法
userdel [OPTION]… login
-
参数
-r: 删除用户家目录;
-
示例
[root@centos7 hehedir]# userdel -r natasha [root@centos7 hehedir]# ls /homegentoo harry hehe2 hehe3 hehe4 hehe5 liang sarah [root@centos7 hehedir]# ll /var/spool/mail/ total 76 -rw-rw----. 1 gentoo mail 0 Aug 1 16:08 gentoo -rw-rw----. 1 harry mail 0 Aug 1 16:13 harry -rw-rw----. 1 liang mail 628 Jul 31 23:11 liang -rw-------. 1 root mail 71445 Jul 22 10:25 root -rw-rw----. 1 rpc mail 0 Jul 21 17:34 rpc -rw-rw----. 1 sarah mail 0 Aug 1 16:15 sarah
id 查看用户相关的ID信息
-
用法
id [OPTION]… [USER]
-
参数
参数 | 说明 |
---|---|
-u | UID |
-g | GID |
-G | Groups |
-n | Name |
-
示例
[root@localhost ~]# groups bin bin : bin daemon sys [root@localhost ~]# id bin uid=1(bin) gid=1(bin) groups=1(bin),2(daemon),3(sys)
su 用户切换(switch user)
-
使用说明
su命令使用户可以切换用户和组ID来执行命令。
su不加参数默认切换至root。
为了向后兼容,su默认不会改变用户当前目录,只会改变环境变量:HOME, SHELL, 如果目标用户不是root也会改变LOGNAME 和 USER。
强烈建议所有切换均使用 su – 以避免复杂环境的副作用。
-
参数说明
参数 | 使用说明 |
---|---|
-c command | 切换用户后执行command |
-, -l, –login | 近似真正登录,会重置环境变量:HOME,SHELL,USER,LOGNAME,PATH,同时会切换到用户家目录 |
-
配置文件
/etc/nologin : 若要限制除管理员外的普通用户登录系统,则可以创建该文件(V6 & V7) /run/nologin : V7
[root@localhost ~]# touch /etc/nologin [root@centos7 ~]# echo "The system is maintaining. Try again 2h later." >> /run/nologin [root@centos7 ~]# rm -rf /etc/nologin [root@centos7 ~]# touch /run/nologin [root@centos7 ~]# echo "The system is maintaining. Try again 2h later." >> /run/nologin [root@centos7 ~]# rm -rf /run/nologin
-
示例
#----------------------------------------------------------------------------- # 1. su username:切换后查看环境变量,PATH及当前目录保持原用户设定 # 2. su - username:切换后查看环境变量,PATH及当前目录均切换至当前用户的设定 # 3. id 、who 均显示当前切换后的用户信息 #----------------------------------------------------------------------------- [root@localhost testdir]# su liang ### su liang 不完全切换至liang用户 [liang@localhost testdir]$ id uid=500(liang) gid=501(liang) groups=501(liang) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liang@localhost testdir]$ whoami liang [root@localhost testdir]# su - liang ### su - liang 完全切换至liang用户 [liang@localhost ~]$ id uid=500(liang) gid=501(liang) groups=501(liang) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liang@localhost ~]$ whoami liang #----------------------------------------------------------------------------- # 1. su username:切换后查看环境变量,PATH及当前目录保持原用户设定 # 2. su - username:切换后查看环境变量,PATH及当前目录均切换至当前用户的设定 # 3. id 、who 均显示当前切换后的用户信息 #----------------------------------------------------------------------------- [liang@localhost testdir]$ echo -e "$HOME \n$SHELL \n$USER \n$LOGNAME \n$PATH" ### 从root 不完全切换su liang 之后查看环境变量 /home/liang /bin/csh liang liang /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@localhost testdir]# echo -e "$HOME \n$SHELL \n$USER \n$LOGNAME \n$PATH" ### 回到 root 查看环境变量 /root /bin/bash root root /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [liang@localhost ~]$ echo -e "$HOME \n$SHELL \n$USER \n$LOGNAME \n$PATH" ### 从root 完全切换 su liang 后查看环境变量 /home/liang /bin/csh liang liang /usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin #----------------------------------------------------------------------------- # 4. su :不完全切换,使用 w、who、finger 无法看到该登录用户,但查看系统进程可以发现切换后用户发起的进程, #----------------------------------------------------------------------------- [liang@localhost testdir]$ w ### 不完全切换后,w查看用户信息 21:00:31 up 15:17, 3 users, load average: 0.31, 0.40, 0.38USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 :0 Tue16 28:32m 4.09s 4.09s /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var root pts/0 10.1.250.53 16:22 0.00s 0.20s 0.03s w john tty7 :1 Tue16 28:32m 6.49s 0.47s pam: gdm-password [liang@localhost ~]$ w ### 完全切换后,w查看用户信息 21:05:02 up 15:22, 3 users, load average: 0.01, 0.19, 0.30USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 :0 Tue16 28:36m 4.09s 4.09s /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var root pts/0 10.1.250.53 16:22 0.00s 0.17s 0.00s w john tty7 :1 Tue16 28:36m 6.50s 0.47s pam: gdm-password [liang@localhost testdir]$ who ### 不完全切换后,who查看登录用户信息root tty1 2016-08-02 16:28 (:0) root pts/0 2016-08-03 16:22 (10.1.250.53) john tty7 2016-08-02 16:36 (:1) [liang@localhost ~]$ who ### 完全切换后,who查看登录用户信息root tty1 2016-08-02 16:28 (:0) root pts/0 2016-08-03 16:22 (10.1.250.53) john tty7 2016-08-02 16:36 (:1) [liang@centos7 root]$ finger ### 不完全切换后,finger查看登录用户信息Login Name Tty Idle Login Time Office Office Phone Host root root *:0 Aug 2 10:01 (:0) root root pts/0 Aug 4 09:11 (10.1.250.53) root root pts/1 42 Aug 4 09:11 (10.1.250.53) [liang@centos7 ~]$ finger ### 完全切换后,finger查看登录用户信息Login Name Tty Idle Login Time Office Office Phone Host root root *:0 Aug 2 10:01 (:0) root root pts/0 Aug 4 09:11 (10.1.250.53) root root pts/1 42 Aug 4 09:11 (10.1.250.53) [liang@localhost testdir]$ ps aux | grep ps ### 不完全切换后,查看系统进程root 64 0.0 0.0 0 0 ? S 05:42 0:00 [kpsmoused] root 2247 0.0 0.1 189124 3504 ? Ss 05:43 0:00 cupsd -C /etc/cups/cupsd.conf liang 7856 0.0 0.0 110248 1148 pts/0 R+ 21:00 0:00 ps aux liang 7857 0.0 0.0 103320 856 pts/0 S+ 21:00 0:00 grep ps [liang@localhost ~]$ ps aux |grep ps ### 完全切换后,查看系统进程root 64 0.0 0.0 0 0 ? S 05:42 0:00 [kpsmoused] root 2247 0.0 0.1 189124 3504 ? Ss 05:43 0:00 cupsd -C /etc/cups/cupsd.conf liang 7907 0.0 0.0 110244 1148 pts/0 R+ 21:04 0:00 ps aux liang 7908 0.0 0.0 103320 856 pts/0 S+ 21:04 0:00 grep ps #----------------------------------------------------------------------------- # 5. su username -c 'COMMAND' : 使用liang身份执行COMMAND #----------------------------------------------------------------------------- [root@centos7 ~]# su - liang -c 'echo $SHELL'/bin/bash [root@centos7 ~]# #----------------------------------------------------------------------------- # 6. 在su 命令中,单引号 与 双引号 的差异 #----------------------------------------------------------------------------- [root@centos7 ~]# su - liang -c 'echo $USER' liang [root@centos7 ~]# su - liang -c "echo $USER" root
passwd
-
语法说明
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]
-
参数说明
参数 | 使用说明 |
---|---|
-l | 锁定指定用户 |
-u | 解锁指定用户 |
-e | 强制用户下次登录修改密码(相当于 chage -d 0 username) |
-n mindays | 指定最短使用期限 |
-x maxdays | 最大使用期限 |
-w warndays | 提前多少天开始警告 |
-i inactivedays | 非活动期限 |
–stdin | 从标准输入接收账户密码(echo "password" |
chage
设置用户密码过期信息
-
语法说明
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]
-
参数说明
参数 | 使用说明 |
---|---|
-d LAST_DAY | 设定密码最后更改时间(0:强制用户下次登录必须修改密码) |
-E EXPIRE_DATE | 设定用户帐号不可用的日期(-1:去掉账户的expiration date) |
-I INACTIVE | 指定用户密码过期后多久帐号将被锁定(-1:去掉账户的inactivity) |
-l | 最大使用期限 |
-m MIN_DAYS | 设定多少天后用户可以修改密码(0:用户可以随时修改密码) |
-M MAX_DAYS | 设定密码最大有效天数(若 MAX_DAYS+LAST_DAY < CURRENT_DAY,要求用户在使用账户前即更改密码;-1 清楚验证密码有效时间) |
-W WARN_DAYS | 设定密码过期日多少天之前提醒用户修改 |
-
示例
#----------------------------------------------------------------------------- # /etc/shadow 格式: # loginName:password:last change:min change age:max useage:warning period:inactivity period:expiration date:reserve filed #----------------------------------------------------------------------------- [root@centos7 ~]# getent shadow wangcai ### wangcai 原始信息 wangcai:!!:0:0:99999:7::: #----------------------------------------------------------------------------- # 1)chage -d 'YYYY-MM-DD'|DAYS USERNAME:设定密码最后更改时间(0:强制用户下次登录必须修改密码) #----------------------------------------------------------------------------- [root@centos7 ~]# chage -d '2016-08-01' wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:0:99999:7::: ### 从1970-01-01后17014天 #----------------------------------------------------------------------------- # 2)chage -E 'YYYY-MM-DD'|DAYS USERNAME:设定用户帐号不可用的日期(-1:去掉账户的expiration date) #----------------------------------------------------------------------------- [root@centos7 ~]# chage -E '2017-08-01' wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:0:99999:7::17379: #----------------------------------------------------------------------------- # 3)chage -I DAYS USERNAME:指定用户密码过期后多久帐号将被锁定(-1:去掉账户的inactivity) #----------------------------------------------------------------------------- [root@centos7 ~]# chage -I 14 wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:0:99999:7:14:17379: #----------------------------------------------------------------------------- # 4)chage -l USERNAME:列示账户期限信息 #----------------------------------------------------------------------------- [root@centos7 ~]# chage -l wangcai Last password change : Aug 01, 2016 Password expires : never Password inactive: never Account expires: Aug 01, 2017 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires: 7 #----------------------------------------------------------------------------- # 4)chage -m DAYS USERNAME:设定多少天后用户可以修改密码(0:用户可以随时修改密码) #----------------------------------------------------------------------------- [root@centos7 ~]# chage -m 3 wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:3:99999:7:14:17379: #----------------------------------------------------------------------------- # 5)chage -M DAYS USERNAME:设定密码最大有效天数(若 MAX_DAYS+LAST_DAY<CURRENT_DAY,要求用户在使用账户前即更改密码;-1 清楚验证密码有效时间) #----------------------------------------------------------------------------- [root@centos7 ~]# chage -M 365 wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:3:365:7:14:17379: #----------------------------------------------------------------------------- # 6)chage -W DAYS USERNAME:设定密码过期日多少天之前提醒用户修改 #----------------------------------------------------------------------------- [root@centos7 ~]# chage -W 15 wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:3:365:15:14:17379: #----------------------------------------------------------------------------- # 7)清除设定:chage -E -1 -I -1 -m 0 -M -1 wangcai #----------------------------------------------------------------------------- [root@centos7 ~]# chage -E -1 -I -1 -m 0 -M -1 wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:0::15::: [root@centos7 ~]# chage -l wangcaiLast password change : Aug 01, 2016Password expires : neverPassword inactive : neverAccount expires : neverMinimum number of days between password change : 0Maximum number of days between password change : -1Number of days of warning before password expires : 15
groupadd
-
语法格式
groupadd [OPTION]... group_name
-
参数说明
参数 | 使用说明 |
---|---|
-g, –gid GID | 设定GID(非负整数),仅当-o配合时允许重复使用,否则唯一 |
-K, –key KEY=VALUE | 修改/etc/login.defs的设定(如GID_MIN, GID_MAX),格式:-K GID_MIN=100 -K GID_MAX=499 |
-o, –non-unique | 允许用户创建一个同一ID的组 |
-p, –password PASSWORD | 设定组密码,改密码为已经加密过的密码(非明文) |
-r, –system | 创建系统组(范围:/etc/login.defs[SYS_GID_MIN ~ SYS_GID_MAX]) |
-
示例
#----------------------------------------------------------------------------- # /etc/group组及其属性信息 格式: groupName:passwd:GID:附加组userList #----------------------------------------------------------------------------- [root@localhost ~]# groupadd -r systestliang ### 创建系统组 [root@localhost ~]# getent group systestliang systestliang:x:491: [root@localhost ~]# usermod -G systestliang tom ### 设置用户附加组为 systestliang [root@localhost ~]# groupdel systestliang ### 删除systestliang组,不抱错 [root@localhost ~]# usermod -g systestliang tom ### 设定用户主组为 systestliang [root@localhost ~]# groupdel systestliang ### 删除组报错 groupdel: cannot remove the primary group of user 'tom' #----------------------------------------------------------------------------- # /etc/group & /etc/gshadow 中的userList指的是将该组作为附加组的成员 #----------------------------------------------------------------------------- [root@localhost ~]# usermod -g systestliang tom ### 设定用户主组为 systestliang [root@localhost ~]# getent group systestliang systestliang:x:491: [root@localhost ~]# getent gshadow systestliang systestliang:!:: [root@localhost ~]# usermod -G systestliang john ### 设置用户附加组为 systestliang [root@localhost ~]# getent gshadow systestliang systestliang:!::john [root@localhost ~]# getent group systestliang systestliang:x:491:john
groupdel
-
示例
#----------------------------------------------------------------------------- # 删除组时,若组为某用户的主组则不可删除,需清楚后再删;若组内有附加成员,则可删 #----------------------------------------------------------------------------- [root@localhost ~]# usermod -G systestliang tom ### 设置用户附加组为 systestliang [root@localhost ~]# groupdel systestliang ### 删除systestliang组,不抱错 [root@localhost ~]# usermod -g systestliang tom ### 设定用户主组为 systestliang [root@localhost ~]# groupdel systestliang ### 删除组报错 groupdel: cannot remove the primary group of user 'tom'
groupmod
-
语法格式
groupmod [options] GROUP
-
参数说明
参数 | 使用说明 |
---|---|
-g, –gid GID | 修改GID(非负整数),仅当-o配合时允许重复使用,否则唯一 |
-n, –new-name NEW_GROUP | 修改组名 |
-o, –non-unique | 允许修改组ID时,使用相同的GID |
-p, –password PASSWORD | 修改组密码,改密码为已经加密过的密码(非明文) |
gpasswd
-
语法格式
gpasswd [OPTION] GROUP
-
参数说明
参数 | 使用说明 |
---|---|
-a user | 将user添加至指定组中; |
-d user | 从指定组中移除用户user |
-A user1,user2,… | 设置有管理权限的用户列表 |
-
参考命令
newgrp Groupname:临时切换基本组,如果用户不属于该组,则需要组密码
[alice@localhost ~]$ newgrp tomPassword: Invalid password.
groupmems
-
语法格式
groupmems [options] [action]
-
参数说明
options: -g, --group groupname 更改为指定组 (只有root) Actions: -a, --add username 指定用户加入组 -d, --delete username 从组中删除用户 -p, --purge 从组中清除所有成员 -l, --list 显示组成员列表
-
示例
[root@localhost ~]# groupmems -l -g bin ### 列示组用户成员 bin daemon user2 [root@localhost ~]# getent group bin bin:x:1:bin,daemon,user2 [root@localhost ~]# groupmems -g bin -a john ### 向组添加成员 [root@localhost ~]# groupmems -l -g bin ### 列示组用户成员 bin daemon user2 john [root@localhost ~]# getent group bin bin:x:1:bin,daemon,user2,john
groups
-
语法格式
groups [OPTION].[USERNAME]… 查看用户所属组列表
-
示例
[root@localhost ~]# groups binbin : bin daemon sys
其他命令(chfn、chsh、finger、newgrp、vipw、vigr、pwck、grpck、strace)
-
示例
#----------------------------------------------------------------------------- # chfn username: 修改用户备注 #----------------------------------------------------------------------------- [root@centos7 ~]# chfn wangcai Changing finger information for wangcai. Name []: wangcai Office []: tiantang Office Phone []: 110 Home Phone []: 120 Finger information changed. #----------------------------------------------------------------------------- # chsh -s SHELL username: 修改用户shell #----------------------------------------------------------------------------- [root@centos7 ~]# chsh -s /bin/csh wangcai Changing shell for wangcai.Shell changed. #----------------------------------------------------------------------------- # finger username: 查看用户信息 #----------------------------------------------------------------------------- [root@centos7 ~]# getent passwd wangcai wangcai:x:1001:1001:wangcai,tiantang,110,120:/home/wangcai:/bin/csh [root@centos7 ~]# finger wangcai Login: wangcai Name: wangcai Directory: /home/wangcai Shell: /bin/cshOffice: tiantang, 110 Home Phone: 120 Last login Thu Aug 4 11:06 (CST) on pts/0No mail.No Plan. #----------------------------------------------------------------------------- # vipw == vi /etc/passwd :若要直接修改/etc/passwd,建议使用vipw,修改后会自动检查格式是否正确 # vigr == vi /etc/group :若要直接修改/etc/group ,建议使用vigr,修改后会自动检查格式是否正确 # pwck (password check):检查/etc/passwd文件 # grpck (group check) :检查/etc/group文件 #----------------------------------------------------------------------------- [root@localhost Packages]# pwck user 'adm': directory '/var/adm' does not exist user 'uucp': directory '/var/spool/uucp' does not exist user 'gopher': directory '/var/gopher' does not exist user 'ftp': directory '/var/ftp' does not exist user 'avahi-autoipd': directory '/var/lib/avahi-autoipd' does not exist user 'saslauth': directory '/var/empty/saslauth' does not exist user 'pulse': directory '/var/run/pulse' does not exist pwck: no changes [root@localhost Packages]# grpck group liang has an entry in /etc/gshadow, but its password field in /etc/group is not set to 'x' grpck: no changes #----------------------------------------------------------------------------- # strace:跟踪命令执行过程 #----------------------------------------------------------------------------- [root@centos7 hehedir]# strace groupmems -l -g sarah
原创文章,作者:taobaibai,如若转载,请注明出处:http://www.178linux.com/31286