10-11Linux用户管理规则及用户管理函数
用户管理:
useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage
组管理:
groupadd, groupdel, groupmod, gpasswd
权限管理:
chown, chgrp, chmod, umask
/etc/passwd:
用户名:密码:UID:GID:注释:家目录:默认SHELL
/etc/group:
组名:密码:GID:以此组为其附加组的用户列表
/etc/shadow:
用户名:密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告时间:非活动时间:过期时间:
用户管理:
useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage
useradd [options] USERNAME
-u UID
-g GID(基本组)
-G GID,... (附加组)
-c "COMMENT"
-d /path/to/directory
-s SHELL
-m -k
-M
-r: 添加系统用户
/etc/login.defs
环境变量:
PATH
HISTSIZE
SHELL
/etc/shells:指定了当前系统可用的安全shell
userdel:
userdel [option] USERNAME
-r: 同时删除用户的家目录
id:查看用户的帐号属性信息
-u
-g
-G
-n
finger: 查看用户帐号信息
finger USERNAME
修改用户帐号属性:
usermod
-u UID
-g GID
-a -G GID:不使用-a选项,会覆盖此前的附加组;
-c
-d -m:
-s
-l
-L:锁定帐号
-U:解锁帐号
chsh: 修改用户的默认shell
chfn:修改注释信息
密码管理:
passwd [USERNAME]
--stdin
-l
-u
-d: 删除用户密码
pwck:检查用户帐号完整性
组管理:
创建组:groupadd
groupadd
-g GID
-r:添加为系统组
groupmod
-g GID
-n GRPNAME
groupdel
gpasswd:为组设定密码
newgrp GRPNAME <--> exit
文件的访问权限说明:
相关的ID:实际用户ID实际组id,有效用户id,有效组id,附加组id,保存的设置用户id,保存的设置组id
实际用户id和实际组id:用于表示当前LInux的登录用户,在会话中并不会改变,只有在使用sudo等命令时会暂时发生改变。
有效用户id,有效组id,附加组id:用于确定每个文件的访问组权限,保存在stat结构体中的st_mode分量中。
S_IRUSR:用户读
S_IWUSR:用户写
S_IXUSR:用户执行
S_IRGRP:组读
S_IWGRP:组写
S_IXGRP:组执行
S_IROTH:其他用户读
S_IWOTH:其他用户写
S_IXOTH:其他用户执行
保存的设置组id和保存的设置用户id:保存了该用户的有效组id和有效用户id的一个副本
测试文件访问权限函数:
#include <unistd.h>
int access(const char *pathname, int mode);
umask函数:
mode_t umask(mode_t cmode);
chmod函数和fchmod函数:
umask函数只能在创建文件的时候给定文件的权限,而chmod和fchmod函数可以修改已经存在的文件的权限。chmod可以在任何时候修改指定文件的权限,而fchmod需要在文件被打开后使用文件描述符来修改。
#include <sys/types.h>
#include <sys/stat.h>
int chmod(const char *filename, mode_t mode);
int fchmod(int fd, mode_t mode);
修改文件的用户ID和用户组ID:chown,fchown,lchown
rename函数:
#include <stdio.h>
int rename(const char *oldname, const char *newname);
文件的其他高级操作函数:
1. #include <unistd.h>
int dup(int fd);
int dup2(int fd, int fd2);
2. #include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
int fcntl(int fd, int cmd, int arg);
第二个参数:
F_DUPD:返回大于或等于arg的最低序号的文件描述符。该功能可以由dup函数实现。新的文件描述符与旧的可以互换使用。调用成功时,返回值为新的文件描述符。
F_GETFD:获得close-on-exec标志。如果最后一位是0,则该标志没有设置。返回值为0或1.
F_SETFD:设置close-on-exec标志为指定的值arg(只有最后一位有效,为0或1)
F_GETFL:获得文件的打开方式。返回所有的标志位,标志位的含义与open函数中相同。
F_SETFL:设置文件打开的方式的标志。设置文件打开方式为arg指定的打开方式。仅能设置O_APPEND和O_NONBLOCK或O_NDELAY,有的系统还可以设置O_SYNC,该标志被所有的文件描述符所共享。
F_GETLK:获得本进程得到锁的第一个锁的flock结构。
F_SETLK:获得离散的文件锁,不等待。
F_SETLKW:获得离散的文件锁,必要时等待。
F_GETOWN:返回当前接受SIGIO或SIGURG信号(signal)的进程ID或进程组。进程ID以负值返回。
F_SETOWN:设置进程或进程组接受SIGIO和SIGURG信号,进程组ID以负值返回。进程ID以正值指定。
文件锁:在文已经共享的情况下如何操作,也就是当多个进程同时操作同一个文件时,我们怎么保证文件数据的正确性。linux通常采用的方法是文件上锁,来避免共享资源的产生竞争状态。
文件锁包括建议性锁和强制性的锁。建议性的,顾名思义,相对温柔一些,在对文件进行锁操作时,会检测是否已经有锁存在,并且尊重已有的锁。在一般的情况下,内核和系统都不使用建议锁。强制性的锁是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他进程对其进行读写操作。采取强制性的锁对性能的影响很大,每次进行读写操作都必须检查是否有锁存在。
fcntl函数返回文件状态标志:
O_RDONLY:只读
O_WRONLY:只写
O_RDWR:读写
O_APPEND:每次写时追加
O_NONBLOCK:非阻塞模式
O_SYNC:等待数据和属性写完成
O_DSYNC:等待数据写完成
O_RSYNC:同步读写
O_FSYNC:等待写完成
O_ASYNC:异步I/O操作
truncate和ftruncate函数:
#include <unistd.h>
int truncate(char *filepath, size_t len);
int ftruncate(int fd, size_t len);
remove函数:
#include <stdio.h>
int remove(const char *pathname);
目录文件操作:
mkdir和rmdir
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int mkdir(const char *pathname, mode_t mode);//创建一个目录
int rmdir(const char *pathname);//删除一个目录
int chdir(const char *pathname);//改变工作路径
int fchdir(int fd);//改变文件工作路径
char *getcwd(char *buf, size_t size);//获取文件的完整路径
#include <dirent.h>
DIR *opendir(const char *pathname);//打开目录,返回的是一个DIR指针,是一个内部结构,用来保存被度的目录的有关信息。
int close(DIR *dp);//关闭目录,参数是一个内部结构指针
struct dirent *readdir(DIR *dp);//读目录,返回一个目录dirent结构体指针。
struct dirent
{
ino_t d_ino;//i-node number
char d_name[NAME_MAX+1];//null-terminated filename
};
10-11Linux用户管理规则及用户管理函数的更多相关文章
- 用户管理 之 Linux 用户(User)查询篇
用户(User)和用户组(Group)的配置文件,是系统管理员最应该了解和掌握的系统基础文件之一,从另一方面来说,了解这些文件也是系统安全管理的重要组成部份:做为一个合格的系统管理员应该对用户和用户组 ...
- 用户管理 之 Linux 用户(user)和用户组(group)管理概述
一.理解Linux的单用户多任务,多用户多任务概念:Linux 是一个多用户.多任务的操作系统:我们应该了解单用户多任务和多用户多任务的概念: 1.Linux 的单用户多任务:单用户多任务:比如我们以 ...
- (转)用户管理 之 Linux 用户(user)和用户组(group)管理概述
用户管理 之 Linux 用户(user)和用户组(group)管理概述 原文:http://www.cnblogs.com/licheng/p/6103992.html 一.理解Linux的单用户 ...
- linux用户的基本操作2 用户密码管理
目录 linux系统的基本用户操作2 用户的扩展知识 用户密码管理 linux系统的基本用户操作2 3)使用userdel删除账户 语法 : userdel [-r] username -r 同时删除 ...
- 『学了就忘』Linux用户管理 — 50、用户管理相关文件详细说明
目录 1.用户信息文件 2./etc/shadow影子文件 3./etc/group 组信息文件 4.组密码文件 5.用户的家目录 6.用户邮箱目录 7.用户模板目录 总结: 提示:严格的用户权限划分 ...
- Linux下查看/管理当前登录用户及用户操作历史记录
转载自: http://www.cnblogs.com/gaojun/archive/2013/10/24/3385885.html 一.查看及管理当前登录用户 1.使用w命令查看登录用户正在使用的进 ...
- linux中用户、组的管理(密码管理、权限管理及其修改用户、组)(转)
process(进程) 1 计算资源 权限 用户(获取资源或服务的凭证或标识) 用户,容器,关联权限:用户组(标识符),方便地指派权限 2 用户.组.权限 安全上下文(secure context ...
- 用户管理 之 Linux 用户管理工具介绍
Linux是一个多用户的操作系统,她有完美的用户管理工具,这些工具包括用户的查询.添加.修改,以及用户之间相互切换的工具等:通过这些工具,我们能安全.轻松的完成用户管理: 在这里我们要引入用户控制工具 ...
- Oracle用户、权限、角色管理(转)
http://blog.csdn.net/junmail/article/details/4381287 Oracle 权限设置一.权限分类:系统权限:系统规定用户使用数据库的权限.(系统权限是对用户 ...
随机推荐
- 【洛谷】P1247 取火柴游戏(Nim)
题目 传送门:QWQ 分析 蒟蒻根本不会博弈论..... 只知道异或和判断Nim游戏.. 不是很懂输出的选择,所以发一篇博客以待复习 代码 #include <bits/stdc++.h> ...
- 【Codeforces】Codeforces Round #492 (Div. 2) (Contest 996)
题目 传送门:QWQ A:A - Hit the Lottery 分析: 大水题 模拟 代码: #include <bits/stdc++.h> using namespace std; ...
- 精《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #8 调度策略
HACK #8 调度策略 本节介绍Linux的调度策略(scheduling policy).Linux调度策略的类别大致可以分为TSS(Time Sharing System,分时系统)和实时系统这 ...
- django2.0数据展示流程
之前刚刚实现了数据添加的流程,那么数据展示是怎么回事 1 先在 views.py 中定义函数 增加获取数据的方式 from django.shortcuts import render from bl ...
- leetcode434
public class Solution { public int CountSegments(string s) { s = s.Trim(); ) { ; } else { ; ; ; i &l ...
- Configure、中间件与ErrorHandlingMiddleware全局异常捕获
一.Configure Startup.cs中的Configure方法主要是http处理管道配置.中间件和一些系统配置,其中 IApplicationBuilder: 定义一个类,该类提供配置应用程序 ...
- jsp生成好看的验证码
这是一个Servlet,名字是ImageServlet package a; import java.awt.Color; import java.awt.Font; import java.awt. ...
- 286被围绕的区域 · Surrounded Regions
[抄题]: 给一个二维的矩阵,包含 'X' 和 'O', 找到所有被 'X' 围绕的区域,并用 'X' 填充满. 样例 给出二维矩阵: X X X X X O O X X X O X X O X X ...
- 系统批量运维管理器pexpect详解
一.pexpect介绍 pexpect可以理解成Linux下的expect的Python封装,通过pexpect我们可以实现对ssh.ftp.passwd.telnet等命令进行自动交互,而无需人工干 ...
- 全球数据库-->基金/管理产品-->分类/行业平均-->开放式分类
SecID 招募书中所定净费率 换手率% 回报日期(每日) 计价货币 回报-本月以来(每日)计价货币 回报-本季以来(每日)计价货币 回报-本年以来(每日)计价货币 回报-1日(每日)计价货币 回报- ...