linux用户,组及权限管理
本博客详解命令如下:
useradd, userdel,usermod, passwd, chage, groupadd, groupdel, groupmod, gpasswd ,newgrp, chsh, id, su, chmod, chowm, chgrp, umask, install, mktemp
用户,组,权限管理
用户标示:userID=UID
用16位二进制标示:0-65535
管理员:0
普通用户:1-65535
系统用户:1-499(centos6),1-999(centos7)
登陆用户:500-60000(centos6),1000-60000(centos7)
名称解析:名称转换,根据名称解析库进行/etc/passwd 即username <–> UID
进程以其发起者的身份运行,进程对文件的访问权限,取决于发起此进程的用户的权限
为了让后台进程或服务进程以非管理员的身份运行,通常需要维持创建多个普通用户,这类用户从不用登陆系统
组标示:groupID=GID
组类别1:
管理员组:0
普通用户组:1-65535
系统用户组:1-499(centos6),1-999(centos7)
登陆用户组:500-60000(centos6),1000-60000(centos7)
名称解析:groupname<–>GID,解析库:/etc/group
组类别2
用户基本组
用户附加组
组类别3
私有组:组名同用户,且只包含一个用户
公共组:组内包含了多个用户
用户信息的存储位置:
/etc/passwd:用户信息库
具体查看/etc/passwd的方法:
[root@yph7 ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
[root@yph7 ~]# man 5 passwd
具体内容如下:
name:passwd:UID:GID:GECOS:directory:shell
name :用户名
passwd:加密的密码,或者占位符x
UID:用户ID
GID:用户所属组的ID
GECOS:注释信息
dircotory:用户的家目录
shell:用户的默认shell
下行是以用户breeze为例查看得的信息
breeze:x:1004:1004::/home/breeze:/bin/bash
/etc/shadow:
可用 命令“man 5 shadow”查看详细解释信息
此文件保存用户的密码的相关信息:以冒号隔开。下面以用户breeze的密码为例:
breeze:$6$9lM/L.1L$NIV.GqNo5KnzuWsPu5dTQQuESC/MW6fgBzbss7YdbcWDx8Q6OBYZ9nPbnmib7UR9tH0G3U6WLcHbt.wsrk9oc/:16778:0:99999:7:5:88888:
用户名:breeze
加密后的密码:
$6$9lM/L.1L$NIV.GqNo5KnzuWsPu5dTQQuESC/MW6fgBzbss7YdbcWDx8Q6OBYZ9nPbnmib7UR9tH0G3U6WLcHbt. wsrk9oc/
前两个$之间的6表示加密码类型。6表示sha512sum方式加密。第二第三个$之间的9lM/L.1L表示加密 时添加的随机数salt。最后面的一串代码表示加密后的密码串
上一次修改密码的时间:16778,指自从1970年01月01号到上次修改密码之间的天数
最短使用期限:0表示不限制
最长使用期限:99999 表示不限时间
警告期:7 表示在密码过期前7天开始警告你修改密码
非活动期限:5 表示密码过期5之内不修改密码不能再登陆系统,到时只能找管理员解锁
账户过期期限:指从1970-01-01号开始,88888天后过户过期。此不同密码过期,账户过期就不能再登陆
保留字段:此字段暂时没定义信息
/etc/group:
存放组的相关信息。
可用 命令“man 5 group”查看详细解释信息
group_name:passwd :GID:user_list
group_name:组的名字
passwd:组的密码
GID:组ID
user_list:该组的用户成员,以此组为附加组的用户用户列表
/etc/gshadow:
可用 命令“man 5 gshadow”查看详细信息
存放组的相关信息,下面以组mygroup为例:
mygroup:$6$0.CRmuyJ$3nns…..xWLDZqla/:mysql5:mysql5,mysql6
组名:mygrp
密码:$6$0.CRmuyJ$3nns…..xWLDZqla/ 为该组加密后的组密码,由于过长,中间省略了一部分
管理员:mysql5为该组的管理员
组成员:mysql5和mysql6两个用户以该组为附加组
再次强调一遍:这四个文件的内容代表什么意思,请用"man 5 [] "查看
用户密码使用策略:
1、使用随机密码
2、最短长度大于等于8位
3、至少使用大、小写字母,数字,标点四类符号中的三类
4、定期更换。
加密算法:
对称加密:加密和解密使用同一个密码
非对称加密:加密和解密使用一对秘钥
公钥:public key
私钥:private key
单向加密:只能加密不能解密,提取数据特征码(用人做出指纹,不能拿指纹做出一个完整的人)
定长输出:长度都一样
雪崩效应:原密码微小变化引起加密后密码的绝大多数改变
下面两个例子是演示两种单向加密的雪崩效应,密码就变动一个字符,整个加密后密码几乎完全不同!
[root@yph7 tmp]# echo "stupidbid." | md5sum
b111ba6095eecab556928fb090e67bfc –
[root@yph7 tmp]# echo "stupidbird?" | md5sum
617ce59960c4a4069abca8a12591f89f –
[root@yph7 tmp]# echo "stupidbird?" | sha512sum
d55dd8d9e41e90430fb06e5d1cf71ace340c3b641a0a97abecc50590c96aae238662723ee61605ca2ca2bb90627b140e8ab5c6f83188ff61f5022809c47ec5fd –
[root@yph7 tmp]# echo "stupidbird." | sha512sum
f86276b82bd1403dbc38abf01f1b57895b942961f468b00380cb8aa438f838514aea59033c9f46ed72931a998ed81921140def986db842260dd94698b69ce328 –
单向加密工具:
1、md5sum:128位,message digest,
2、sha1sum:secure hash algorithm 160位
3、sha224sum:224 bits
4、sha256sum:256 bits
5、sha384sum: 384 bits
6、sha512sum: 512 bits
敲sha然后TAB键查看有哪些,数字代表多少位
在计算前加salt,加随机数:即使两个人密码一样,由于加了随机数,密码代码仍几乎不同
这个随机数会被系统记住以便用户登录时比对码文
下面演示一些相关的命令:
useradd:create a new useror update default new user information useradd breeze
-u,–uid UID:指定UID
[root@yph7 tmp]# useradd -u 2001 hadoop
[root@yph7 tmp]# id hadoop
uid=2001(hadoop) gid=2001(hadoop) 组=2001(hadoop)
-g,–gid group:指定基本组,写ID和组名都可以,但必须事先存在
[root@yph7 tmp]# useradd -g 2001 mysql
[root@yph7 tmp]# id mysqle
uid=2002(mysqle) gid=2001(hadoop) 组=2001(hadoop)
[root@yph7 tmp]# useradd -g breeze mysql3
[root@yph7 tmp]# id mysql3
uid=2004(mysql3) gid=1004(breeze) 组=1004(breeze)
-G,–groups group1,group2…:附加组,每个组都用逗号隔开,没有中间的空格,组必须存在
[root@yph7 tmp]# useradd -G 2002,2003 mysql5
[root@yph7 tmp]# id mysql5
uid=2005(mysql5) gid=2005(mysql5) 组=2005(mysql5),2002(mygroup),2003(hisgroup)
[root@yph7 tmp]# useradd -G mygroup,hisgroup mysql6
[root@yph7 tmp]# id mysql6
uid=2006(mysql6) gid=2006(mysql6) 组=2006(mysql6),2002(mygroup),2003(hisgroup)
-c,–comment“comment”:注释信息
[root@yph7 tmp]# useradd -c "I am foolvbird" mydql4
[root@yph7 tmp]# tail -1 /etc/passwd
mydql4:x:2007:2007:I am foolvbird:/home/mydql4:/bin/bash
-d,–home home_dir:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;
指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
/etc/skel中有用户家目录中需要的隐藏文件,一般每个用户家目录中都有,是创建用户时
自动把skel目录复制过去,并更名为用户家目录的。但如果设定已存在的目录为用户家目录,
则不会复制这些隐藏文件,原目录的数据不会丢失
[root@yph7 tmp]# ls -a /etc/skel
. .. .bash_logout .bash_profile .bashrc .mozilla
[root@yph7 tmp]# ls -a /home/breeze
. .. .bash_logout .bash_profile .bashrc .mozilla
[root@yph7 tmp]# ls /tmp/oracle1/
a_c a_d b_c b_d
[root@yph7 tmp]# useradd -d /tmp/oracle1 oracle1
-useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
[root@yph7 tmp]# ls /tmp/oracle1
a_c a_d b_c b_d
-s, –shell SHELL:指定用户默认shell,可用的shell列表存储在/etc/shells
[root@yph7 tmp]# useradd -s /sbin/nologin mysql7
[root@yph7 tmp]# tail -n 1 /etc/passwd
mysql7:x:2009:2009::/home/mysql7:/sbin/nologin
/sbin/nologin是不允许登陆的系统用户的shell
-r, –system:创建系统用户
-M,–no-create-home:不创为用户建用户主目录,即使系统在 /etc/login.defs 中的设置 (CREATE_HOME) 为 yes。
-f,–inactive:密码过期后,账户被彻底禁用之前的天数,0表示立即禁用,-1表示不用此功能,默认为-1
注意:创建用户是的诸多默认设置配置文件/etc/login.defs
-D,–defaults:显示创建用户的默认配置
[root@yph7 tmp]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes 每创建一个用户默认创建一个邮筒/var/spool/mail下
–D options:修改配置信息
–e,-f,-g,-s,
修改结果保存于/etc/default/useradd中
如果要修改这些配置信息,就用如下方式
[root@yph7 tmp]# useradd -D -s /bin/tcsh
[root@yph7 tmp]# useradd mysql8
[root@yph7 tmp]# tail -n 1 /etc/passwd
mysql8:x:2010:2010::/home/mysql8:/bin/tcsh
[root@yph7 tmp]# ls /var/spool/mail
bree flimmer gentoo mageedu mysql2 mysql5 mysql7 mysqle rpc
breeze flivfox hadoop mydql4 mysql3 mysql6 mysql8 oracle1 slackware
usermod: modify a user account id 查看
-u, –uid :修改用户的ID
[root@yph7 tmp]# id hadoop
uid=2001(hadoop) gid=2001(hadoop) 组=2001(hadoop)
[root@yph7 tmp]# usermod -u 2051 hadoop
[root@yph7 tmp]# id hadoop
uid=2051(hadoop) gid=2001(hadoop) 组=2001(hadoop)
-g,–gid :修改用户基本组
[root@yph7 tmp]# usermod -g breeze hadoop; id hadoop
uid=2051(hadoop) gid=1004(breeze) 组=1004(breeze)
-G,–groups:修改附加组,原来的附加组会被覆盖
[root@yph7 tmp]# usermod -G flivfox hadoop ;id hadoop
uid=2051(hadoop) gid=1004(breeze) 组=1004(breeze),1005(flivfox)
[root@yph7 tmp]# usermod -G flimmer hadoop;id hadoop
uid=2051(hadoop) gid=1004(breeze) 组=1004(breeze),1006(flimmer)
-a,–append:附加,只能与-G一同使用,追加附加组,且一次只能增加一个
usermod -a -G
[root@yph7 tmp]# usermod -a -G flivfox hadoop ;idhadoop
uid=2051(hadoop) gid=1004(breeze) 组=1004(breeze),1005(flivfox),1006(flimmer)
注意:-a必须写在-G 前面,
-c,–comment 修改注释信息
[root@yph7 tmp]# usermod -c "I am a stupid bird"mysql8
mysql8:x:2010:2010:I am a stupid bird:/home/mysql8:/bin/tcsh
-d,–home DIR:修改家目录,但用户原有文件不会移动至新目录,而且用户仍然受新家目录权限的限制
[root@yph7 ~]# useradd gentoo
[root@yph7 ~]# ll -d /tmp/gentoo
drwxr-xr-x. 2 root root 6 Dec 13 17:16 /tmp/gentoo
[root@yph7 ~]# usermod -d /tmp/gentoo gentoo
[root@yph7 ~]# su -c "cd;pwd" gentoo
/tmp/gentoo
[root@yph7 ~]# ls -a /tmp/gentoo
. ..
[root@yph7 ~]# ls -a /home/gentoo
. .. .bash_logout .bash_profile .bashrc .mozilla
-m,–move-home:与-d起使用,把原家目录剪切至新家目录,新家目录事先不能存在
[root@yph7 ~]# ll /var/tmp/
drwxr-xr-x. 2 abrt abrt 6 Mar 24 2015 abrt
[root@yph7 ~]# usermod -m -d /var/tmp/gentoo gentoo
[root@yph7 ~]# ls -a /var/tmp/gentoo
. .. .bash_logout .bash_profile .bashrc .mozilla
[root@yph7 ~]# ll -a /home/gentoo
ls: cannot access /home/gentoo: No such file or directory
-l,–login NEW_LOGIN:修改用户名
[root@yph7 tmp]# usermod -l oracle2 mysql8
[root@yph7 tmp]# id oracle2
uid=2010(oracle2) gid=2010(mysql8) 组=2010(mysql8)
-s,–shell SHELL:修改用户的默认shell;
[root@yph7 tmp]# tail -1 /etc/passwd
oracle2:x:2010:2010:I am a stupid bird:/home/mysql8:/bin/tcsh
[root@yph7 tmp]# usermod -s /bin/bash oracle2
[root@yph7 tmp]# tail -n 1 /etc/passwd
oracle2:x:2010:2010:I am a stupid bird:/home/mysql8:/bin/bash
-L,–lock:锁定用户密码,禁止登陆,即在用户原来的密码字符串之前添加一个"!";
[root@yph7 ~]# usermod -L oracle2
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:!$6$UNmW9Hyl$TLLieo9TNV5UTTKnu4itP3gZvax.tz66uPw/BjBg6GzpXr2x/Ir5ggtPrhniod5PzJRh6bE1FSvkqzCpRhcKC.:16781:0:99999:7:::
-U,–unlock:解锁用户密码,去掉!
[root@yph7 ~]# usermod -U oracle2
[root@yph7 ~]# tail -n 1 /etc/shadow
oracle2:$6$UNmW9Hyl$TLLieo9TNV5UTTKnu4itP3gZvax.tz66uPw/BjBg6GzpXr2x/Ir5ggtPrhniod5PzJRh6bE1FSvkqzCpRhcKC.:16781:0:99999:7:::
userdel:– delete a user accountand related files
删除用户默认删除基本组
-r,–remove:删除用户时一并删除用户家目录
[root@yph7 ~]# ls /home
bree flimmer gentoo mageedu mysql2 mysql5 mysql7 mysqle
[root@yph7 ~]# userdel -r mysql7 ;id mysql7
id: mysql7: no such user
[root@yph7 ~]# ls /home
bree flimmer gentoo mageedu mysql2 mysql5 mysqle
练习1:创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001);
[root@yph7 tmp]# groupadd -g 5000 distro
[root@yph7 tmp]# groupadd -g 5001 peguin
[root@yph7 tmp]# tail -2 /etc/group
distro:x:5000:
peguin:x:5001:
[root@yph7 tmp]# useradd -u 4001 -G distro,peguin gentoo
[root@yph7 tmp]# id gentoo
uid=4001(gentoo) gid=4001(gentoo)groups=4001(gentoo),5000(distro),5001(peguin)
练习2:创建用户fedora,其注释信息为"Fedora Core",默认shell为/bin/tcsh;
[root@yph7 tmp]# useradd -c "Fedora Core" -s/bin/tcsh fedora
[root@yph7 tmp]# tail -1 /etc/passwd
fedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh
练习3:修改gentoo用户的家目录为/var/tmp/gentoo;要求其原有文件仍能被用户访问;
练习4:为gentoo新增附加组;
[root@yph7 tmp]# groupadd netadmin
[root@yph7 tmp]# usermod -a -G netadmin gentoo
[root@yph7 tmp]# id gentoo
uid=4001(gentoo) gid=4001(gentoo)groups=4001(gentoo),5000(distro),5001(peguin),5002(netadmin)
passwd:– update user'sauthentication tokens
(1)passwd直接修改自己的密码
[flimmer@yph7 ~]$ passwd
Changing password for user flimmer.
Changing password for flimmer.
(current) UNIX password:
(2)passwd username ,管理员修改其他用户密码
[root@yph7 ~]# passwd hadoop
Changing password for user hadoop.
New password:
-l,-u:lock,unlock锁定和解锁用户密码
[root@yph7 ~]# passwd -l oracle2
Locking password for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:!!$6$UNmW9Hyl$TLLieo9TNV5UTTKnu4itP3gZvax.tz66uPw/BjBg6GzpXr2x/Ir5ggtPrhniod5PzJRh6bE1FSvkqzCpRhcKC.:16781:0:99999:7:::
[root@yph7 ~]# passwd -u oracle2
Unlocking password for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:$6$UNmW9Hyl$TLLieo9TNV5UTTKnu4itP3gZvax.tz66uPw/BjBg6GzpXr2x/Ir5ggtPrhniod5PzJRh6bE1FSvkqzCpRhcKC.:16781:0:99999:7:::
-d:–delete清除用户密码
[root@yph7 ~]# passwd -d oracle2
Removing password for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2::16781:0:99999:7:::
此时oracle2不用输入密码就能登录
[flimmer@yph7 ~]$ su – oracle2
[oracle2@yph7 ~]$
-e –expire:使期满,必须修改密码才能登录
[root@yph7 ~]# passwd -e oracle2
Expiring password for user oracle2.
passwd: Success
然后该用户就无法登录了,只有先修改密码
[oracle2@yph7 ~]$ su – oracle2
密码:
您需要立即更改密码(root 强制)
为 oracle2 更改STRESS 密码。
(当前)UNIX 密码:
-i,–inactive DAYS:非活动期限,不改密码不能登录,超期限就锁定
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:$6$Odji/iFz$OfTrucTm……..rfJ.:16781:0:99999:7:::
[root@yph7 ~]# passwd -i 10 oracle2
Adjusting aging data for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:$6$Odji/iFz$OfTrucTm……..rfJ.:16781:0:99999:7:10::
-n,–minimum DAYS,最小使用期限
-x,–maximum DAYS最大使用期限
[root@yph7 ~]# passwd -n 3 -x 30 oracle2
Adjusting aging data for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:$6$Odji/iFz$OfTrucTm……..rfJ.:16781:3:30:7:10::
-w,–warning DAYS,提前多少天警告,警告期限
[root@yph7 ~]# passwd -w 5 oracle2
Adjusting aging data for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:$6$Odji/iFz$OfTrucTm……..rfJ.:16781:9:30:5:10::
–stdin
echo "string" | passwd –stdin breeze 只输入一次就能修改密码成 mageedu
[root@yph7 ~]# echo "mageedu" | passwd –stdin oracle2 &> /dev/null ;echo $?
0
[root@yph7 ~]#
-S,–state:This will output a short information about thestatus of the password for a given account
可用来代替/etc/shadow查看密码状态
[root@yph7 tmp]# passwd -S redhat
redhat LK 2015-12-13 0 99999 7 9 (Password locked.)
[root@yph7 tmp]# tail -1 /etc/shadow
redhat:!!:16782:0:99999:7:9::
[root@yph7 tmp]# echo "redhat" | passwd –stdinredhat
Changing password for user redhat.
passwd: all authentication tokens updated successfully.
[root@yph7 tmp]# passwd -S redhat
redhat PS 2015-12-13 0 99999 7 9 (Password set, SHA512 crypt.)
[root@yph7 tmp]# tail -1 /etc/shadow
redhat:$6$kN……x1:16782:0:99999:7:9::
chage:– change userpassword expiry information更改密码和过期信息 16778:0:99999:7:::
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ…………..E06d.Ape0:16781:0:99999:7:::
-d,–lastday:指定密码上一次最后修改的日期,可用date和days表示,结果为距离1970-01-01多少天
[root@yph7 ~]# chage -d 1998-12-12 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ………..E06d.Ape0:10572:0:99999:7:::
[root@yph7 ~]# chage -d 15000 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ………..E06d.Ape0:15000:0:99999:7:::
-m,–mindaysa:密码至少使用多久,0表示无限制
[root@yph7 ~]# chage -m 5 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ…………E06d.Ape0:15000:5:99999:7:::
-M,–maxdays:密码最多使用多久
[root@yph7 ~]# chage -M 30 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ…………E06d.Ape0:15000:5:30:7:::
-W,–warning:密码过期前多少天开始警告
[root@yph7 ~]# chage -W 9 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ………….E06d.Ape0:15000:5:30:9:::
-E,–expiredate:密码有效期到什么时候,可以是date和days,0立即过期。-1禁用此功能,永不过期
倒数第二个属性
[root@yph7 ~]# chage -E 2050-12-12 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ…………..E06d.Ape0:15000:5:30:9::29565:
[root@yph7 ~]# chage -E 88888 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ…………..E06d.Ape0:15000:5:30:9::88888:
groupadd: – create a new group
[root@yph7 ~]# groupadd stupid
[root@yph7 ~]# tail -1 /etc/group
stupid:x:2053:
-g GID:指定GID,默认上一个组加1
[root@yph7 tmp]# groupadd -g 2999 foolbird
[root@yph7 tmp]# tail -1 /etc/group
foolbird:x:2999:
-r:创建系统组
[root@yph7 tmp]# groupadd -r deepin
[root@yph7 tmp]# tail -1 /etc/group
deepin:x:991: –>组id为991 系统组id在1-999
groupdel:– delete a group删除组
[root@yph7 tmp]# groupdel awkuid
[root@yph7 tmp]# tail -1 /etc/group
foolbird:x:2999:
groupmod: – modify a groupdefinition on the system
-g GID:修改GID
[root@yph7 tmp]# groupmod -g 3333 foolbird
[root@yph7 tmp]# tail -1 /etc/group
foolbird:x:3333:
-n new_name:修改组名
[root@yph7 tmp]# groupmod -n awkuid foolbird
[root@yph7 tmp]# tail -1 /etc/group
awkuid:x:3333:
gpasswd: administer /etc/group and /etc/gshadow
给组加密码
[root@yph7 ~]# gpasswd apache
Changing the password for group apache
New Password:
-a,–addUSERNAME:向组中添加用户
[root@yph7 ~]# id flimmer
uid=1006(flimmer) gid=1006(flimmer) groups=1006(flimmer)
[root@yph7 ~]# gpasswd -a flimmer apache
Adding user flimmer to group apache
[root@yph7 ~]# id flimmer
uid=1006(flimmer) gid=1006(flimmer)groups=1006(flimmer),2011(apache)
[root@yph7 ~]# tail -1 /etc/group
stupid:x:2053:
[root@yph7 ~]# gpasswd -a flimmer stupid
正在将用户“flimmer”加入到“stupid”组中
[root@yph7 ~]# tail -1 /etc/group
stupid:x:2053:flimmer
-d,–deleteUSERNAME:从组中一出移除用户
[root@yph7 tmp]# gpasswd -d flimmer stupid
Removing user flimmer from group stupid
[root@yph7 tmp]# tail -1 /etc/group
stupid:x:2053:
[root@yph7 ~]# gpasswd -d flimmer apache
Removing user flimmer from group apache
[root@yph7 ~]# id flimmer
uid=1006(flimmer) gid=1006(flimmer) groups=1006(flimmer)
[root@yph7 ~]#
newgrp [-] GROUP:– log in to a new group临时切换基本组,id查看,exit退回原来基本组,因为创建文件权限属于基本组的
-:会模拟用户重新登录以实现重新初始化其工作环境
切换到不同的基本组,创建的文件的属主是不同的,
基本组不是谁都能进的,所以加密码
[breeze@yph7 ~]$ id -ng
breeze
[breeze@yph7 ~]$ ll
总用量 0
[breeze@yph7 ~]$ touch text;ll
总用量 0
-rw-rw-r–. 1 breeze breeze 0 12月 13 00:33 text
[breeze@yph7 ~]$
[breeze@yph7 ~]$ newgrp apache
密码:
[breeze@yph7 ~]$ id -ng
apache
[breeze@yph7 ~]$ touch txt;ll
总用量 0
-rw-rw-r–. 1 breeze breeze 0 12月 13 00:33 text
-rw-r–r–. 1 breeze apache 0 12月 13 00:34 txt
[breeze@yph7 ~]$ exit
exit
[breeze@yph7 ~]$ id -ng
breeze
但用id和id breeze查看到的基本组是不同的
[breeze@yph7 ~]$ id
uid=1004(breeze) gid=2011(apache) 组=1004(breeze),2011(apache) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[breeze@yph7 ~]$ id breeze
uid=1004(breeze) gid=1004(breeze) 组=1004(breeze)
id: – print real and effective user and group IDs显示用户真实,有效ID
[root@yph7 ~]# id hadoop
uid=2051(hadoop) gid=1004(breeze)groups=1004(breeze),1005(flivfox),1006(flimmer)
-u,–user:仅显示有效UID
[root@yph7 ~]# id -u hadoop
2051
-g,–group:基本组ID
[root@yph7 ~]# id -g hadoop
1004
-G,–groups:所属:所有组ID
[hadoop@yph7 ~]$ id -G
1004 1005 1006
-n,–name:显示组名而非ID
[hadoop@yph7 ~]$ id -nG hadoop
breeze flivfox flimmer
[hadoop@yph7 ~]$ id -nu
hadoop
[hadoop@yph7 ~]$ id -ng
breeze
[hadoop@yph7 ~]$ id -nG
breeze flivfox flimmer
su: switch user
登陆式切换:会重新读取目标用户的配置文件来重新初始化
su – breeze
su -l breeze
非登陆式切换:不会重新读取目标用户的配置文件来重新初始化
su breeze 所在目录可能是上个用户的家目录,而不是自己的
[flimmer@yph7 ~]$ su breeze
密码:
[breeze@yph7 flimmer]$
-c,command:仅以指定用户的身份执行命令,而不是登陆
su -c "whoami" breeze su -c "ls /tmp" breeze
[root@yph7 ~]# su -c "whoami" breeze
breeze
[root@yph7 ~]#
[root@yph7 ~]# su -c "touch /home/breeze/{text,txt};ls -l/home/breeze" breeze
total 0
-rw-r–r–. 1 breeze breeze 0 Dec 13 00:52 text
-rw-r–r–. 1 breeze breeze 0 Dec 13 00:52 txt
管理员切换普通用户不用密码
几个其他命令:chsh,chfn,finger,
finger breeze chsh 了解就行
[root@yph7 ~]# chsh mysql5 更改shell
Changing shell for mysql5.
New shell [/bin/bash]: /bin/tcsh
Shell changed.
[root@yph7 ~]# chfn hadoop 改写注释信息
Changing finger information for hadoop.
名称 [hadoop]: hadoop
办公 [fuck]: whitewall
办公电话 [10086]: 10086
住宅电话 [110]: 110
Finger information changed.
[root@yph7 ~]# cat /etc/passwd
………………..
hadoop:x:2051:1004:hadoop,whitewall,10086,110:/home/hadoop:/bin/bash
………………..
权限管理:
进程安全上下文:
进程文件访问权限应用模型:
进程的属主与文件属主是否相同,如果相同,则应用属主权限
否则,检查文件的属主是否属于文件的属组,如果是,则应用属主权限
否则,应用other权限
文件:
r:可获取文件数据
w:可修改文件数据
x:可将此文件运行为进程
目录:
r:可使用ls获取文件列表
w:可修改此目录下文件列表,创建、删除文件
x:可cd至此目录中,可以ls -l获取文件详细信息
w不能随便给,r,x一般都给
— 000 0; –x 001 1; -w- 010 2; r– 100 4
常用:
rw-rw-r– 664
rwxrwxr-x 775
rwxr-x— 750
rwxr-xr-x 755
三类用户:
u:属主
g:属组
o:其它用户
a: 所有用户,包含u,g和o
chmod: – change file mode bits
(1)mode表示法:便于操作所有权限位rwx
赋值表示法:u g o a
ug=r,o=
[root@yph7 tmp]# ll -d /tmp/gentoo
d———. 2 flimmer breeze 27 Dec 13 18:31 /tmp/gentoo
[root@yph7 tmp]# chmod ug=rx,o= /tmp/gshadow
[root@yph7 tmp]# ll -d /tmp/gshadow
-r-xr-x—. 1 root root 1033 Dec 14 00:29 /tmp/gshadow
授权表示法:便于操作某一位权限
ug+rx,o-
[root@yph7 tmp]# chmod u-x,o+rx /tmp/gshadow
[root@yph7 tmp]# ll -d /tmp/gshadow
-r–r-xr-x. 1 root root 1033 Dec 14 00:29 /tmp/gshadow
(2)八进制表示法:
chmod 775 /etc/text
–reference改成与某文件一样
chmod –reference=/var/log/message /etc/text
[root@yph7 ~]# ll /tmp
-rw-r–r–. 1 breeze breeze 0 Dec 13 18:15 txt
-rwxrwxrwx. 1 root root 0 Dec 13 03:08yum.1
[root@yph7 ~]# chmod –reference=/tmp/txt /tmp/yum.1
[root@yph7 ~]# ll /tmp
-rw-r–r–. 1 breeze breeze 0 Dec 13 18:15 txt
-rwxrwxrwx. 1 root root 0 Dec 13 03:08yum.1
-R,–recursive:递归修改(一般只用+、–法修改)
chmod -R g+r /tmp/sysconfig
[root@yph7 ~]# ll /tmp
drwxrwxrwx. 2 root root 6 Dec 13 17:16gentoo
drwxrwxrwx. 2 root root 6 Dec 12 20:06 ta
[root@yph7 ~]# ll -d /tmp
drwxrwxrwx. 10 root root 4096 Dec 13 18:15 /tmp
[root@yph7 ~]# chmod -R go-w /tmp
[root@yph7 ~]# ll -d /tmp
drwxr-xr-x. 10 root root 4096 Dec 13 18:15 /tmp
[root@yph7 ~]# ll /tmp
drwxr-xr-x. 2 root root 6 Dec 13 17:16gentoo
drwxr-xr-x. 2 root root 6 Dec 12 20:06 ta
chown: – change file owner and group
修改文件的属主
drwxr-xr-x. 8 root root 111 Dec 13 18:32 /tmp
[root@yph7 tmp]# chown breeze /tmp;ll -d /tmp
drwxr-xr-x. 8 breeze root 111 Dec 13 18:32 /tmp
修改文件属主和组,冒号也可用
[root@yph7 tmp]# chown flimmer.hadoop /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer hadoop 111 Dec 13 18:32 /tmp
修文件改的属组
[root@yph7 tmp]# chown .stupid /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer stupid 111 Dec 13 18:32 /tmp
-R,–recursive:递归修改,连带修改目录里所有文件
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer hadoop 111 Dec 13 18:32 /tmp
[root@yph7 tmp]# ll /tmp
drwxr-xr-x. 2 root root 27 Dec 13 18:31 gentoo
-rw-r–r–. 1 breeze breeze 0 Dec 13 18:15 txt
[root@yph7 tmp]# chown -R gentoo:apache /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 gentoo apache 111 Dec 13 18:32 /tmp
[root@yph7 tmp]# ll -R /tmp
/tmp:
total 0
drwxr-xr-x. 2 gentoo apache 27 Dec 13 18:31 gentoo
-rw-r–r–. 1 gentoo apache 0 Dec 13 18:15 txt
/tmp/gentoo:
total 0
-rw-r–r–. 1 gentoo apache 0 Dec 13 18:31 text
-rw-r–r–. 1 gentoo apache 0 Dec 13 18:31 yum
–reference:指定与某文件相同的相关属性
[root@yph7 tmp]# chown -R –reference=/home/flimmer /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer flimmer 111 Dec 13 18:32 /tmp
[root@yph7 tmp]# ll /tmp
total 0
drwxr-xr-x. 2 flimmer flimmer 27 Dec 13 18:31 gentoo
-rw-r–r–. 1 flimmer flimmer 0 Dec 13 18:15 txt
chgrp: – change group ownership修改组
[root@yph7 tmp]# chgrp oracle1 /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer oracle1 111 Dec 13 18:32 /tmp
-R;–recursive:递归修改,连带修改里面所有的目录和文件
–reference:指定与某文件相同的相关属性
[root@yph7 tmp]# chgrp -R –reference=/home/breeze /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer breeze 111 Dec 13 18:32 /tmp
[root@yph7 tmp]# ll /tmp
total 0
drwxr-xr-x. 2 flimmer breeze 27 Dec 13 18:31 gentoo
-rw-r–r–. 1 flimmer breeze 0 Dec 13 18:15 txt
注意:普通用户仅可修改属主为自己的文件的权限
[breeze@yph7 ~]$ ll
-rw-rw-r–. 1 breeze breeze 0 12月 13 06:18 text
[breeze@yph7 ~]$ chmod 777 text;ll
总用量 0
-rwxrwxrwx. 1 breeze breeze 0 12月 13 06:18 text
思考:用户对目录有写权限,但对目录下的文件没有写权限时,能否修改此文件内容?能否删除此文件?
模拟之;
[root@yph7 tmp]# ll -d /tmp
drwxrwxrwt. 9 root root 4096 Dec 13 06:32 /tmp
[root@yph7 tmp]# chown root:root /tmp/yum.1
[root@yph7 tmp]# ll tmp/yum.1
-rwxr-xr-x. 1 root root 0 Dec 13 03:08 /tmp/yum.1
切换到breeze
[breeze@yph7 tmp]$ head -2 /etc/shells | tee /tmp/yum.1
tee: /tmp/yum.1: 权限不够
/bin/sh
/bin/bash
[breeze@yph7 tmp]$ rm -rf /tmp/yum.1
rm: 无法删除"/tmp/yum.1":不允许的操作
这种情况下正常是可以删除文件但不能修改文件的。但上面演示好像不顺利,原因如下:
用root设置下权限777就好了后来发现上面的的/tmp权限为t,不是x,这是特殊权限,用户只能删除自己的文件,而不能删除其他人的
[root@yph7 tmp]# chmod 777 /tmp
[breeze@yph7 tmp]$ ll -d /tmp
drwxrwxrwx. 9 root root 4096 12月 13 07:00 /tmp
[breeze@yph7 tmp]$ ll /tmp/yum.2
———-. 1 root root 19 12月 13 07:00 /tmp/yum.2
[breeze@yph7 tmp]$ rm -rf /tmp/yum.2
[breeze@yph7 tmp]$ ll /tmp/yum.2
ls: 无法访问/tmp/yum.2:没有那个文件或目录
umask:文件权限反向掩码,遮罩码
文件:666-umask
目录:777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限,如果减得的结果中有执行权限,则需要加1
umask: 023
666-023=644 rw–w–wx
777-023=754
对于文件:666:rw-rw-rw- 023:—-w–wx 减后:rw-r–r–:644
umask命令:
umask:查看当前umask
umas kMASK:设置umask
[flimmer@yph7 ~]$ umask
0002
[flimmer@yph7 ~]$ umask 023;umask
0023
注意:此类设定仅对当前shell有效
练习:完成以下任务
1、新建系统组mariadb,新建系统用户mariadb, 属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;
[root@yph7 tmp]# groupadd -r mariadb
[root@yph7 tmp]# tail -1 /etc/group
mariadb:x:991:
[root@yph7 tmp]# useradd -r -M -g mariadb -s /sbin/nologinmariadb
[root@yph7 tmp]# tail -1 /etc/passwd
mariadb:x:994:991::/home/mariadb:/sbin/nologin
[root@yph7 tmp]# id mariadb
uid=994(mariadb) gid=991(mariadb) groups=991(mariadb)
[root@yph7 tmp]# ls /home
bree fedora flivfox hadoop mageedu mysql10 mysql3 mysql6 mysqle slackware
breeze flimmer gentoo magebird mydql4 mysql2 mysql5 mysql8 oracle1
[root@yph7 tmp]# su – mariadb
su: warning: cannot change directory to /home/mariadb: No suchfile or directory
This account is currently not available.
如果组事先存在,添加与组同名的用户默认添加不成功的
删除用户默认删除基本组
2、新建GID为5000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;
[root@yph7 tmp]# groupadd -g 5000 mageedu
groupadd: GID '5000' already exists
[root@yph7 tmp]# cat /etc/group
…….
distro:x:5000:
……..
[root@yph7 tmp]# groupmod -g 4006 distro –>修改组id
[root@yph7 tmp]# groupadd -g 5000 mageedu
[root@yph7 tmp]# tail -1 /etc/group
mageedu:x:5000:
[root@yph7 tmp]# mkdir /users
[root@yph7 users]# useradd -d /users/gentoo gentoo
[root@yph7 users]# tail -1 /etc/passwd
gentoo:x:4006:5003::/users/gentoo:/bin/bash
[root@yph7 users]# echo "gentoo" | passwd –stdingentoo
Changing password for user gentoo.
3、新建用户fedora,其家目录为/users/fedora,密码同用户名;
[root@yph7 users]# useradd -d /users/fedora fedora
Creating mailbox file: File exists
[root@yph7 users]# tail -1 /etc/passwd
fedora:x:4007:4007::/users/fedora:/bin/bash
[root@yph7 users]# echo "fedora" | passwd –stdinfedora
Changing password for user fedora.
passwd: all authentication tokens updated successfully.
4、新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;
[root@yph7 users]# useradd -d /users/www www
[root@yph7 users]# tail -1 /etc/passwd
www:x:4008:4008::/users/www:/bin/bash
[root@yph7 users]# userdel www;cd /users/www;pwd
/users/www
[root@yph7 www]# id www
id: www: no such user
5、为用户gentoo和fedora新增附加组mageedu;
[root@yph7 www]# id -nG gentoo;id -nG fedora
gentoo
fedora
[root@yph7 www]# usermod -aG mageedu gentoo
[root@yph7 www]# usermod -aG mageedu fedora
[root@yph7 www]# id -nG gentoo;id -nG fedora
gentoo mageedu
fedora mageedu
6、复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为mageedu,并让属组对目录本身拥有写权限;
[root@yph7 www]# cp -r /var/log /tmp/
[root@yph7 tmp]# chown -R .mageedu /tmp/log
[root@yph7 tmp]# chmod g+w /tmp/log
[root@yph7 tmp]# ll -d /tmp/log
drwxrwxr-x. 14 root mageedu 4096 Dec 13 22:08 /tmp/log
install命令:copyfiles and set attributes复制文件并设置属性(不能复制目录)
-m,–mode=MODE:设定目标文件权限,默认755
[root@yph7 tmp]# install -m 632 /tmp/yum.log /tmp/yum ;ll
-rw–wx-w-. 1 root root 0 12月 12 05:08 yum
-rw——-. 1 root root 0 12月 8 19:08 yum.log
-o,–owner=OWNER:设定目标文件属主
[root@yph7 tmp]# install -o flimmer /tmp/yum.log /tmp/yum.1 ;ll
-rwxr-xr-x. 1 flimmer root 0 12月 12 05:16 yum.1
-g,–group=GROUP:设定目标文件属组
[root@yph7 tmp]# install -g flimmer /tmp/yum.log /tmp/yum.2;ll
-rwxr-xr-x. 1 root flimmer 0 12月 12 05:19 yum.2
-d,–directory:创建目录
[root@yph7 tmp]# install -d /tmp/config
mktemp: create atemporary file or directory创建临时文件或目录(一段时间后会自动清除)
mktemp [OPTION]… [TEMPLATE]
[root@yph7 ~]# mktemp /tmp/a.XXXXXXXX
/tmp/a.L9fheln9
-d,–dirctory:创建临时目录,也要用x
[root@yph7 tmp]# mktemp -d /tmp/XXXXXXXX
/tmp/wf0txj7U
-u,–dry-run:虚拟创建文件,表面创建好了,其实没有。测试服务器是否能正常运行
[root@yph7 tmp]# mktemp -u /tmp/config.XXXXXX
/tmp/config.DAObQW
[root@yph7 tmp]# ls 结果发现没有这个文件
通过变量取随机数
[root@yph7 ~]# myfile=$(basename `mktemp /tmp/XXXXXXXXX )
[root@yph7 ~]# echo "$myfile"
ja9FD8QSf
注意:会将创建的临时文件名直接返回,可通过命令引用保存起来