bash配置文件
~/.bash_profile 设定和导出个人的环境变量
~/.bashrc 定义个人的命令别名或者个人一些特殊代码和设定
/etc/bashrc
/etc/profile
/etc/profile.d
~/.bash_logout
~/.bash_history
user ---> login ----> /bin/bash ---> 读取 ~/.bash_profile ----> ~/.bashrc
----> /etc/bashrc ---> /etc/profile --->/etc/profile.d/*.sh
user ----> logout ---> 曾经输入过的命令会记录到~/.bash_history ---> ~/.bash_logout
su - nokia 完整切换到nokia 身份
su nokia
exit
命令别名
# alias upl='echo "wel to uplooking"'
# unalias upl
练习:
1、修改~/.bash*文件,登录系统,看一下他们的作用
清空历史命令文件
定义别名
改变PATH环境变量 ( PATH=$PATH:$HOME/bin:/sbin)
完整切换 / 部分切换
要求:其中一个用户退出登录之后会在 /tmp/logout.txt 记录一条信息
I logout
要求定一个命令别名,baidu ,能够在终端输出 I am baidu
命令
useradd , adduser
usermod
userdel
passwd
groupadd
groupdel
gpasswd
finger
chfn
id
whoami
su
newgrp
passwd
# echo "123" | passwd --stdin root &> /dev/null
userdel
-r
# usermod -G upl nokia <--把nokia加入到upl
# gpasswd -a mary upl
正在将用户“mary”加入到“upl”组中
# gpasswd upl
正在修改 upl 组的密码
# gpasswd -A tom upl 让tom成为upl组管理员,管理员可以把别的帐号加入到该组
[tom@dns ~]$ gpasswd -a bean upl
正在将用户“bean”加入到“upl”组中
组密码的作用
[bean@dns ~]$ id
uid=503(bean) gid=504(bean) groups=504(bean)
[bean@dns ~]$ newgrp upl
密码:
[bean@dns ~]$ id
uid=503(bean) gid=503(upl) groups=503(upl),504(bean)
==========================================================
-rw-r--r-- 1 root root 1870 11-02 11:55 /etc/passwd
rw- r-- r--
拥有者u 拥有组g 其他人o
目录也是文件,只不过特殊一点。这个特殊文件的内容就是目录里文件列表
读 r
文件: 可以查看文件内容
目录: 可以查看目录里列表
写 w
文件: 可以修改文件的内容
目录: 可以在目录里创建文件,删除文件,修改文件名字等
总结:判断一个文件是否能够被删除,根据的是用户对这个文件所在的目录的权限
执行 e
文件: 一般这些文件都是可执行文件(二进制的程序,脚本等),代表可以运行这些文件
目录:可以进入到该目录
chmod 只能是root或者文件拥有者才能修改
chmod u+w shadow
chmod o-r shadow
chmod u=rwx,g=rx,o+r shadow
-R
chown 只能是root
chown nokia:upl passwd
chown nokia.upl passwd
-R
chgrp 该文件拥有组
chgrp tom shadow
-R
练习:
创建/tmp/common目录,这个目录可以让任何人有所有权限
拷贝 /etc/shadow文件到该目录
修改文件的权限,让tom可以读取该文件的内容
把这个文件拥有组改成nokia, mary属于nokia分组的。需要让mary可以读写该文件。然后验证效果。
再把该文件的拥有者改成mary,并且让文件拥有者仅仅具有读的权限。
思考: 作为文件拥有者,mary具有读的权限,但作为文件的拥有组却具有读写的权限,那么,最终到底是什么权限?
权限的数值表示方法:
二进制 十进制
0 0 ##
1 1 ##
10 2
11 3
100 4 ##
101 5 ##
110 6 ##
111 7 ##
rwx,r-x,r--
111,101,100 ==> 754
rwx,r-x,r-x
111,101,101 ==> 755 ##
rw-,r--,r--
110,100,100 ==> 644 ##
rw-,rw-,r-- ==> 664 ##
rwx,rwx,r-x ==> 775 ##
UMASK
root
目录7,7,7-0,2,2=7,5,5
文件6,6,6-0,2,2=6,4,4
普通帐号
777-002=775
666-002=664
思考:能否让一个文件建立之后就具有执行权限?
肯定不能。
umask 永久修改,针对个人,就修改~/bash_profile
==================================================================
特权位
chmod u+s command
chmod g+s command/directory
总结:
默认情况,命令运行的时候必须有一个身份,身份就是运行者(组)的身份。
当对命令设定了特权位后,命令运行的时候,就使用命令拥有者(组)的身份。
修改之前:
root:root 0755 /bin/touch
tom ---> 运行touch指令,运行时使用tom身份
设定特权位后
root:root 4755(u+s) /bin/touch
tom ---> 运行touch指令,运行时使用root身份
修改命令的拥有者并且设定特权位后
nokia:root 4755(u+s) /bin/touch
tom ---> 运行touch指令,运行时使用nokia身份
chmod g+s directory ,作用: 对目录设定之后,该目录下新建目录或者文件的拥有组都会自动继承了该目录的拥有组的身份
粘贴位 stick bit
chmod o+t 目录
作用: 在该目录里所有文件只有文件拥有者可以删除,或者该目录的拥有者(组)可以删除(看具体权限),其他人绝对不能删除。root可以删除
一般用在文件共享服务。
u g o
1 0 0 <--- u+s 4
0 1 0 <--- g+s 2
0 0 1 <--- o+t 1
rwx,r-x,r-x <--- 0755
rws,r-x,r-x <--- 4755
rwx,r-x,r-t <--- 1755
作业:
1、创建用户组admin,创建用户user1,附加组属于admin组;创建user2,附加组为admin;创建user3,不属于admin组,没有交互的shell
groupadd admin
useradd -G admin user1
useradd -G admin user2
useradd -s /sbin/nologin user3
2、在/common目录下创建adm目录,所有者为root,所属组为admin组
3、任何人在adm目录下创建文件都属于admin组
chmod g+s /common/adm
4、把/etc/fstab文件复制到/var/tmp/目录下,user1对该文件具有读写执行权限,user2组对该用户具有读权限,其他人一点权限都没
chown user1:admin /var/tmp/fstab
chmod 750 /var/tmp/fstab
5、要求在adm目录下创建文件,文件只能是拥有者可以删除,或者adm目录的拥有者和拥有组可以删除。
chmod o+t /common/adm
6、有什么办法可以让普通账号不能修改自己的密码。
chmod u-s /usr/bin/passwd
或者
chmod o-x /usr/bin/passwd
7、有什么办法可以让所有人都不能修改密码,包括管理员。
chattr +i /etc/shadow
8、让user1创建的文件的权限自动为644,目录的权限自动为755
umask 0022
9、让user2成为admin组的管理员,并给admin组设定密码为123
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24920726/viewspace-678060/
,如需转载,请注明出处,否则将追究法律责任。