ssh-pam-manager


Namessh-pam-manager JSON
Version 1.0.0 PyPI version JSON
download
home_pageNone
SummaryA Python tool for managing SSH PAM configurations on Linux systems
upload_time2025-10-23 01:51:40
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseMIT
keywords ssh pam linux authentication security
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # SSH PAM Manager

一个用于管理Linux系统SSH PAM配置的Python工具。

## 功能特性

- 📖 **配置读取**: 查看当前SSH PAM配置
- ✏️ **配置修改**: 修改现有的PAM配置项
- ➕ **配置添加**: 添加新的PAM配置规则
- 🗑️ **配置删除**: 删除不需要的PAM配置
- 🔒 **安全验证**: 验证PAM配置的安全性和正确性
- 💾 **自动备份**: 修改前自动备份原配置
- 🖥️ **交互界面**: 友好的命令行交互界面

## 安装

### 从源码安装

```bash
# 克隆仓库
git clone https://gitee.com/liumou_site/ssh-pam-management.git
cd ssh-pam-management

# 安装到系统
pip3 install .

# 或者使用开发模式
pip3 install -e .
```

### 从PyPI安装(未来版本)

```bash
pip3 install ssh-pam-manager
```

## 使用方法

### 交互式界面

```bash
# 启动交互式界面
ssh-pam-manager
```

### 命令行模式

```bash
# 查看当前配置
ssh-pam-manager --view

# 验证配置安全性
ssh-pam-manager --validate

# 指定自定义配置文件路径
ssh-pam-manager --config /etc/pam.d/sshd --view

# 显示版本信息
ssh-pam-manager --version
```

## 项目结构

```
ssh-pam-manager/
├── src/
│   └── ssh_pam_manager/
│       ├── __init__.py          # 包初始化
│       ├── main.py              # 主入口点
│       ├── pam_parser.py        # PAM配置解析器
│       ├── pam_manager.py       # PAM配置管理器
│       ├── cli_interface.py     # 命令行交互界面
│       └── config_validator.py  # 配置验证器
├── pyproject.toml               # 现代打包配置
├── setup.py                    # 兼容性打包配置
├── README.md                   # 项目文档
└── LICENSE                     # 许可证文件
```

## 模块说明

### pam_parser.py
- **PAMParser类**: 负责解析PAM配置文件格式
- 支持解析标准的PAM配置行格式
- 处理注释和空行

### pam_manager.py  
- **PAMManager类**: 核心配置管理功能
- 提供配置的读取、修改、添加、删除操作
- 自动备份机制确保操作安全

### cli_interface.py
- **CLIInterface类**: 用户交互界面
- 提供菜单驱动的命令行操作
- 支持配置预览和确认

### config_validator.py
- **ConfigValidator类**: 配置验证功能
- 验证PAM配置的合法性和安全性
- 检测潜在的安全风险

## PAM配置格式

工具支持标准的PAM配置格式:

```
类型    控制标志    模块    参数
```

示例:
```
auth    required    pam_unix.so    nullok
auth    optional    pam_echo.so    file=/etc/issue
```

## 权限要求

由于PAM配置文件通常位于`/etc/pam.d/`目录下,需要root权限才能修改:

```bash
sudo ssh-pam-manager
```

或者:

```bash
sudo ssh-pam-manager --view
```

## 开发

### 设置开发环境

```bash
# 克隆项目
git clone https://gitee.com/liumou_site/ssh-pam-management.git
cd ssh-pam-management

# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate

# 安装开发依赖
pip install -e .
```

### 运行测试

```bash
# 运行基本功能测试
python -m pytest tests/

# 运行代码风格检查
flake8 src/

# 运行类型检查
mypy src/
```

## 贡献

欢迎提交Issue和Pull Request来改进这个项目。

## 许可证

本项目采用MIT许可证。详见[LICENSE](LICENSE)文件。

## 免责声明

此工具用于系统管理目的。在使用前请确保:

1. 理解PAM配置的工作原理
2. 在测试环境中验证配置更改
3. 备份重要的系统配置文件
4. 了解修改PAM配置可能带来的安全影响

作者对使用此工具造成的任何系统问题不承担责任。

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "ssh-pam-manager",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "ssh, pam, linux, authentication, security",
    "author": null,
    "author_email": "SSH PAM Manager Team <liumou.site@qq.com>",
    "download_url": "https://files.pythonhosted.org/packages/a6/04/309e170d6bf3efb5d9d21a56b4174bae304f5752bd0ec8001bba6c364a6c/ssh_pam_manager-1.0.0.tar.gz",
    "platform": null,
    "description": "# SSH PAM Manager\n\n\u4e00\u4e2a\u7528\u4e8e\u7ba1\u7406Linux\u7cfb\u7edfSSH PAM\u914d\u7f6e\u7684Python\u5de5\u5177\u3002\n\n## \u529f\u80fd\u7279\u6027\n\n- \ud83d\udcd6 **\u914d\u7f6e\u8bfb\u53d6**: \u67e5\u770b\u5f53\u524dSSH PAM\u914d\u7f6e\n- \u270f\ufe0f **\u914d\u7f6e\u4fee\u6539**: \u4fee\u6539\u73b0\u6709\u7684PAM\u914d\u7f6e\u9879\n- \u2795 **\u914d\u7f6e\u6dfb\u52a0**: \u6dfb\u52a0\u65b0\u7684PAM\u914d\u7f6e\u89c4\u5219\n- \ud83d\uddd1\ufe0f **\u914d\u7f6e\u5220\u9664**: \u5220\u9664\u4e0d\u9700\u8981\u7684PAM\u914d\u7f6e\n- \ud83d\udd12 **\u5b89\u5168\u9a8c\u8bc1**: \u9a8c\u8bc1PAM\u914d\u7f6e\u7684\u5b89\u5168\u6027\u548c\u6b63\u786e\u6027\n- \ud83d\udcbe **\u81ea\u52a8\u5907\u4efd**: \u4fee\u6539\u524d\u81ea\u52a8\u5907\u4efd\u539f\u914d\u7f6e\n- \ud83d\udda5\ufe0f **\u4ea4\u4e92\u754c\u9762**: \u53cb\u597d\u7684\u547d\u4ee4\u884c\u4ea4\u4e92\u754c\u9762\n\n## \u5b89\u88c5\n\n### \u4ece\u6e90\u7801\u5b89\u88c5\n\n```bash\n# \u514b\u9686\u4ed3\u5e93\ngit clone https://gitee.com/liumou_site/ssh-pam-management.git\ncd ssh-pam-management\n\n# \u5b89\u88c5\u5230\u7cfb\u7edf\npip3 install .\n\n# \u6216\u8005\u4f7f\u7528\u5f00\u53d1\u6a21\u5f0f\npip3 install -e .\n```\n\n### \u4ecePyPI\u5b89\u88c5\uff08\u672a\u6765\u7248\u672c\uff09\n\n```bash\npip3 install ssh-pam-manager\n```\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n### \u4ea4\u4e92\u5f0f\u754c\u9762\n\n```bash\n# \u542f\u52a8\u4ea4\u4e92\u5f0f\u754c\u9762\nssh-pam-manager\n```\n\n### \u547d\u4ee4\u884c\u6a21\u5f0f\n\n```bash\n# \u67e5\u770b\u5f53\u524d\u914d\u7f6e\nssh-pam-manager --view\n\n# \u9a8c\u8bc1\u914d\u7f6e\u5b89\u5168\u6027\nssh-pam-manager --validate\n\n# \u6307\u5b9a\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\nssh-pam-manager --config /etc/pam.d/sshd --view\n\n# \u663e\u793a\u7248\u672c\u4fe1\u606f\nssh-pam-manager --version\n```\n\n## \u9879\u76ee\u7ed3\u6784\n\n```\nssh-pam-manager/\n\u251c\u2500\u2500 src/\n\u2502   \u2514\u2500\u2500 ssh_pam_manager/\n\u2502       \u251c\u2500\u2500 __init__.py          # \u5305\u521d\u59cb\u5316\n\u2502       \u251c\u2500\u2500 main.py              # \u4e3b\u5165\u53e3\u70b9\n\u2502       \u251c\u2500\u2500 pam_parser.py        # PAM\u914d\u7f6e\u89e3\u6790\u5668\n\u2502       \u251c\u2500\u2500 pam_manager.py       # PAM\u914d\u7f6e\u7ba1\u7406\u5668\n\u2502       \u251c\u2500\u2500 cli_interface.py     # \u547d\u4ee4\u884c\u4ea4\u4e92\u754c\u9762\n\u2502       \u2514\u2500\u2500 config_validator.py  # \u914d\u7f6e\u9a8c\u8bc1\u5668\n\u251c\u2500\u2500 pyproject.toml               # \u73b0\u4ee3\u6253\u5305\u914d\u7f6e\n\u251c\u2500\u2500 setup.py                    # \u517c\u5bb9\u6027\u6253\u5305\u914d\u7f6e\n\u251c\u2500\u2500 README.md                   # \u9879\u76ee\u6587\u6863\n\u2514\u2500\u2500 LICENSE                     # \u8bb8\u53ef\u8bc1\u6587\u4ef6\n```\n\n## \u6a21\u5757\u8bf4\u660e\n\n### pam_parser.py\n- **PAMParser\u7c7b**: \u8d1f\u8d23\u89e3\u6790PAM\u914d\u7f6e\u6587\u4ef6\u683c\u5f0f\n- \u652f\u6301\u89e3\u6790\u6807\u51c6\u7684PAM\u914d\u7f6e\u884c\u683c\u5f0f\n- \u5904\u7406\u6ce8\u91ca\u548c\u7a7a\u884c\n\n### pam_manager.py  \n- **PAMManager\u7c7b**: \u6838\u5fc3\u914d\u7f6e\u7ba1\u7406\u529f\u80fd\n- \u63d0\u4f9b\u914d\u7f6e\u7684\u8bfb\u53d6\u3001\u4fee\u6539\u3001\u6dfb\u52a0\u3001\u5220\u9664\u64cd\u4f5c\n- \u81ea\u52a8\u5907\u4efd\u673a\u5236\u786e\u4fdd\u64cd\u4f5c\u5b89\u5168\n\n### cli_interface.py\n- **CLIInterface\u7c7b**: \u7528\u6237\u4ea4\u4e92\u754c\u9762\n- \u63d0\u4f9b\u83dc\u5355\u9a71\u52a8\u7684\u547d\u4ee4\u884c\u64cd\u4f5c\n- \u652f\u6301\u914d\u7f6e\u9884\u89c8\u548c\u786e\u8ba4\n\n### config_validator.py\n- **ConfigValidator\u7c7b**: \u914d\u7f6e\u9a8c\u8bc1\u529f\u80fd\n- \u9a8c\u8bc1PAM\u914d\u7f6e\u7684\u5408\u6cd5\u6027\u548c\u5b89\u5168\u6027\n- \u68c0\u6d4b\u6f5c\u5728\u7684\u5b89\u5168\u98ce\u9669\n\n## PAM\u914d\u7f6e\u683c\u5f0f\n\n\u5de5\u5177\u652f\u6301\u6807\u51c6\u7684PAM\u914d\u7f6e\u683c\u5f0f\uff1a\n\n```\n\u7c7b\u578b    \u63a7\u5236\u6807\u5fd7    \u6a21\u5757    \u53c2\u6570\n```\n\n\u793a\u4f8b\uff1a\n```\nauth    required    pam_unix.so    nullok\nauth    optional    pam_echo.so    file=/etc/issue\n```\n\n## \u6743\u9650\u8981\u6c42\n\n\u7531\u4e8ePAM\u914d\u7f6e\u6587\u4ef6\u901a\u5e38\u4f4d\u4e8e`/etc/pam.d/`\u76ee\u5f55\u4e0b\uff0c\u9700\u8981root\u6743\u9650\u624d\u80fd\u4fee\u6539\uff1a\n\n```bash\nsudo ssh-pam-manager\n```\n\n\u6216\u8005\uff1a\n\n```bash\nsudo ssh-pam-manager --view\n```\n\n## \u5f00\u53d1\n\n### \u8bbe\u7f6e\u5f00\u53d1\u73af\u5883\n\n```bash\n# \u514b\u9686\u9879\u76ee\ngit clone https://gitee.com/liumou_site/ssh-pam-management.git\ncd ssh-pam-management\n\n# \u521b\u5efa\u865a\u62df\u73af\u5883\npython3 -m venv venv\nsource venv/bin/activate\n\n# \u5b89\u88c5\u5f00\u53d1\u4f9d\u8d56\npip install -e .\n```\n\n### \u8fd0\u884c\u6d4b\u8bd5\n\n```bash\n# \u8fd0\u884c\u57fa\u672c\u529f\u80fd\u6d4b\u8bd5\npython -m pytest tests/\n\n# \u8fd0\u884c\u4ee3\u7801\u98ce\u683c\u68c0\u67e5\nflake8 src/\n\n# \u8fd0\u884c\u7c7b\u578b\u68c0\u67e5\nmypy src/\n```\n\n## \u8d21\u732e\n\n\u6b22\u8fce\u63d0\u4ea4Issue\u548cPull Request\u6765\u6539\u8fdb\u8fd9\u4e2a\u9879\u76ee\u3002\n\n## \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u91c7\u7528MIT\u8bb8\u53ef\u8bc1\u3002\u8be6\u89c1[LICENSE](LICENSE)\u6587\u4ef6\u3002\n\n## \u514d\u8d23\u58f0\u660e\n\n\u6b64\u5de5\u5177\u7528\u4e8e\u7cfb\u7edf\u7ba1\u7406\u76ee\u7684\u3002\u5728\u4f7f\u7528\u524d\u8bf7\u786e\u4fdd\uff1a\n\n1. \u7406\u89e3PAM\u914d\u7f6e\u7684\u5de5\u4f5c\u539f\u7406\n2. \u5728\u6d4b\u8bd5\u73af\u5883\u4e2d\u9a8c\u8bc1\u914d\u7f6e\u66f4\u6539\n3. \u5907\u4efd\u91cd\u8981\u7684\u7cfb\u7edf\u914d\u7f6e\u6587\u4ef6\n4. \u4e86\u89e3\u4fee\u6539PAM\u914d\u7f6e\u53ef\u80fd\u5e26\u6765\u7684\u5b89\u5168\u5f71\u54cd\n\n\u4f5c\u8005\u5bf9\u4f7f\u7528\u6b64\u5de5\u5177\u9020\u6210\u7684\u4efb\u4f55\u7cfb\u7edf\u95ee\u9898\u4e0d\u627f\u62c5\u8d23\u4efb\u3002\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A Python tool for managing SSH PAM configurations on Linux systems",
    "version": "1.0.0",
    "project_urls": {
        "Documentation": "https://gitee.com/liumou_site/ssh-pam-management#readme",
        "Homepage": "https://gitee.com/liumou_site/ssh-pam-management",
        "Issues": "https://gitee.com/liumou_site/ssh-pam-management/issues",
        "Repository": "https://gitee.com/liumou_site/ssh-pam-management"
    },
    "split_keywords": [
        "ssh",
        " pam",
        " linux",
        " authentication",
        " security"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "39639e2b96cd89b29366b1d88c8c274b1c25a6d86408b9d7e571f4260bee7321",
                "md5": "535b34c7e9cea38714d3bf325f8079fa",
                "sha256": "5756b62c5bf1c74172ca08ab143c751f5411babd20403d3d9dd15ebab84829c8"
            },
            "downloads": -1,
            "filename": "ssh_pam_manager-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "535b34c7e9cea38714d3bf325f8079fa",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 16898,
            "upload_time": "2025-10-23T01:51:38",
            "upload_time_iso_8601": "2025-10-23T01:51:38.537932Z",
            "url": "https://files.pythonhosted.org/packages/39/63/9e2b96cd89b29366b1d88c8c274b1c25a6d86408b9d7e571f4260bee7321/ssh_pam_manager-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a604309e170d6bf3efb5d9d21a56b4174bae304f5752bd0ec8001bba6c364a6c",
                "md5": "3e690d73b7880c9ff54837abf0c2214f",
                "sha256": "72b6617420f07c3a29458e3a56e854b6daa62de64fc188b4032c73c878b7743a"
            },
            "downloads": -1,
            "filename": "ssh_pam_manager-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "3e690d73b7880c9ff54837abf0c2214f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 16086,
            "upload_time": "2025-10-23T01:51:40",
            "upload_time_iso_8601": "2025-10-23T01:51:40.183020Z",
            "url": "https://files.pythonhosted.org/packages/a6/04/309e170d6bf3efb5d9d21a56b4174bae304f5752bd0ec8001bba6c364a6c/ssh_pam_manager-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-23 01:51:40",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "ssh-pam-manager"
}
        
Elapsed time: 2.30657s