2.linux用户管理1
来源:互联网 发布:linux view 最后一页 编辑:程序博客网 时间:2024/05/21 19:37
一. 用户管理
用户管理相关的文件
/etc/passwd --存放用户信息
/etc/shadow --存放用户密码
/etc/group --存放组信息
/etc/gshadow --存放组密码
#vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
第一列:用户名
第二列:密码 老版本这里放的就是密码,为了安全性考虑,密码放到了/etc/shadow的第二列
x代表/etc/shadow的第二列生效,去掉x就表示此用户登录的时候没有密码
第三列:uid 用户识别ID值,系统是通过这个值来确认是哪个用户
第四列:gid 组识别ID值
第五列:描述项 comment
第六列:家目录
第七个:bash 当前用户使用的bash
管理员 root uid=0
系统帐号 uid 1-499 65534
普通用户帐号 uid 500-65535(2.6.xxx的内核支持的uid数量为 2^32-1个)
id 查看当前使用用户的用户信息和组信息
#id
uid=0(root)gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
#id user1
uid=500(user1)gid=500(user1) groups=500(user1)
切换用户
su= switch user
suuser5 非完全切换 继承上一个用户的环境变量
su- user5 完全切换 不继承上一个用户的环境变量
#su - user1 --切换到user1,不需要密码
#su --切换到root,需要密码
/bin/bash 表示此用户使用bash,用户可以登录系统,可以收邮件,可以登录FTP(只要是有效的shell都可以)
/sbin/nologin 表示用户不能登录系统,可以收邮件,可以登录FTP
/bin/false 表示用户不能登录系统,可以收邮件,不能登录FTP
#cat /etc/shells
#vipw 直接打开/etc/passwd文件
小实验:
1,去掉/etc/passwd里root用户第二列的x,确认登录系统不需要密码,加回x,密码不变
2,useraddabc增加一个abc用户,passwd abc修改一个登录密码,把uid改为0,使用abc登录,会发现你其实登录的是root管理员
3,把abc用户的/bin/bash分别改成/sbin/nologin,/bin/false,然后使用su - abc来测试,发现都登录不了
---------------------------------------------------------------------
#vim /etc/shadow
root:$1$.1RfCu/n$ModWntxLJRC6SpgAXSDO81:14694:0:99999:7:::
与/etc/passwd相对应 (但这里有九列)
第一列:用户名
第二列:密码 (这里以*号开头或!开头默认是不能登陆的),加密过后的密码,使用crypt加密
第三列:上一次修改密码的时间 linux以1970年1月1日到现在的天数来算的
第四列:修改密码后几天内不允许再修改 如果这里为5,那改过密码后5天内不能再修改 0代表不限制(只对普通用户有效)
第五列:多少天内必须要求你改 99999代表不限制
第六列:过期前几天给你一个告警信息
第七列:密码过期后还给的一个宽限天数
第八列: 这里可以写一个过期天数 这里也是以1970年1月1日到现在的天数来计算的,多用于收费系统
第九列: 保留,留着以后功能扩展
用户相关的命令
useradd --增加用户,add
usermod --修改用户,modify
userdel --删除用户,delete
passwd --修改密码,password
useradd 增加一个普通用户
-c comment /etc/passwd第5列
-d home /etc/passwd第7列
-u uid /etc/passwd第3列
-g gid /etc/passwd第4列
.......... 找man
#echo $[2**32-1]
4294967295
#useradd -u 4294967295 user2 --不成功,报错
#useradd -u 4294967294 user2 --成功,这个数就是linux目前版本支持的最大uid数
#id user2
uid=4294967294(user2)gid=502(user2) groups=502(user2)
usermod修改一个用户信息,参数基本与useradd相同
#usermod -u 502 user2
#id user2
uid=502(user2)gid=502(user2) groups=502(user2)
创建一个用户时,系统做了2件事:
1.homedirectory
2.mail
#ls /home/
#ls /var/mail/
userdel删除一个用户
-r参数 连同家目录与邮件目录全删除
#userdel -r user2
passwd 修改密码
普通用户修改密码和管理员有些不同:
# passwd user1 --root用户修改user1的密码,密码的长度没有限制
Changingpassword for user user1.
Newpassword:
BADPASSWORD: it is WAY too short
BADPASSWORD: is too simple
Retypenew password:
passwd:all authentication tokens updated successfully.
$passwd --普通用户修改密码
Changingpassword for user user1.
Changingpassword for user1.
(current)UNIX password:
Newpassword:
$passwd user1
passwd:Only root can specify a user name.
几个小实验:
1,普通用户只能自己改自己的密码,还需要原密码才能改,改的密码还要一定的密码复杂度(最少8位,字母,数字,符号最好都有就没问题)
2,手动建立一个用户abc用户
vim/etc/passwd
vim/etc/shadow
#grub-md5-crypt --使用这个命令产生密码的加密字符串,粘贴到shadow文件
vim/etc/group
vim/etc/gshadow
mkdir/home/abc
touch/var/mail/abc
chownabc.abc /home/abc
chmod700 /home/abc
chownabc.mail /var/mail/abc
chmod660 /var/mail/abc
cp/etc/skel/.bash* /home/abc/ --abc登录时运行的环境变量
二. 组管理
vim/etc/group
bin:x:1:root,bin,daemon
第一列:组名
第二列:与/etc/passwd第二列一样
第三列:gid
第四列:组成员
vim/etc/gshadow
bin:::root,bin,daemon
组管理的相关命令:
groupadd --增加新组
groupdel --删除组
groupmod --修改组信息,不是修改组成员
gpasswd --添加和删除组员,添加组密码
#groupadd group1
#groupadd group2
#useradd -G group1 user1
#useradd -G group1,group2 user2 --增加用户时指定组
#id user1
uid=501(user1)gid=503(user1) groups=503(user1),501(group1)
#id user2
uid=502(user2)gid=504(user2) groups=504(user2),501(group1),502(group2)
#id user3
uid=503(user3)gid=505(user3) groups=505(user3)
#usermod -g group1 user3 --修改用户的组信息
#id user3
uid=503(user3)gid=501(group1) groups=501(group1)
#groupmod group1 -n group3 --将group1修改为group3
#groupmod group2 -g 510 --将group2的gid改为510
#gpasswd -a abc group3 --add,将已经存在的用户添加到某个组
#gpasswd -d user1 group3 --delete,将组里的用户删除
#groupdel group1 --删除组
--关于有效组和初始组的讨论
#id user5
uid=505(user5)gid=506(user5) groups=506(user5),503(group1),505(group2)
gid=那个组就是你的初始组
#su - user5
$groups --user5用户用此命令查看 靠前的是有效组
user5group1 group2
--那么此用户现在创建目录或者文件的属组为 有效组user5
$touch 1
$ll
total0
-rw-rw-r--.1 user5 user5 0 Jul 16 16:08 1
$newgrp group1 --这个操作其实就是登录group1组,但是因为user5也属于group1组,所以不需要密码
$groups --现在发现group1组靠前了
group1user5 group2
$touch 2
$ll --这次创建的文件,发现属组变成了group1,就也就是说user5的有效组现在是group1;但你用另一个终端root用户id user5去查看,它的gid还是user5,并没有变成group1
total0
-rw-rw-r--.1 user5 user5 0 Jul 16 16:08 1
-rw-r--r--.1 user5 group1 0 Jul 16 16:10 2
#groupadd group3
#gpasswd group3 --另一个终端使用root用户新建一个组,给一个组密码
Changingthe password for group group3
NewPassword:
Re-enternew password:
$groups
group1user5 group2
$newgrp group3 --你登录一个你没有加入的组,那么就需要组密码了
Password:
$groups
group3user5 group1 group2 --登录成功,现在user5有效组为group3
$touch 3
$ll --这次创建的文件,发现属组变成了group3
total0
-rw-rw-r--.1 user5 user5 0 Jul 16 16:08 1
-rw-r--r--.1 user5 group1 0 Jul 16 16:10 2
-rw-r--r--.1 user5 group3 0 Jul 16 16:13 3
三. 用户权限 (permission)
- rw------- 1 root root 1112 Mar 27 03:14 anaconda-ks.cfg
文件类型 权限 硬链接 用户 组 大小 修改时间 文件名
rw- --- --- 权限用九位来表示
u g o
前三位代表用户u(user),中间三位代表组g(group),后三位代表o(others)
权限有三种 r (read) 读 w (write) 写 x (execute) 执行
a表示all
r 读 权限
针对目录,有r权限,就代表能对此目录有列表的功能 (就是ls列出来的功能)
针对文件,有r权限,就代表能对此文件有阅读的功能 (就是指cat一类的命令)
w 写 权限
针对目录,有w权限,就代表在此目录下创建文件或者子目录 (touch,mkdir等)
针对文件,有w权限,就代表能在此文件写入内容或者修改 (> ,>>, vi 再写等)
x执行 权限
针对目录,有x权限,就代表能进入此目录 (cd)
针对文件,有x权限,就代表能执行它 (命令,可执行文件等)
Permissiondenied: 权限拒绝,没有权限
权限的修改
#chmod a+x 1.txt --changefile mode bits
#chmod g+x 1.txt
#chmod a+x 1.txt
#chmod a-r 1.txt
#chmod o-rwx 1.txt
#chmod u-w,g+x,o+x abc --也可以一次性连写
#chmod o=rwx 1.txt
rw---- ---
110000 000 --二进制 600 --十进制
权限用数字来表示 (r,w,x都可以用数字来表示)
r 4
w 2
x 1
rwx 7
rw_ 6
r_x 5
r__ 4
_wx 3
_w_ 2
__x 1
___ 0
-rw-r--r-- 这个以数字表示为644(严谨的说,不能叫它六百四十四,要叫它六四四)
每三位里r代表4,w代表2,x代表1;由三个数组成一个三位数,就是你的权限
修改文件所有者和组:
chown --changeowner
#touch 1.txt
#ll 1.txt
-rw-r--r--1 root root 0 Aug 20 15:28 1.txt
#chown user2.user2 1.txt
#ll 1.txt
-rw-r--r--1 user2 user2 0 Aug 20 15:28 1.txt
#chown user3:user3 1.txt
#ll 1.txt
-rw-r--r--1 user3 user3 0 Aug 20 15:28 1.txt
#chown user2:user3 1.txt
#ll 1.txt
-rw-r--r--1 user2 user3 0 Aug 20 15:28 1.txt
umask --权限掩码
系统默认的umask是0022,创建文件默认的权限是644,创建目录默认权限是755
修改系统的umask
#umask 0
#umask
0000
umask等于0,创建文件默认的权限是666,创建目录默认权限是777
四. 特殊权限位(s,t)
1. s位叫特权位,英文的叫法有setuid,setgid,suid,sgid等
特权位s
一个可执行文件拥有s位时,当别的用户来执行这个可执行文件的话,使用的权限是此可执行文件属主或者属组的权限
只针对前三位,中间三位
对目录可以加,但是无效,因为目录不是命令,根本不能执行它
#ll /usr/bin/passwd
-rwsr-xr-x.1 root root 30768 Feb 17 2012/usr/bin/passwd
#ll /etc/shadow
----------.1 root root 1434 Jul 17 09:27 /etc/shadow
--普通用户修改密码使用passwd能改自己的密码,但是密码是存放在/etc/shadow里,也就是说普通用户对/etc/shadow没有写的权限,但passwd可执行文件的前三位有s位,所以普通在调用passswd时是用的root的权限
#chmod u+s 1.txt --suid
#chmod g+s 1.txt --guid
小实验:
<1>,测试passwd命令的s位,去掉其s位,普通用户就不能自己改自己密码了,加上s位就可以了
chmod777 /usr/bin/passwd 去掉s位
chmod4755 /usr/bin/passwd 添加s位
<2>,/bin/touch这个命令是没有s位的,你可以尝试加上s位,然后用普通用户touch文件,观察效果。做完测试后,记得改回来也就是把s位去掉
chmod4755 /bin/touch
<3>,普通用户能关机吗?怎么让普通用户关机
可以对关机命令加s位来让普通用户能关机,在rhel6下测试shutdown可以这样做,halt,init不能这样做
这只是一个理论讨论,实际情况不会这么做的
#shutdown -h now
2. 粘贴位t --只针对目录有效
特别用在/tmp目录
有t位的目录,任何用户在有权限的情况下是可以创建文件和目录,就算是有权限删除别人的文件或目录也不能删除
自己只能删除自己创建的目录,用于一些共享上传的文件服务器场合
会提示Operationnot permitted --这是操作不允许,不是pemissiondenied
s位和t位注意的地方:
用数字表示
前三位上加s 4
中间三位加s 2
后三位加t 1
chmod1777 /tmp
s位和t位大小写的区别
小写的话就表示 有x执行权限
大写的话就表示 没有x执行权限
3. 隐藏属性
lsattr --查看隐藏属性
chattr --修改隐藏属性
#lsattr 1.txt
-------------e-1.txt
#chattr +A 1.txt --这个属性让文件的accesstime访问后也不会变化,节省了IO(IO优化);默认情况下rhel5,访问一次atime就会跟着变一次,rhel6下只有当atime等于或早于mtime和ctime之一时,才会访问跟着变,否则不会变。(原因我们在后面讲mount参数时再补充)
#lsattr 1.txt
-------A-----e-1.txt
#stat 1.txt |tail -3 --用cat命令访问这个文件,再用此命令查看access time,会发现不再变化
Access:2014-07-17 11:12:58.589838878 +0800
Modify:2014-07-17 11:12:58.589838878 +0800
Change:2014-07-17 11:13:15.405701371 +0800
#chattr +a 1.txt
一个文件加了a属性,重定向覆盖以前的内容不允许,也不可修改和删除,不可重命名,不可硬链接,可以软链接,但追加内容是可以的
#lsattr 1.txt
-----a-------e-1.txt
#echo 456 > 1.txt
bash:1.txt: Operation not permitted
#echo 456 >> 1.txt
#chattr -a 1.txt
#chattr +i 1.txt --加了i属性,此文件不可被修改,不可重命名,不可删除,不可做硬链接,可以软链接,只可以看内容
普通用户使用隐藏属性,可以添加A位,不能添加a和i位,也不能删除a和i位
- 2.linux用户管理1
- linux用户管理1
- linux用户管理(1)
- Linux用户管理(1)
- linux用户管理1
- #2.Linux的用户管理
- Linux用户管理笔记1
- Linux用户管理(1)
- 【Linux管理】用户管理
- linux常用操作-2.用户管理
- Linux使用者管理(1)---用户账号
- Linux文件系统新增1--用户管理
- linux用户管理常用命令
- linux 用户管理
- Linux用户管理
- linux用户管理常用命令
- Linux 用户管理命令
- linux 用户管理
- Linux 文件权限管理 之 特殊权限
- 缓存相关
- 我要做的事
- 剑指offer——变态跳台阶
- Linux 系统命令权限管理 之 sudo
- 2.linux用户管理1
- 树结构练习——排序二叉树的中序遍历
- py-faster-rcnn_caffemodel对人脸进行标注
- 华为OJ 初级:输入n个整数,输出其中最小的k个
- 图灵机器人的引入
- iOS文件断点下载
- java 常用关键词详细解析,让你入门java
- 1.linux基本操作
- Servlet文件下载的常用实例1