命令添加用户,到底背后做了哪些事情?
1、在/etc/passwd追加一行记录,标识该帐号存在了
nokia:x:516:516::/home/inokia:/bin/ksh
用户名:密码:uid:gid:用户描述:家目录:默认shell
uid,默认约定,每个帐号独立uid
gid, 初始化组身份,用户在进行创建文件的时候,用于赋予文件的组属性。
可以使用哪些shell?
/bin/sh
/bin/bash <--默认
/sbin/nologin <--- 该帐号就禁止登录
/bin/tcsh
/bin/csh
/bin/ksh
/bin/zsh
2、在/etc/shadow追加一行记录
nokia:$1$/eltbzO.$9QTtR72Icypvz4YPsd05o/:15088:0:99999:7:::
用户名:加密的密码:帐号最后一次修改密码的时间:密码最低修改间隔的天数:密码有效天数:密码过期前7天开始警告:密码过期后多少天还能登录:帐号有效期
# grub-md5-crypt
帐号最后一次修改密码的时间:距离1970-01-01一共多少天
密码最低修改间隔的天数: 0,不受限制; 3 改完密码后必须再等3天才可以改
密码有效天数: 99999代表不过期; 7 密码7天后过期
密码过期后,要么就不能登录帐号,要么就强制要求修改密码
密码过期后多少天还能登录: 留空,代表过期多少天都能登录,但会强制修改密码
2,代表过期2天后就不能登录。
帐号有效期:距离1970-01-01一共多少天
3、在/etc/group追加了一个组的记录 《---here
nokia:x:516:
组名:组密码:组id:组成员
默认,如果没有指定gid,系统会建立一个同名字的组
4、在/etc/gshadow 追加了一个组的密码记录
nokia:!::
组名:组密码:组管理员:组成员
组密码:可以让知道该密码的帐号临时把gid身份切换到该组。exit指令还原身份。
组管理员:用于添加删除组的成员。
5、创建用户的家目录,并且把/etc/skel/.* 拷贝到家目录
权限都必须正确
6、创建用户的邮件文件/var/spool/nokia
权限都必须正确
组的相关指令
groupadd/groupmod
groupdel
gpasswd 《---root/组的管理员可以执行
-a 添加成员
-d 删除成员
-A 设定管理员
# gpasswd -a nokia upl
Adding user nokia to group upl
还可以通过修改配置文件,或者 usermod -G upl nokia
# gpasswd -A nokia upl <----把nokia设定为upl组的管理员
# gpasswd upl <---设定组密码
$ newgrp upl <---把gid身份临时切换到upl
练习:通过修改配置文件,全手工的添加一个帐号。并让它的密码为redhat,允许登录系统。模拟该命令的结果: useradd harry;passwd harry
但用户登录,使用的bash,将会读取配置文件: ~/.bash_profile --> ~/.bashrc --> /etc/bashrc ---> /etc/pofile --> /etc/profile.d/*.sh
bash的配置文件
~/.bashrc <--命令别名和函数
~/.bash_profile <--用户的自定义环境变量和需要执行的程序
~/.bash_logout
/etc/bashrc <--bash全局配置文件
/etc/profile
/etc/profile.d
命令别名:
# alias ll='ls -l --color=tty'
# alias upl='echo "wel to uplooking"'
# unalias upl
环境变量
影响其他程序执行的行为特征的。一般都是大写的字母。
PATH,SHELL
忘记管理员密码该怎么操作?
进入到单用户模式修改
su - harry
相当于完全的登录
su harry
继承了上一个用户的环境变量,而且切换之后路径不会改变
=================================
权限
目录也是文件,只不过比较特殊而已。这个“特殊”文件的内容是什么?
目录里的文件列表的详细信息就是目录的内容。
如果把目录的文件删除了,目录的文件列表就会发生变化,所以目录这个特殊文件的内容就变了
读权限, read , r
针对文件:是否可以查看文件的内容
针对目录:是否可以查看目录的文件列表
写权限, write , w
针对文件:是否可以修改文件的内容
针对目录:是否可以删除目录里的文件,是否可以对目录里文件进行重命名等。
执行权限,execute ,x
针对文件:是否可以执行该文件,一般这些文件都是:shell脚本,perl脚本,二进制文件
针对目录:是否可以进入到该目录
-rw-r-xr-- 1 root root 33270 03-28 16:18 install.log
rw-r--r-- 1 root root <--跟权限相关的
rw-,r-x,r-- 拥有者的权限[u]ser,拥有组的权限[g]roup,其他人[o]ther
如何判断一个用户对某个文件的权限呢?
1、确认他的角色。
首先判断该用户对于这个文件来说,属于哪种角色。
是否 user ? 是,停止判断
不是,继续判断
是否 group ? 是,停止判断
不是,肯定就是其他人
2、根据角色判断他的权限。
如何修改权限?
# chmod o+r /tmp/test/shadow
# chmod o-rx /tmp/test/
# chmod o=r-- /tmp/test/
# chmod u-w,g=r,o=--- /tmp/test/
# chmod -R o+w /tmp/test <---把/tmp/test目录以及目录下所有文件都进行修改
十进制 二进制
0 000
1 001
2 010
3 011
4 100 ####
5 101 ####
6 110 ####
7 111 ####
rxw,r-x,r-- == 111,101,100 == 7,5,4
chmod 754 /tmp/test
rw-,r--,r-- == 110,100,100 == 644
755 == rwx,r-x,r-x
664 == rw-,rw-,r--
775 == rwx,rwx,r-x
练习:
假设系统存在以下用户
tom gid=tom ,Gid=tom
mary gid=mary , Gid=mary
bean gid=bean ,Gid=bean,admin
存在一个叫admin的组
管理员在/tmp/test目录建立文件test1.txt,test2.txt,test3.txt
要求: tom可以删除/tmp/test目录下的文件
chmod o=rwx /tmp/test
mary 可以读取/tmp/test/test3.txt的内容
chmod o=r-- /tmp/test/test3.txt
bean 可以修改test2.txt的内容
chmod o=rw test2.txt
总结:
chmod 只能是root或者文件的拥有者可以使用
如何修改文件属主
chown 只能是管理员执行
-R
# chown tom:tom test1.txt
# chown mary.admin test2.txt
[tom@dev ~]$ chown mary:mary tomfile
chown: 正在更改 “tomfile” 的所有者: 不允许的操作
练习:
假设系统存在以下用户
tom gid=tom ,Gid=tom
mary gid=mary , Gid=mary
bean gid=bean ,Gid=bean,admin
存在一个叫admin的组
管理员在/tmp/test目录建立文件test1.txt,test2.txt,test3.txt
要求: tom可以删除/tmp/test目录下的文件,而mary,bean不允许
tom <--- rwx
bean,mary <--- r-x
chown tom:root /tmp/test
chmod u=rwx,o=rx /tmp/test
mary 可以读取/tmp/test/test3.txt的内容,而tom,bean对这个文件没有任何的权限
mary ---> r--
tom,beam ---> ---
chown mary test3.txt
chmod u=r,o=--- test3.txt
bean 可以读写test2.txt的内容,tom可以读该文件,mary没有任何权限
bean --> rw
tom --> r
mary --> ---
chown bean:tom test2.txt
chmod 640 test2.txt
总结:
判断一个文件是否能够被删除,判断的依据是,该用户是否对该文件所在的目录有写的权限。如过有,就可以删除。
===================================
特权位,粘贴位
任何用户执行任何程序(命令),该程序执行过程中必须有一个身份(用户和组),默认情况下,谁执行了该指令,就是谁的身份,与程序(命令)文件本身的属主没有任何关系。
当对程序(命令)文件添加了特权位之后,该程序(命令)执行过程中的身份就是该命令文件的属主的身份。
特权位有何作用?
例子: passwd指令,允许普通帐号修改密码
引申:取消passwd特权位,就禁止普通帐号修改密码
查找所有设定了u+s的命令
# find / -perm -u=s
如何设定?
chmod u+s,g+s /bin/touch
u+s 只能针对命令文件(不包含shell脚本)
g+s 可以针对命令文件设定,也可以针对目录设定。
对目录设定的作用:只要在该目录下创建的文件,该文件的拥有组的身份都会自动继承父目录的拥有组的身份。
粘贴位
只能够针对其他人,针对目录进行修改
chmod o+t /directory
作用:该目录下的文件,只有root,文件的拥有者可以删除,其他人不可以删除。如果目录的拥有者或者拥有组对该目录有写的权限也可以删除。
u g o
1 0 0 u+s ==> 4
1 1 0 u+s,g+s ==> 6
0 0 1 o+t ==> 1
1 1 1 u+s,g+s,o+t ==>7
chmod 4755 ==> 755 , u+s
chmod 6755 ==> 755 , u+s,g+s
chmod 2755 ==> 755 ,g+s
阅读(835) | 评论(0) | 转发(0) |