进程也是有属主和属组的,进程是操作计算机的代理,进程能访问哪些文件(的权限)
取决于发起进程的用户或组或其他用户
安全上下文(secure context)
-rw------- 1 wilson wilson 1246 06-10 19:10 test.txt
属主 属组 其他
权限:
r,w,x
文件:
r:可读,可以类似cat等命令查看文件内容
w:可写,可以编辑或删除此文件
x:可执行,exacuteable,可以再命令提示符下当做命令提交给内核运行
目录:
r:可以对此目录执行ls,以列出内部的所有文件
w:可以在此目录创建文件
x:可以使用cd切换至此目录,也可以使用ls -l查看内部文件的详细信息
文件最好不给x权限,但是目录一定要给x权限
rwx:
r--:只读
r-x:读和执行
---:无权限
0 000 ---:无权限
1 001 --x:执行
2 010 -w-:写
3 011 -wx:写和执行
4 100 r--:只读
5 101 r-x:读和执行
6 110 rw-:读写
7 111 rwx:读写和执行
755:rwxr-xr-x
rw-r-----:640
用户:UID 标识符,/etc/passwd 用户名和UID,密码都在此对应
用户组:GID 标识符,/etc/group
影子口令:
用户:/etc/shadow 用户密码实际在此
组:/etc/gsahdow 组密码实际在此
用户类别:
管理员:UID 0
普通用户:UID 1-65535
系统用户:UID 1-499 不能登录系统,没有家目录
一般用户:UID 500-60000
用户组类别:
管理员组:
普通组:
系统组:
一般组:
用户组类别:
基本组:用户的默认组
私有组:创建用户时,如果没有指定所属组,系统会自动创建以用户名同名的组
附加组(额外组):默认组以外的其他组
一个进程以tom属主及tom属组tom运行
作用对象:rwxrw-r-- jerry tom a.txt
首先看属主,然后看属组,所以这里是rw-
ls:ls
rwxr-xr-x root root /bin/ls 其他用户r-x,所以能运行起来
[root@localhost wilson]# whatis passwd #看passwd的章节
passwd (1) - update user's authentication tokens
passwd (5) - password file #说明第5个章节是对passwd文件的说明
passwd (rpm) - The passwd utility for setting/changing passwords using PAM
passwd [sslpasswd] (1ssl) - compute password hashes
[root@localhost wilson]# man 5 passwd 查看第五个章节―关于文件的说明
cat /etc/passwd:
wilson:x:500:500:wilson:/home/wilson:/bin/bash
account:用户名
passwordd:密码,一般是x占位符(密码在/etc/shadow)
UID:
GID:基本组ID
comment:用户注释信息
directory:用户家目录
bash:用户默认shell
cat /etc/shadow
wilson:$1$6zvHjSox$3qPLL0xBr4tG8JLGUzl8y0:16220:0:99999:7:::
account:登录名
ecrypted password:加密的密码 前八位:$.....$中间是杂质,是随机生成的
如果显示!!或*,表示用户是锁定的(锁定用户可以使用此方法)
加密算法:
对称加密:加密和解密使用同一个密码
公钥加密:每个密码都成对出现,一个为私钥(secret key),一个为公钥(public key)
单向加密,散列加密:提取数据特征码,可以做数据校验
1、雪崩效应、蝴蝶效应:初始条件的微小变化,会引起结果的巨大变化
2,定长输出
MD5:Message Digest,128位定长输出
SHA1:Secure Hash Algorithm,160位定长输出
1,2如下代码所示:cp /etc/inittab ./
[root@localhost wilson]# md5sum inittab
9d49303d50eb59151fc24eb0e3802232 inittab
[root@localhost wilson]# vi inittab
[root@localhost wilson]# md5sum inittab
09525094beeb8a7b356a8ab4291c3283 inittab
[root@localhost wilson]#
useradd username
root用户:passwd username 修改用户密码
--stdin 从标准输入读取密码(可以接收传递来的用户密码)
echo "redhat" | passwd --stdin hadoop #管道修改用户密码
-d 删除用户密码 (这样用户就不能登录了)
groupadd 组名
用户管理:useradd,userdel,usermod,passwd,chsh,chfn,finger,id,chage
useradd [options] username
-u UID(一般用户ID大于500)
[root@localhost default]# useradd -u 2000 user2
[root@localhost default]# tail -1 /etc/passwd
user2:x:2000:2000::/home/user2:/bin/bash
-g GID 指定必须事先存在基本组
[root@localhost default]# useradd -g mygroup user3
[root@localhost default]# tail -1 /etc/passwd
user3:x:2001:504::/home/user3:/bin/bash
-G GID,...指定额外组(也必须事先存在),可以多个
-c “comment” 指定注释信息
-d /path/to/directory 指定家目录
[root@localhost default]# useradd -c "tony blare" -d /home/blare user5
[root@localhost default]# tail -1 /etc/passwd
user5:x:2003:2003:tony blare:/home/blare:/bin/bash
-s 指定使用的shell路径,
[root@localhost default]# useradd -s /sbin/nologin user6 #nologin
[root@localhost default]# su user6
This account is currently not available.#这样用户就不可以切换了
-M 不给用户创建家目录
-r 添加一个系统用户(ID 1-499)
userdel [option] username #删除用户时不指定删除家目录,默认是不会删除的
-r 同时删除用户的家目录
修改用户账号信息:(跟用户添加的选项一样使用)
usermod [option] username
-u UID
-g GID
-G -a GID追加附加组,不使用-a会覆盖此前的附加组
-d -m:既指定新的家目录,又把此前家目录文件复制过去(-m)
-L 锁定用户账号
-U(大写) 解锁账号
id [option] username:查看用户的账号属性信息(不加选项,显示当前用户的账号信息)
-u:只看uid
-n:显示名称
finger username查看用户账号信息(邮件等)
pwck:检查用户账号完整性
组管理:groupadd,groupdel,groupmod,gpasswd
groupadd:
-g 指定GID
-r 添加为系统组
groupmod
-g 修改gid
-n 修改组名
groupdel 删除组
gpasswd:为组设定密码
练习:
1、创建一个用户mandriva,其ID为2002,基本组为distro(组ID为3003),附加组为linux
#groupadd -g 3003 distro
#groupadd linux
#useradd -u 2002 -g distro -G linux mandriva
2、创建一个用户fedora,其全名为Fedora Community,默认shell为tcsh
#useradd -c "Fedora Community" -s /bin/tcsh fedora
3、修改mandriva的ID号为4004,基本组为linux,附加组为distro和fedora
useradd -u 4004 -g linux -G distro,fedora mandriva
4、给fedora加密码,并设定其密码最短使用期限为2天,最长为50天
passwd -n 2 -x 50 fedora
5、将mandriva的默认shell改为/bin/bash
usermod -s /bin/bash mandriva
6、添加系统用户hbase,且不允许其登陆系统
useradd -r -s /sbin/nologin hbase
权限管理:chown,chgrp,chmod,umask
三类用户:
u:属主
g:属组
o:其他用户
chown:改变文件属主(只有管理员才能使用此命令)
chown username file,.....
-R:修改目录及其内部文件的属主
--reference=/path/to/somefile file,.... 改为属主跟哪个文件的属主一样
chgrp: 用法跟chown一样
-R
-reference=/path/to/somefile file,.....
同时改变属主,属组
chown username:grpname file,....
chown username.grpname file,....
修改文件权限:chmod
修改三类用户的权限:
chmod (-R) mod file,.....
修改某类用户权限:
chmod 用户类别=mod file,.... #chomd u=rwx /tmp/abc
chmod g=rx,o= /tmp/abc
修改某类用户的某位权限:
chmod 用户类别+/-mod file,.... #chomd u+r /tmp/abc
练习:
1、新建一个没有家目录的用户openstack
useradd -M openstack
2.复制/etc/skel为/home/openstack
cp -r /etc/skel /home/openstack
3、改变/home/openstack及其内部文件的属主属组均为openstack
chown -R openstack:openstack /home/openstack
4、/home/openstack及其内部的文件,属组和其他用户没有任何访问权限
chmod -R go= /home/openstack
umask :遮罩码
umask
umask 022
文件:666-022=644 文件默认无执行权限,所以是666
目录:777-022=755
站在用户的角度来说,shell的类型:
登录式:
正常通常某终端登陆
su - username
su -l username
非登陆式:
su username
图形终端下打开命令窗口
自动执行的shell脚本
bash的配置文件:
全局配置:
/etc/profile,/etc/profile.d/*.sh,/etc/bashrc
个人配置:
~/.bash_profile,~/.bashrc
profile类的文件:
设定环境变量
运行命令或脚本
bashrc类的文件:
设定本地变量
定义命令别名
登陆式shell如何读取配置文件?
首选读取/etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc
非登陆式shell如何读取配置文件?
~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh